我正在尝试使用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
我需要一种方法来组合这两个命令,以便可以实时保存视频。我似乎无法弄清楚这是如何完成的。
谢谢!
答案 0 :(得分: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 console错误消息。