2011-12-14 25 views
3

PyQtアプリケーションでQuicktimeのようなプレーヤーでmovファイルを開きたいと思います。PyQtでmovファイルを再生する

私はフォノンモジュールを使用しようとしていますが、何とか私はそれを動作させることができません。

(Qtのデザイナーによって生成された)私のUIファイルでは、それは次のように初期化されます。

self.videoPlayer = phonon.Phonon.VideoPlayer(self.gridLayoutWidget) 
self.videoPlayer.setObjectName(_fromUtf8("videoPlayer")) 

そして、私のコードでは、私はこの試してみてください。私は「どこ

media_source = phonon.Phonon.MediaSource("path\\to\\my\\media.mov") 
self.ui.videoPlayer.load(media_source) 
self.ui.videoPlayer.play() 

誰かが私を指摘することができますが何か間違っているの?

答えて

4

投稿したコードに間違いはありません。システムに必要なコーデックがある場合、フォノンがクイックタイムファイルを再生できないようにする必要はありません。

以下は私のためにQuickTimeファイルを再生する簡単なフォノンデモです(LinuxではGStreamerバックエンドを使用しています)。このデモには、現在のフォノンバックエンドが処理できる使用可能なすべてのMIMEタイプもリストされています。私のシステムでは、MIMEタイプの "video/quicktime"がリストに表示されます。

コンソールで実行すると、フォノンのエラーメッセージも表示されます。

EDIT

Windows上で、フォノンは、バックエンドとしてWindows Media Playerを使用する、ことが表示されます。その場合は、QuickTimeファイルを再生できるように、WMP用の余分なコーデックをインストールする必要があります。

from PyQt4 import QtGui, QtCore 
from PyQt4.phonon import Phonon 

class Window(QtGui.QWidget): 
    def __init__(self): 
     QtGui.QWidget.__init__(self) 
     self.media = Phonon.MediaObject(self) 
     self.media.stateChanged.connect(self.handleStateChanged) 
     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.button = QtGui.QPushButton('Choose File', self) 
     self.button.clicked.connect(self.handleButton) 
     self.list = QtGui.QListWidget(self) 
     self.list.addItems(Phonon.BackendCapabilities.availableMimeTypes()) 
     layout = QtGui.QVBoxLayout(self) 
     layout.addWidget(self.video, 1) 
     layout.addWidget(self.button) 
     layout.addWidget(self.list) 

    def handleButton(self): 
     if self.media.state() == Phonon.PlayingState: 
      self.media.stop() 
     else: 
      path = QtGui.QFileDialog.getOpenFileName(self, self.button.text()) 
      if path: 
       self.media.setCurrentSource(Phonon.MediaSource(path)) 
       self.media.play() 

    def handleStateChanged(self, newstate, oldstate): 
     if newstate == Phonon.PlayingState: 
      self.button.setText('Stop') 
     elif (newstate != Phonon.LoadingState and 
       newstate != Phonon.BufferingState): 
      self.button.setText('Choose File') 
      if newstate == Phonon.ErrorState: 
       source = self.media.currentSource().fileName() 
       print ('ERROR: could not play:', source.toLocal8Bit().data()) 
       print (' %s' % self.media.errorString().toLocal8Bit().data()) 

if __name__ == '__main__': 

    import sys 
    app = QtGui.QApplication(sys.argv) 
    app.setApplicationName('Phonon Player') 
    window = Window() 
    window.show() 
    sys.exit(app.exec_()) 
+0

デモを実行しようとしました。リストにはクイックタイムファイルが含まれていますが、.movファイルを再生しようとすると、フォーマットがサポートされていないと表示されます。 – Johanna

+0

@Johanna。 _exact_エラーメッセージとは何ですか?他のアプリケーションでQuickTimeファイルを再生できますか?また、どのプラットフォームを使用していますか、どのバージョンのQtを使用していますか? – ekhumoro

+0

正確なエラーメッセージは、 "エラー:を再生できませんでした。ファイルを読み込むことができませんでした。フォーマットはサポートされていません"。私はquicktimeでファイルを読み込むことができます。そして私はWindows 7でPyQT4を使用しています。 – Johanna

関連する問題