gstreamer-java を使用して UDP マルチキャストによって送信される IP カメラからの MPEG-4 ビデオ ストリームを表示しようとしています。カメラから送信された各フレームは、いくつかの UDP パケットに分割されます。UDP パケットから完全なフレームを組み立てた後、バイト配列として表される I フレームと P フレームのシーケンスを取得します。これらの各フレームを、「decodebin」に接続されている「capsfilter」に接続されている「AppSrc」にプッシュします。問題は次のとおりです: gstffmpegdec.c:2259:gst_ffmpegdec_frame: ffdec_mpeg4: デコード エラー (len: -1、have_data: 0)。次のチェーンも試しました: apprc => capsfilter => mpeg4videoparse => decodebin => videosink. 結果は同じでした。この問題を回避するにはどうすればよいですか?
1 に答える
私は1つの方法を見つけたようで、今は安定性をテストしています。私は git (git clone git://anongit.freedesktop.org/gstreamer/gst-plugins-good) から gstreamer コア、「ベース」、「良い」、「悪い」パッケージをコンパイルしました。そして、「video/mpeg、mpegversion = 4」という大文字でバッファを処理できるようになった「xviddec」プラグインを適用しました。
したがって、パイプラインの説明は、「mpeg4videoparse name=parser ! xviddec ! ffmpegcolorspace ! capsfilter name=outfilter」であり、「gstreamer-java」ラッパーの AppSrc オブジェクトと VideoComponent オブジェクトに接続されています。
コンパイルした gstreamer バイナリへのパスを指定するには、次の JVM パラメータを渡します: "-Djna.library.path="path_to_my_home/bin/gstreamer/lib"。
「xviddec」のコンパイルには、パッケージ「libxvidcore-dev」をインストールする必要があることに注意してください。