3

私が今持っているコードでは、ファイルから .mp3 データを正常に再生できます。ただし、(ファイルからではなく) QtCore.QBuffer を使用して同じデータを再生する必要があります。ドキュメントの例を使用すると、予期しないタイプの QBuffer がエラーになります! しかし......ドキュメントによると、それはそれが見るべきものです。

しかし.......それはスローします:

TypeError: Phonon.MediaObject.setCurrentSource(Phonon.MediaSource): 引数 1 に予期しないタイプ 'QBuffer' があります

私が使用するコードは(1)です:

    someBuffer = QtCore.QBuffer()
    someBuffer.writeData(TrackData)
    mediaObject.setCurrentSource(someBuffer)

私も試しました(2):

    someBuffer = QtCore.QBuffer()
    mediaObject.setCurrentSource(someBuffer)
    someBuffer.writeData(TrackData)

(3):

    someBuffer = QtCore.QBuffer()
    someBuffer.writeData(TrackData)
    mediaObject.setCurrentSource(Phonon.MediaSource(someBuffer))

最後の例 (3) では、別の ERROR がスローされ、Gui が画面から消去されます ;-)

 
    ASSERT: ファイル /builddir/build/BUILD/phonon-4.5.1/phonon/streaminterface.cpp の「d->connected」、行 xxxx

注:
TrackData には mp3 データが含まれており、それをファイルに書き込み、それを mediaObject.setCurrentSource(Phonon.MediaSource()) のリソースとして使用すると、再生可能です。 " エラー。より正確に言うと、setCurrentSource にフィードするものはすべて受け入れられません。文字列を試しました (予期しないタイプのストリングでエラーが発生しました)、QBuffer を試しました (予期しないタイプの QBuffer でエラーが発生しました)、QByteArray を試しました (予期しないタイプの QByteArray でエラーが発生しました)。

ところで:LinuxでQt、PyQtを実行しています。

何か案は??

4

1 に答える 1

0

PyQt docsからsetCurrentSource、オブジェクトを期待しているように見えMediaSourceます。MediaSourceオブジェクトはオブジェクトで初期化できQIODeviceます。QBufferのサブクラスですQIODevice。おそらく、次のようにラップする必要がありQBufferますMediaSource

someBuffer = QtCore.QBuffer()
someBuffer.writeData(TrackData)
sourceWrapper = Phonon.MediaSource(someBuffer)
mediaObject.setCurrentSource(sourceWrapper)

ドキュメントは、これを行う必要はなく、MediaSourceオブジェクトを暗黙的に構築する必要があることを示唆しているようです。私は彼らが間違っているかもしれないと思う。簡単なテストを行ったところです。あなたが得たようなエラーが発生setCurrentSourceしました。QBufferただし、それを a でラップしてMediaSource呼び出すとsetCurrentSource、正常に機能しました。

于 2012-04-08T17:25:53.693 に答える