0

ビデオとオーディオを v4l2 ソースから flv 形式に記録する C プログラムがあります。このプログラムは、新しいバージョンの ubuntu では動作しないことに気付きました。gst-launch で問題のあるパイプラインを実行して、問題を再現する最も単純なパイプラインを見つけようとしました。ビデオ側に焦点を当てるだけで、以下に表示されるものに縮小しました.

だから私は働いていたgstreamerパイプラインを持っています:

gst-launch v4l2src ! tee name="vtee" ! queue ! videorate ! ffmpegcolorspace ! ffdeinterlace ! x264enc ! flvmux name="mux" ! filesink location=vid.flv vtee. ! queue ! xvimagesink

xvimagesink の前に一連のキューを次々に追加してこれを行う場合にのみ機能します。これは機能しますが、パイプラインが機能し始める前に 2 秒の遅延が発生し、次のメッセージも表示されます。

gst-launch v4l2src ! tee name="vtee" ! queue ! videorate ! ffmpegcolorspace ! ffdeinterlace ! x264enc ! flvmux name="mux" ! filesink location=vid.flv vtee. ! queue ! queue ! queue ! queue ! queue ! xvimagesink

上記の 2 番目のパイプラインは機能しますが、パイプラインが実行を開始する前に一時停止があり、メッセージが表示されます (このシステムは 2 遅いとは思いません。大量の RAM を搭載したコア i7 です)。

Additional debug info:
gstbasesink.c(2692): gst_base_sink_is_too_late (): /GstPipeline:pipeline0/GstXvImageSink:xvimagesink0:
There may be a timestamping problem, or this computer is too slow.

ここで何が起こっているのか説明できる人はいますか? 私は何を間違っていますか?

4

2 に答える 2

1

最初のパイプラインが機能しなくなったと主張していますが、何が起こったのか説明していません。他に何かが変更されたため、動作が停止します: - GStreamer とサブモジュールのバージョン? - OS のバージョン ? - カメラのバージョン ?

一連のキューを連続して追加する必要はありません。実際には、スレッド境界を作成し、スレッド間で前後の部分を分離します。これにより、目に見える遅延が追加され、レイテンシと同期に影響します。

于 2010-11-10T12:34:20.253 に答える
0

古いメッセージですが、問題はまだ修正されていません。9.10との間のどこか11.10(気付く前にいくつかアップグレードしました)。私はそれを避けて回避し、代わりにx264enc使用しました。ffenc_mpeg4

Gstreamerのチートシートからこのメモに気づきました:

注:に置き換えることはできますが、キュー[19]要素をリークの前に作成theoraenc+oggmuxしない限り、パイプラインはフリーズします。x264enc+someothermuxerxvimagesink"queue leaky=1"

これは私にはうまくいかないので、私は固執しffenc_mpeg4ます。

于 2011-12-23T09:14:03.060 に答える