8

ビデオが H264 としてエンコードされ、オーディオが含まれていない受信 RTP ストリームを再生できる Qt ウィジェットを作成したいと考えています。

私の実装の基本計画は次のとおりです。

  • Phonon MediaSourceオブジェクト (ストリーム型) を作成します。
  • データを提供するQIODeviceサブクラスに接続します
  • 次のいずれかを使用してビデオ データを取得します。
    • JRTPLIBクライアントライブラリ
    • GStreamer gstrtpbinプラグイン。このプラグインは、パッケージのデペイロードとビデオのデコードを処理します。これにより、Phonon がデータを認識する可能性が向上する可能性があります。

私の環境:

  • Ubuntu 9.10
  • Qt 4.6

私の質問:

  • 私のアプローチは良いものですか?おそらく、より明白な、または単純な解決策を見落としているのでしょうか?
  • 現在、この問題が発生しています。ビデオ ストリームを再生しようとすると、MediaObject の状態が errorType FatalError の ErrorState に変わります。誰が私が間違っているのか教えてもらえますか?

編集私が見つけた1つの解決策は、このスレッド
で学んだQtと組み合わせてlibVLCを使用することです。興味のある方のためのコードサンプルを次に示します。私はまだフォノンベースのソリューションを探しています。 理想的には、SDP ファイルを提供するだけで作業が完了します。

4

2 に答える 2

3

libVLC ソリューションを使用して動作させることができました。これが最善の解決策であると保証することはできませんが、私は単にその面倒を見るのをやめただけです。

libVLC サンプルへのリンクは次のとおりです。

于 2010-07-28T19:30:51.323 に答える
2

少なくともWindowsでPhononが機能することを理解する方法は、QTがDirectShow(\ plugins\phonon_backend\phonon_ds94.dll)およびGStreamer用のフォノンバックエンドプラグインを提供することです。次に、RTP ストリームをソースとして受け入れることができる独自の DirectShow フィルターを取得または作成します。DirectShow がデコードを処理し、Phonon がレンダリングを処理します。

したがって、バックエンドが機能する場合、アプリケーション コードは次のように単純です。

        Phonon::MediaObject *media = new Phonon::MediaObject();
        Phonon::VideoWidget *video = new Phonon::VideoWidget();
        Phonon::createPath(media, video);
        media->setCurrentSource(source);
        media->play();

問題は、RTP をソースとして受け入れる GStreamer バックエンドにあるようです。そのソースをスタンドアロンの GStreamer で問題なく再生できますか?

于 2009-12-07T16:52:42.407 に答える