0

gstreamer を使用して、画像がキャプチャされているときにリアルタイムで画像をビデオ形式に保存しようとしています。画像を保存するコマンドがあります。この行は次のとおりです。

gst-launch -e v4l2src device=/dev/video0 ! 'image/jpeg,width=640,height=480,framerate=30/1' ! jpegdec ! timeoverlay halign=right valign=bottom ! clockoverlay halign=left valign=bottom time-format="%Y/%m/%d %H:%M:%S" ! tee name=t ! queue ! sdlvideosink t. ! queue ! videorate ! capsfilter caps="video/x-raw-yuv,framerate=1/1" ! ffmpegcolorspace ! jpegenc ! multifilesink location="./Desktop/frames/frame%06d.jpg"

このコマンドは、画像をフォルダーに保存します。それらの写真を撮ってビデオに保存する別のコマンドを書きました。このコマンドは次のとおりです。

gst-launch -e multifilesrc location=./Desktop/frames/frame%06d.jpg ! image/jpeg,framerate=30/1 ! decodebin ! videoscale ! video/x-raw-yuv ! progressreport name=progress ! avimux ! filesink location=test.avi  

ビデオをリアルタイムで保存できるように、これら 2 つのコマンドを組み合わせる方法が必要です。これがどのように行われるのか理解できないようです。

ありがとう!

4

1 に答える 1

1

最初の行から multifilesink 要素を削除し、avimux と filesink を 2 行目に追加して (このフォーラム用に適切にフォーマットして)、これを作成しました。

gst-launch -e v4l2src device=/dev/video0 ! \
'image/jpeg,width=640,height=480,framerate=30/1' ! \
jpegdec ! timeoverlay halign=right valign=bottom ! \
clockoverlay halign=left valign=bottom time-format="%Y/%m/%d %H:%M:%S" ! \
tee name=t ! \
queue ! \
sdlvideosink t. ! \
queue ! \
videorate ! \
capsfilter caps="video/x-raw-yuv,framerate=1/1" ! \
ffmpegcolorspace ! \
jpegenc ! \
avimux ! \
filesink location=test.avi

それが機能するかどうかは不明であり、progressreport コンポーネントも破棄します (どのように機能するかは不明です)。コマンド ラインが失敗した場合は、gst-launch コンソール エラー メッセージを投稿してください。

于 2012-06-09T01:32:13.127 に答える