2011-12-14 3 views
3

QuickQ와 같은 플레이어로 PyQt 애플리케이션에서 mov 파일을 열고 싶습니다.PyQt에서 mov 파일 재생

포논 모듈을 사용하려고하지만 어떻게 든 작동시키지 못합니다.

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

을 그리고 내 코드에서 나는이 시도 : (Qt는 디자이너에 의해 생성 된) 내 UI 파일에서

는이 같은 초기화

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

누군가가 나는 곳을 '저를 지적 할 수 뭔가 잘못하고 있는거야?

답변

4

내가 게시 한 코드에 분명히 잘못된 것이 보이지 않습니다. 시스템에서 필요한 코덱을 사용할 수 있다면 phonon이 퀵타임 파일을 재생할 수 없어야하는 이유는 없습니다.

다음은 나를 위해 퀵타임 파일을 재생하는 간단한 포논 데모입니다 (Linux에서는 GStreamer 백엔드 사용). 이 데모에는 현재 포논 백엔드가 처리 할 수있는 사용 가능한 모든 MIME 유형이 나열되어 있습니다. 내 시스템에서 마임 유형 "video/quicktime"이 목록에 표시됩니다.

콘솔에서 실행하면 모든 포논 오류 메시지가 인쇄됩니다.

편집

이 창에, 포논 백엔드로 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

데모를 실행하려고했습니다. 목록에서 QuickTime 파일을 지원하지만 .mov 파일을 재생하려고하면 형식이 지원되지 않는다고 표시됩니다. – Johanna

+0

@Johanna. _ 정확한 _ 오류 메시지가 무엇입니까? 다른 응용 프로그램과 함께 퀵타임 파일을 재생할 수 있습니까? 또한 : 어떤 플랫폼을 사용하고 있으며 어떤 Qt 버전을 사용하고 있습니까? – ekhumoro

+0

정확한 오류 메시지는 "오류 : 을 재생할 수 없습니다. 파일을 읽을 수 없습니다. 형식이 지원되지 않습니다"입니다. 나는 quicktime으로 파일들을 잘 읽을 수있다. 그리고 Windows 7에서 PyQT4를 사용하고 있습니다. – Johanna