1

Live555 ライブラリを使用してライブ ストリームを画面に表示する例を教えていただければ幸いです。簡単そうに見えますが、「簡単だ」と読むだけでなく、実際にやってみると役に立ちます。gmaneサイトには次のように記載されています。

「ビデオ データをレンダリングするように「testRTSPClient」コードを更新 (のコピー) するのは非常に簡単です。「DummySink」クラスを変更し、レンダリングを行う (またはレンダリングを行うためにデコーダ ライブラリを呼び出す) だけです。 ). 特に、「afterGettingFrame()」関数の実装を変更します - 479 行目です。

(実際には、H.264 ビデオの場合、おそらく行う必要があることがもう 1 つあります。H.264 ストリームには、帯域外の構成情報 (SPS および PPS NAL ユニット) が含まれているため、この情報を取得するには、「MediaSubsession::fmtp_spropparametersets()」を呼び出します (ビデオ 'subsession' オブジェクトで)。これにより、(ASCII) 文字列が得られます。これを「parseSPropParameterSets()」に渡すことができます。 "、デコーダー用のバイナリ NAL ユニットを生成します。)"

PS: Visual Studio と Windows を使用しています

4

2 に答える 2

2

私は前の仕事で同じようなことをしました。秘訣は、レンダリングにDirectShowを使用することでした。基本的に、live555はそれ自体では何もデコードまたはレンダリングしません。ビデオサーフェスだけでなく、ある種のh264デコーダーが必要です。幸いなことに、DirectShowは両方を提供しますが、動作させるにはかなり多くのプログラミングが必要です。

live555はストリーミングのメカニズムのみを提供します。つまり、ネットワークまたはファイルソースからNALパケット(必要な場合はh264パケット)を取得して「DummySink」にプッシュしますが、デコード(NALユニットをビットマップに変換)する必要があります。レンダリング(ビットマップを画面に描画します)。これはlive555でできることではありませんが、ffmpegなどの他のライブラリでは可能ですが、うまく機能させることができなかったため、DirectShowソリューションに移行しました。つまり、「MS DTV-DVDデコーダー」は非常に便利で、使用していたチップセットが提供するハードウェアアクセラレーションを(自動的に)使用できました。live555のもう1つの便利な機能は、RTSPなどの制御プロトコルを処理してストリームのPLAY / STOP/PAUSE要求を処理することです。

編集:あなたがコードを探しているので、私はあなたのためにlive555を使用するオープンソースのDirectShowフィルターを見つけました。GraphStudioやGraphEditのようなものでそれを実行できるはずです。最終的には、c++でDirectShowグラフを作成する方法を学ぶことができます。たくさんの例がすでに存在するので、これは実際にはそれほど複雑ではありません。最も難しい部分はフィルターを作成することですが、デコーダーとレンダラーはすでに用意されており、ソースフィルターを提供しました。

于 2013-02-05T15:14:08.563 に答える