Gstreamer视频到pgm文件

时间:2015-12-21 13:48:56

标签: video gstreamer pgm timelapse

我尝试使用Gstreaamer从视频源以RAW格式(PGM)保存多个文件。通过gst-inspect工具阅读我使用的不同插件可用的不同源和接收器,我无法找到实现目标的正确方法。我使用mfw_v4lsrc作为源视频,使用ffenc_pgm进行编码,使用filesink保存文件。

这是我的命令行: gst-launch mfw_v4lsrc device = / dev / video0 name = source! video / x-raw-yuv,width = 250,height = 250! ffenc_pgm! filesink location = test.pgm

我仍然坚持无法将源链接到ffenc_pgm。

我能够获得现场直播并以jpeg保存。但是为了我的目标,我需要你的帮助。

由于

2 个答案:

答案 0 :(得分:0)

它可能是因为你的源元素不能产生ffenc_pgm期望的格式(似乎只想要灰度格式),或者因为你强加的250x250分辨率限制,你的源元素可能不是能够生产。

您可以尝试添加转换器以提供帮助:

gst-launch mfw_v4lsrc device=/dev/video0 name=source ! videoscale ! video/x-raw-yuv, width=250, height=250 ! ffmpegcolorspace ! ffenc_pgm ! filesink location=test.pgm

另外,如果你想要的是每个缓冲区一个文件,你可能想用multifilesink替换filesink,filesink会创建一个文件。我不知道pgm文件是如何工作的,所以我无法就此提出建议。

最后一个提示:请转到gstreamer 1.x系列,0.10已过时且未使用3年以上。

答案 1 :(得分:0)

确定,

使用这个:

  

gst-launch -v mfw_v4lsrc device = / dev / video0 num-buffers = 9! ffmpegcolorspace! video / x-raw-grey,width = 248,height = 248,format =(fourcc)I420! ffenc_pgm! multifilesink location =“frame%d.pgm”

我已经使用xnview验证了9个pgm文件。但是,这些文件使用灰度等于255进行编码,但我需要在1024(每像素2个字节)上进行编码,并使用P5幻数。我在ffmpegcolorspace或ffenc_pgm中找不到怎么做...