我絕對是一個pyside的新手,並且想用PySide.phonon來編寫一個mediaplayer。我的問題是:媒體播放器可以支持媒體格式,例如mp4,flv,mkv,例如?PySide.phonon和媒體格式如mp4,flv,mkv,例如
2
A
回答
2
回答此問題的最佳方法是嘗試播放您感興趣的文件類型,或查看受支持的mimetypes列表。
這裏有一個演示視頻播放器,應該讓你做到這一點:
from PySide import QtGui, QtCore
from PySide.phonon import Phonon
class Window(QtGui.QWidget):
def __init__(self):
QtGui.QWidget.__init__(self)
self.setWindowTitle('Video Player')
self.media = Phonon.MediaObject(self)
self.video = Phonon.VideoWidget(self)
self.video.setMinimumSize(400, 400)
self.audio = Phonon.AudioOutput(Phonon.VideoCategory, self)
Phonon.createPath(self.media, self.audio)
Phonon.createPath(self.media, self.video)
self.buttonChoose = QtGui.QPushButton('Choose File', self)
self.buttonMimes = QtGui.QPushButton('Show Mimetypes', self)
self.slider = Phonon.VolumeSlider(self)
self.slider.setAudioOutput(self.audio)
layout = QtGui.QGridLayout(self)
layout.addWidget(self.video, 0, 0, 1, 2)
layout.addWidget(self.buttonChoose, 1, 0)
layout.addWidget(self.buttonMimes, 1, 1)
layout.addWidget(self.slider, 2, 0, 1, 2)
layout.setRowStretch(0, 1)
self.media.stateChanged.connect(self.handleStateChanged)
self.buttonChoose.clicked.connect(self.handleButtonChoose)
self.buttonMimes.clicked.connect(self.handleButtonMimes)
def handleButtonChoose(self):
if self.media.state() == Phonon.PlayingState:
self.media.stop()
else:
dialog = QtGui.QFileDialog(self)
dialog.setFileMode(QtGui.QFileDialog.ExistingFile)
if dialog.exec_() == QtGui.QDialog.Accepted:
path = dialog.selectedFiles()[0]
self.media.setCurrentSource(Phonon.MediaSource(path))
self.media.play()
dialog.deleteLater()
def handleButtonMimes(self):
dialog = MimeDialog(self)
dialog.exec_()
def handleStateChanged(self, newstate, oldstate):
if newstate == Phonon.PlayingState:
self.buttonChoose.setText('Stop')
elif (newstate != Phonon.LoadingState and
newstate != Phonon.BufferingState):
self.buttonChoose.setText('Choose File')
if newstate == Phonon.ErrorState:
source = self.media.currentSource().fileName()
print ('ERROR: could not play: %s' % source)
print (' %s' % self.media.errorString())
class MimeDialog(QtGui.QDialog):
def __init__(self, parent):
QtGui.QDialog.__init__(self, parent)
self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
self.setWindowTitle('Mimetypes')
listbox = QtGui.QListWidget(self)
listbox.setSortingEnabled(True)
backend = Phonon.BackendCapabilities
listbox.addItems(backend.availableMimeTypes())
layout = QtGui.QVBoxLayout(self)
layout.addWidget(listbox)
self.resize(300, 500)
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
app.setApplicationName('Phonon Player')
window = Window()
window.show()
sys.exit(app.exec_())
1
聲子是一個包裝庫由KDE設計和採用的Qt upsteam。該庫的目的是增加多媒體應用程序的可移植性,以抽象出執行媒體播放的實際子系統的細節。在Windows上,DirectShow播放實際的文件;在OS X上,QuickTime。在Linux上,任何數量的媒體後端都可以播放該文件,並且每個都有自己的功能。使用VLC後端,你可以在所有平臺上玩太陽下的所有東西!
結果是,作爲應用程序開發人員,您不知道Phonon能夠在運行代碼的計算機上播放什麼格式。然而,Phonon提供了一些機制來找出後端正在被使用以及它的功能是什麼。一個很好的例子是this tutorial - 雖然用C++編寫。應該很容易理解並移植到python。
+0
如何使用VLC後端作爲Phonon的後端? – iMath
相關問題
- 1. ffmpeg將.avi,.mp4,.mp3,.flv,.mkv轉換爲mp4
- 2. 如何運行mkv,flv,avi格式的視頻文件?
- 3. 用於網絡視頻流傳輸的MKV,MP4或FLV
- 4. Hardsub上mkv或mp4?
- 5. 如何保護mp4和flv視頻
- 6. 如何在JAVA中播放flv,mp4,avi格式的視頻?
- 7. 無法使用codeigniter上傳3gp,flv或mkv視頻格式
- 8. Internet Explorer中的FLV和MP4
- 9. 流媒體和播放mp4視頻
- 10. 是MP4的流媒體協議或文件格式?
- 11. 用PHP流媒體的MP4
- 12. WPF媒體格式
- 13. FLV到MP4轉換
- 14. 使用FFMPEG MP4文件FLV轉換爲MP4格式之後具有0字節
- 15. 流錄音的音頻格式:FLV或MP4?
- 16. 如何使用JWPlayer播放其他格式(不是mp4或flv)視頻?
- 17. 如何使用FFMPEG將MP4視頻文件轉換爲FLV格式
- 18. Android的流媒體FLV視頻
- 19. 如何使用python腳本(在ubuntu中)獲取任何視頻文件(.avi .mp4 .flv .mkv等)的持續時間?
- 20. Android中的媒體格式?
- 21. SDP媒體字段格式
- 22. 從MP4/FLV中提取幀?
- 23. FFMPEG mp4,而不是FLV
- 24. 將JWPlayer 5轉換爲JWPlayer 6 flash(flv)和HTML(mp4)格式的視頻
- 25. 將mkv轉換爲mp4 vs ogv vs webm
- 26. 轉換多音軌+字幕.MKV到MP4
- 27. 如何使用Qt多媒體和C++保存的.mp4格式的視頻了OpenGL紋理
- 28. 流媒體視頻/ MP4與PHP
- 29. Red5流媒體問題與MP4
- 30. Drupal的MP4 iPad流媒體不工作
當我運行你的程序時,它肯定會生成一個窗口應用程序,但我猜它不能用來播放視頻。 – iMath
@ user1485853。再次測試一下,對於我使用PySide或PyQt4以及Linux和WinXP上的avi文件都可以正常工作。你嘗試播放哪些文件,以及看到哪些錯誤信息?另外,你在哪個平臺上? – ekhumoro