MeP*_*oan 5 video-processing gstreamer raspberry-pi openmax
情况:
我想使用板载H.264编码器在我的Raspberry Pi 512mb上生成一个游戏中时光倒流.
输入:+300 JPEG文件(2592 x 1944像素),例如:http://i.imgur.com/czohiki.jpg
输出:h264视频文件(2592 x 1944像素)
GStreamer 1.0.8 + omxencoder(http://pastebin.com/u8T7mE18)
Raspberry Pi版本:2013年6月17日20:45:38版本d380dde43fe729f043befb5cf775f99e54586cde(干净)(发布)
内存:gpu_mem_512 = 400
Gstreamer管道:
sudo gst-launch-1.0 -v multifilesrc location = GOPR%04d.JPG start-index = 4711 stop-index = 4750 caps ="image/jpeg,framerate =(fraction)25/1"do-timestamp = true!omxmjpegdec!视频!video/x-raw,帧率= 1/5!视频转换!omxh264enc!"video/x-h264,profile = high"!h264parse!queue max-size-bytes = 10000000!matroskamux!filesink location = test.mkv --gst-debug = 4
问题: Gstreamer挂起,没有输出.
--gst调试= 4:
0:00:01.027331700 2422 0x17824f0 INFO GST_EVENT gstevent.c:709:gst_event_new_segment:创建段事件时间段start = 0:00:00.000000000,stop = 99:99:99.999999999,rate = 1.000000,applied_rate = 1.000000,flags = 0x00, time = 0:00:00.000000000,base = 0:00:00.000000000,position 0:00:00.000000000,duration 99:99:99.999999999
0:00:29.346875982 2422 0x17824f0 INFO basesrc gstbasesrc.c:2619:gst_base_src_loop:暂停后gst_base_src_get_range()= eos
--gst调试= 5:
0:01:16.089222125 2232 0x1fa8f0 DEBUG basesrc gstbasesrc.c:2773:gst_base_src_loop:暂停任务,原因为eos
0:01:16.095962979 2232 0x1fa8f0 DEBUG GST_PADS gstpad.c:5251:gst_pad_pause_task:暂停任务
0:01:16.107724723 2232 0x1fa8f0 DEBUG任务gsttask.c:662:gst_task_set_state:将任务0x2180a8更改为状态2
0:01:16.435800597 2232 0x1fa8f0 DEBUG GST_EVENT gstevent.c:300:gst_event_new_custom:创建新事件0x129f80 eos 28174
0:01:16.436191588 2232 0x1fa8f0 DEBUG GST_PADS gstpad.c:4628:gst_pad_push_event:event eos updated
0:01:16.436414584 2232 0x1fa8f0 DEBUG GST_PADS gstpad.c:3333:check_sticky:推送所有粘性事件
0:01:16.436620579 2232 0x1fa8f0 DEBUG GST_PADS gstpad.c:3282:push_sticky:事件流启动已经收到
0:01:16.436816575 2232 0x1fa8f0 DEBUG GST_PADS gstpad.c:3282:push_sticky:已收到事件上限
0:01:16.437001571 2232 0x1fa8f0 DEBUG GST_PADS gstpad.c:3282:push_sticky:已收到事件段
0:01:16.440457495 2232 0x1fa8f0 DEBUG GST_EVENT gstpad.c:4771:gst_pad_send_event_unchecked:在时间99:99:99.999999999处有事件类型eos事件:(NULL)
0:01:16.449986289 2232 0x1fa8f0 DEBUG videodecoder gstvideodecoder.c:1144:gst_video_decoder_sink_event:收到事件28174,eos
0:01:16.462165024 2232 0x1fa8f0 DEBUG omxvideodec gstomxvideodec.c:2489:gst_omx_video_dec_drain:排水组件
0:01:16.463930986 2232 0x1fa8f0 DEBUG omx gstomx.c:1223:gst_omx_port_acquire_buffer:从端口130获取video_decode缓冲区
0:01:16.465537951 2232 0x1fa8f0 DEBUG omx gstomx.c:1334:gst_omx_port_acquire_buffer:video_decode端口130有挂起的缓冲区
0:01:16.466576928 2232 0x1fa8f0 DEBUG omx gstomx.c:1353:gst_omx_port_acquire_buffer:从video_decode端口130获取缓冲区0x21f938(0xb2068550):0
0:01:16.468237892 2232 0x1fa8f0 DEBUG omx gstomx.c:1375:gst_omx_port_release_buffer:将缓冲区0x21f938(0xb2068550)释放到video_decode端口130
0:01:16.470360846 2232 0x1fa8f0 DEBUG omx gstomx.c:1420:gst_omx_port_release_buffer:释放缓冲区0x21f938到video_decode端口130:无(0x00000000)
0:01:16.472046809 2232 0x1fa8f0 DEBUG omxvideodec gstomxvideodec.c:2544:gst_omx_video_dec_drain:等待组件耗尽
完整的控制台转储:https://mega.co.nz/#! eI1ASBSY!R4mnuGqRH7M8dT4q6j03mBKsQ1A-7oCXU4stu50LnOw
题:
我究竟做错了什么?
是否有另一种或更有效的方法可以从覆盆子pi上的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 !视频转换!omxh264enc !h264解析!马特罗斯卡穆克斯!文件接收器位置=test.mkv
我认为在 Pi 上使用队列元素也没有任何意义。
| 归档时间: |
|
| 查看次数: |
1352 次 |
| 最近记录: |