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  

我需要一种组合这两个命令的方法,以便可以实时保存视频。我似乎无法弄清楚这是如何完成的。

谢谢!

4

1 回答 1

1

我从您的第一行中删除了 multifilesink 元素,并将 avimux 和 filesink 添加到您的第二行(并为该论坛更好地格式化)以生成以下内容:

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 回答