7

私は一日中、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()
4

3 に答える 3

3

Phonon は、システム独自のメディア形式のサポートを使用して、さまざまなプラットフォームでさまざまなオーディオ ファイル形式をサポートしているため、システムが MP3 ファイルを再生するためのライブラリを提供していない可能性があります。確かに、MP3 は一部の Linux ディストリビューションではそのままではサポートされていません。Linux を使用している場合、MP3 サポートを有効にする方法については、次のページを参照してください。

http://doc.qt.io/qt-4.8/phonon-overview.html#linux

Phonon のメディア フォーマットの問題を診断する別の方法は、Qt で提供されている Capabilities サンプルを実行することです。

http://doc.qt.io/qt-4.8///qt-phonon-capabilities-example.html

これにより、システムでサポートされているメディア形式がわかります。

于 2009-07-12T15:03:54.177 に答える
1

delayedInitメソッドで; MediaObject次のように作成します。

def delayedInit(self):
    if not self.m_media:
       self.m_media = Phonon.createPlayer(Phonon.MusicCategory)
于 2010-04-01T20:30:20.143 に答える