1

以下は、ビデオを再生するために使用しているコードです

 QFile* file =new QFile(“C:\\Video\\test.avi”);
   media->setCurrentSource(Phonon::MediaSource(file));
   media->play();

このコードを使用すると、再生に失敗します。下部に再生バーが表示されますが、ビデオは開始されません。

コードを次のように変更すると、すべてが期待どおりに機能します

  media->setCurrentSource(Phonon::MediaSource(“C:\\Video\\test.avi”));
  media->play();

iodevice を使用する場合、追加の初期化手順が必要ですか? 最終的に、私のコードは、同様に機能しないカスタム iodevice を使用することになります。

4

3 に答える 3

1

これは古い投稿ですが、将来誰かに役立つ場合に備えて、混乱を解消したかったのです。

  1. QT では、Phonon::MediaSource() に QIODevice を渡すことができます。QIODevice の独自のサブクラスを作成して、ソリューションを正常に展開しました。

うまくいかなかった理由は、使用しているコーデックに QT の問題があったためです。QIO デバイスを使用すると、文字列を渡す場合と同じ形式のサポートが得られません。

このソリューションはWindowsでうまく機能しますが、注意すべきもう1つのことです。Mac で QIO デバイスを使用すると、ファイル全体が再生前にメモリにロードされます。私の場合、これは契約違反でした。最初にファイル全体を復号化してメモリにロードする場合、暗号化されたファイルを持っていても役に立ちません。

于 2014-10-16T21:35:39.300 に答える
-1

[Phonon Module docu][1] をよく見ると、MediaSourceで構築できないことがわかりますQFile*

ところで、あなたのコードにはフォノン パスが表示されません。少なくともオーディオ シンクを作成し、それをメディア オブジェクトに接続する必要があります。

Phonon::AudioOutput *audioOut = new PhononAudioOutpu(Phonon::MusicCategory);//or the      category you need
Phonon::createPath(mediaObject, audioOutput);
mediaObject->play();

QFileで正常に動作します

于 2012-02-01T15:32:10.357 に答える
-1

Phonon::MediaSourceドキュメントから:

警告: Windows では、avi、mp3、または mpg 形式を含む QIODevices のみがサポートされます。ファイルを開くには、ファイル名を受け取るコンストラクターを使用します (Qt バックエンドは内部で QFile を使用しません)。

最後の行があなたの質問に答えるべきだと思います。の代わりに、QFileを使用するか、次のようQStringに関数を呼び出すことができます。QFile::fileName

QFile* file =new QFile(“C:\\Video\\test.avi”);
media->setCurrentSource(Phonon::MediaSource(file->fileName()));
media->play();
于 2012-02-01T13:25:09.590 に答える