私はこの問題を調査してきましたが、ほとんど行き詰まっています。Python、pyqt、および pywebkit を使用してカスタム音楽プレーヤーを作成しています。.mp3 ファイルや .wav ファイルは問題なく再生できますが、ogg ファイルには到達しません。
サンプルコード
#!/usr/bin/env python
import sys,gtk,webkit,os,json,re,base64,urllib2,sqlite3,math,time,Queue,mimetypes,subprocess
from PyQt4 import QtGui, QtCore, QtWebKit, QtNetwork
from PyQt4.QtCore import QUrl
class NetworkAccessManager(QtNetwork.QNetworkAccessManager):
def __init__(self, parent):
QtNetwork.QNetworkAccessManager.__init__(self, parent)
def createRequest(self,operation,request,outgoingData):
url = unicode(request.url().toString())
if url.startswith('http://mycustomprotocol') :
localFile = url[24:];
print localFile
request.setUrl(QUrl.fromLocalFile(localFile))
reply = QtNetwork.QNetworkAccessManager.createRequest(self,operation,request,outgoingData)
self.emit(QtCore.SIGNAL('networkRequestCreated(QNetworkReply*)'),reply)
print 'createRequest',url,operation
#self.connect(reply, QtCore.SIGNAL('downloadProgress(qint64, qint64)'), self.foo)
return reply
def foo(self, *args):
print args
class Browser(QtGui.QMainWindow):
# Ventana del programa
def __init__(self):
super(Browser,self).__init__(None)
self.tabWidget = QtGui.QTabWidget(self)
self.setCentralWidget(self.tabWidget)
self.webview = QtWebKit.QWebView()
self.n = NetworkAccessManager(self);
self.webview.page().setNetworkAccessManager(self.n)
self.tabWidget.setCurrentIndex(self.tabWidget.addTab(self.webview,'loading...'))
#self.webview.setUrl(QUrl.fromLocalFile("index.html"))
self.webview.setUrl(QUrl.fromLocalFile("/home/marcos/Descargas/examp/index.html"))
def main():
app = QtGui.QApplication(sys.argv)
browser = Browser()
browser.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
index.html
<html>
<body>
<div><audio src='http://mycustomprotocol/1.mp3' controls=true/></div>
asd
<div><audio src='http://mycustomprotocol/1.ogg' controls=true/></div>
asd
<div><audio src='http://mycustomprotocol/1.wav' controls=true/></div>
</body>
</html>
フォルダーにさまざまな種類のオーディオ ファイルを入力するだけで済みます (読み込み中の webview URL の index.html パスは絶対パスであり、例を相対パスで動作させることができないことに注意してください)。テストするリソース:
http://en.wikipedia.org/wiki/File:Example.ogg
http://audio.online-convert.com/convert-to-wav
Google「ファイルタイプ:mp3」を見つける
オーディオ mp3 と wav は問題なく再生されますが、ogg ファイルは奇妙に再生されません。webview を URL http://en.wikipedia.org/wiki/File:Example.oggに指定すると、その ogg ファイルを再生できます。ページ html5test は、webview が vorvis オーディオをサポートしていると述べています。しかし、NetworkAccessManager を介して再生できません。少し迷っています。ヒントを教えてください。