Gstreamer在从Raspberry pi上的JPEG生成timelapse时挂起

Gstreamer在从Raspberry pi上的JPEG生成timelapse时挂起,gstreamer,raspberry-pi,video-processing,openmax,Gstreamer,Raspberry Pi,Video Processing,Openmax,情况: 我想在我的Raspberry Pi 512mb上使用内置的H.264编码器生成一个timelapse 输入:+300个JPEG文件(2592 x 1944像素),例如: 输出:h264视频文件(2592 x 1944像素) GStreamer 1.0.8+omxencoder() Raspberry Pi版本:2013年6月17日20:45:38版本d380dde43fe729f043befb5cf775f99e54586cde(清洁)(发布) 内存:gpu内存512=400 Gstre

情况:

我想在我的Raspberry Pi 512mb上使用内置的H.264编码器生成一个timelapse

输入:+300个JPEG文件(2592 x 1944像素),例如:

输出:h264视频文件(2592 x 1944像素)

GStreamer 1.0.8+omxencoder()

Raspberry Pi版本:2013年6月17日20:45:38版本d380dde43fe729f043befb5cf775f99e54586cde(清洁)(发布)

内存:gpu内存512=400

Gstreamer管道:

sudo gst-launch-1.0-v multifilesrc location=GOPR%04d.JPG 开始索引=4711停止索引=4750 caps=“image/jpeg,帧速率=(分数)25/1”do timestamp=true! 天哪!视频速率!视频/x-raw,帧速率=1/5!视频转换! 天哪!“视频/x-h264,配置文件=高”!h264parse!队列 最大大小字节=10000000!马特罗斯卡莫!filesink location=test.mkv --gst调试=4

问题: Gstreamer挂起,不生成任何输出

--gst调试=4:

0:00:01.027331700 2422 0x17824f0信息GST\U事件 gstevent.c:709:gst\u事件\u新段:创建段事件时间 段开始=0:00:00.000000000,停止=99:99:99.99999999, 速率=1.000000,应用速率=1.000000,标志=0x00, 时间=0:00:00.000000000,基数=0:00:00.000000000,位置 0:00:00.000000000,持续时间99:99:99.99999999

0:00:29.346875982 2422 0x17824f0信息基础SRC gstbasesrc.c:2619:gst\u base\u src\u循环:在 gst\u base\u src\u get\u range()=eos

--gst调试=5:

0:01:16.089222125 2232 0x1fa8f0调试基准SRC gstbasesrc.c:2773:gst\u base\u src\u循环:暂停任务, 理性状态方程

0:01:16.095962979 2232 0x1fa8f0调试GST_焊盘 gstpad.c:5251:gst\u pad\u pause\u任务:暂停任务

0:01:16.107724723 2232 0x1fa8f0调试任务 gsttask.c:662:gst\u任务\u设置\u状态:正在更改任务 0x2180a8至状态2

0:01:16.435800597 2232 0x1fa8f0调试GST\U事件 gstevent.c:300:gst\u事件\u新建\u自定义:创建新事件0x129f80 eos 28174

0:01:16.436191588 2232 0x1fa8f0调试GST_焊盘 gstpad.c:4628:gst\U pad\U push\U事件:事件eos更新

0:01:16.436414584 2232 0x1fa8f0调试GST_焊盘 gstpad.c:3333:检查粘性:推动所有粘性 事件

0:01:16.436620579 2232 0x1fa8f0调试GST_焊盘 gstpad.c:3282:push_sticky:事件流启动失败 已收到

0:01:16.436816575 2232 0x1fa8f0调试GST_焊盘 gstpad.c:3282:push_sticky:event caps已被删除 收到

0:01:16.437001571 2232 0x1fa8f0调试GST_焊盘 gstpad.c:3282:push_sticky:event segment被删除 已收到

0:01:16.440457495 2232 0x1fa8f0调试GST\U事件 gstpad.c:4771:gst\u pad\u send\u event\u未选中: 在时间99:99:99.99999999时具有事件类型eos事件:(空)

0:01:16.449986289 2232 0x1fa8f0调试视频解码器 gstvideodecoder.c:1144:gst_视频_解码器_接收器_事件: 收到事件28174,eos

0:01:16.462165024 2232 0x1fa8f0调试omxvideodec gstomxvideodec.c:2489:gst\u omx\u视频\u dec\u排水管: 排水部件

0:01:16.463930986 2232 0x1fa8f0调试omx gstomx.c:1223:gst\u omx\u端口\u获取\u缓冲区: 从端口130获取视频解码缓冲区

0:01:16.465537951 2232 0x1fa8f0调试omx gstomx.c:1334:gst\u omx\u端口\u获取\u缓冲区: 视频解码端口130具有挂起缓冲区

0:01:16.466576928 2232 0x1fa8f0调试omx gstomx.c:1353:gst\u omx\u端口\u获取\u缓冲区: 从视频解码端口130获取的缓冲区0x21f938(0xb2068550):0

0:01:16.468237892 2232 0x1fa8f0调试omx gstomx.c:1375:gst\u omx\u端口\u释放\u缓冲区: 将缓冲区0x21f938(0xb2068550)释放到视频解码端口130

0:01:16.470360846 2232 0x1fa8f0调试omx gstomx.c:1420:gst\u omx\u端口\u释放\u缓冲区: 将缓冲区0x21f938释放到视频解码端口130:无(0x00000000)

0:01:16.472046809 2232 0x1fa8f0调试omxvideodec gstomxvideodec.c:2544:gst_omx_视频_dec_drain: 等待组件排空

完全控制台转储:

问题:

  • 我做错了什么

  • 是否有其他或更有效的方法从树莓圆周率的JPEG图像创建高分辨率的时间点


  • 我现在没有Pi可供测试,但我怀疑一个可能的问题是在同一个过程中有两个OMX元素。GStreamer只是包装OMX和IIRC OMX API并不希望您同时运行两件事,特别是在同一个进程中

    我会尝试使用jpegdec而不是omxmjpegdec,并使用以下管道:

    gst-launch-1.0 multifilesrc location=“GOPR%04d.JPG”开始索引=4711停止索引=4750!图像/jpeg,帧速率=1/5!jpegdec!视频转换!天哪!h264parse!马特罗斯卡莫!filesink location=test.mkv


    我也不认为在Pi上使用队列元素有任何意义。

    对于necro很抱歉,但我认为这是在尝试以比它所能达到的更高的分辨率使用
    Raspberry Pi HW H264
    编码器。它可以管理略多于1080p30的
    1080p30
    ,并且最大行长度为
    2048
    像素,因此您的源图像太大

    您可以尝试不具有相同限制的
    MJPEG