2009-12-05 25 views
8

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

私の基本的な計画はこれです:

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

私の環境:

  • のUbuntu 9.10
  • のQt 4.6

私の質問:

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

編集
一つの解決策は、私がこのthreadで学びましたQtの、との組み合わせでlibVLCを使用しています。興味があるのはcode sampleです。 私はまだPhononベースのソリューションを探しています。
理想的には、私はSDPファイルを提供する必要があり、ジョブは完了です。

答えて

3

私はlibVLCソリューションを使用して動作させることができました。私はそれがちょうどそれを見終わっていないので、これが最高のの解決であると私はガートリンスできません。

ここにはlink to the libVLC sampleがあります。

+0

このファイルをダウンロードしたようです。コードをもう一度投稿する可能性がありますか、それとも時間が掛かっていませんか? – Narcolei

+1

私にお知らせいただきありがとうございます。 URLを修正しました。 – StackedCrooked

+0

@Stackedファイルを使用してIPカムからストリームを取得するにはどうにかなりますか? –

2

Phononが少なくともWindowsで動作することは、QTがDirectShow(\ plugins \ phonon_backend \ phonon_ds94.dll)とGStreamerのためのphononバックエンドプラグインを提供することです。次に、ソースとして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でそのソースを問題なく再生できますか?

+0

私はそれがまだ動作するように管理していません。ローカルファイルを再生すると動作しますが、RTPストリーム(RTPパケットを読み取るMediaSource(QIODevice)オブジェクトを介して)をロードしようとすると、VideoPlayerはLoadStateにとどまります。 私はGStreamerのgstrtpbinプラグインを使用して着信RTPデータを読み込み、ビデオストリームをデコードして何らかの形でそれをQtウィジェットに接続する別のアプローチを試しています。 – StackedCrooked

関連する問題