Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法使用自定义NetworkAccessManager将ogg本地文件流式传输到webview_Python_Pyqt_Pyqt4_Qtwebkit_Qtnetwork - Fatal编程技术网

Python 无法使用自定义NetworkAccessManager将ogg本地文件流式传输到webview

Python 无法使用自定义NetworkAccessManager将ogg本地文件流式传输到webview,python,pyqt,pyqt4,qtwebkit,qtnetwork,Python,Pyqt,Pyqt4,Qtwebkit,Qtnetwork,我一直在研究这个问题,但我大部分时间都很无聊,我正在使用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, Q

我一直在研究这个问题,但我大部分时间都很无聊,我正在使用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://audio.online-convert.com/convert-to-wav

查找谷歌文件类型:mp3

您将看到音频mp3播放得很好,wav也很好,但奇怪的是ogg文件无法播放。如果您将webview指向URL,您将能够播放该ogg文件,并且页面html5test表示webview具有vorvis音频支持。但是再次无法通过NetworkAccessManager玩,我有点迷路了,请给我一些提示