ビデオとオーディオを 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.
ここで何が起こっているのか説明できる人はいますか? 私は何を間違っていますか?