2017-02-11 5 views
0

나는 나무 딸기 파이가 있습니다. phonon + qt + python을 사용하여 모든 유형의 비디오를 표시하고 싶습니다. 나는 QT에서 C++을 사용하고 싶지 않다. 나는 다음과 같은 코드를 사용하려고했지만, 다음과 같은 에러를 내고있다 : phonon이라는 모듈이 없다. 나는 이미 phonon을 sudo apt-install phonon을 사용하여 설치한다. 그러나 여전히 그런 오류를 준다. 어느 쪽이든 그것을 해결하는 방법을 알고 있거나 파이썬 + qt를 사용하여 비디오를 표시하는 다른 방법이 있습니까? 아니면 phonon을 설치하는 다른 방법이 있습니까?라즈베리 파이에 phonon + python + qt를 사용하여 비디오를 표시하는 방법

from PyQt4 import QtGui, QtCore 
import PyQt4.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_()) 

답변

1

다음 명령을 PyQt는 대한 포논을 설치해야합니다

당신이 코드의 특정 수입 및 일부 수정해야합니다 또한
sudo apt-get install python-qt4-phonon 

:

from PyQt4 import QtGui 
from PyQt4.phonon import Phonon 


class Window(QtGui.QWidget): 
    def __init__(self, parent=None): 
     super(Window, self).__init__(parent=parent) 
     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.button = QtGui.QPushButton('Choose File', self) 

     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) 

     self.media.stateChanged.connect(self.handleStateChanged) 
     self.button.clicked.connect(self.handleButton) 

    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_()) 

스크린 샷 :

enter image description here

+0

작동하는 swf 파일이 있습니까? plz 첨부하십시오. 왜냐하면 나는이 예제를 시도하고 그것을 실행하지만 빈 검은 화면이 표시됩니다. 그래서 내 swf 파일에 문제가 있는지 확인하고 싶습니다. 또는이 스크립트가 실행 중일 때 문제가 발생했습니다. –