私は一日中、Qt の Phonon ライブラリを Python で理解しようとしていました。
私の長期的な目標は、mms:// ストリームを再生できるかどうかを確認することですが、これの実装がどこにもないため、その部分を自分で見つけます。(大したことではないにしても、誰かがこれについて具体的に知っていれば、私はそれをそこに出すだろうと考えました。)
とにかく、オンラインで見つけた実際の例から逆算して作業することにしました。これにより、ファイル ブラウザが起動し、指定された mp3 ファイルが再生されます。私は、ファイル ブラウザーの機能を取り除いて、スクリプトを実行し、パスがハードコーディングされた Mp3 ファイルを再生するという本質的な部分にまで落とし込みたいと考えていました。
私の問題は、 setCurrentSource() の誤解とデータ型の指定であると想定しています。(参照: http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/phonon-mediasource.html#fileName )
フォノンを理解するための助けがあれば大歓迎なので、私は質問を幅広くしています。
import sys
from PyQt4.QtGui import QApplication, QMainWindow, QDirModel, QColumnView
from PyQt4.QtGui import QFrame
from PyQt4.QtCore import SIGNAL
from PyQt4.phonon import Phonon
class MainWindow(QMainWindow):
m_model = QDirModel()
def __init__(self):
QMainWindow.__init__(self)
self.m_fileView = QColumnView(self)
self.m_media = None
self.setCentralWidget(self.m_fileView)
self.m_fileView.setModel(self.m_model)
self.m_fileView.setFrameStyle(QFrame.NoFrame)
self.connect(self.m_fileView,
SIGNAL("updatePreviewWidget(const QModelIndex &)"), self.play)
def play(self, index):
self.delayedInit()
self.m_media.setCurrentSource(
Phonon.MediaSource(self.m_model.filePath(index)))
self.m_media.play()
def delayedInit(self):
if not self.m_media:
self.m_media = Phonon.MediaObject(self)
audioOutput = Phonon.AudioOutput(Phonon.MusicCategory, self)
Phonon.createPath(self.m_media, audioOutput)
def main():
app = QApplication(sys.argv)
QApplication.setApplicationName("Phonon Tutorial 2 (Python)")
mw = MainWindow()
mw.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()