3

filesink を使用して raw ビデオ ファイルを作成しました。次のコマンドを使用して、vlc でファイルを再生できます。

 vlc --demux rawvideo --rawvid-fps 24 --rawvid-width 1920 --rawvid-height 816 --rawvid-chroma I420 /home/user/Videos/out.yuv

しかし、

 gst-launch-1.0 filesrc location=/home/user/Videos/out.yuv ! video/x-raw,format=I420,height=816,width=1920,framerate=24 ! autovideoconvert ! autovideosink

エラーをスローします

Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
ERROR: from element /GstPipeline:pipeline0/GstCapsFilter:capsfilter0: Filter caps do not completely specify the output format
Additional debug info:
gstcapsfilter.c(348): gst_capsfilter_prepare_buf (): /GstPipeline:pipeline0/GstCapsFilter:capsfilter0:
Output caps are unfixed: EMPTY
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ...

このエラーを解決する方法はありますか?

4

1 に答える 1

8

2つの問題があります。まず、フレームレートは分数であると予想されるため、24 ではなく 24/1 を使用する必要があります。

2 つ目の問題は、filesrc がフレームの予想サイズではないファイルのチャンクを読み取るため、フレームが gstreamer バッファーと整列されないことです。filesrc の blocksize プロパティを使用してフレームの正しいバイト サイズ (幅 * 高さ * ピクセルあたりのバイト数) を渡すか、単に videoparse 要素を使用することができます。

 gst-launch-1.0 filesrc location=/home/user/Videos/out.yuv ! videoparse width=1920 height=816 framerate=24/1 format=2 ! autovideoconvert ! autovideosink

「gst-inspect-1.0 videoparse」をチェックして、利用可能なプロパティを確認してください

于 2014-12-11T20:24:50.783 に答える