情况:
我想使用板载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!队列 max-size-bytes = 10000000! matroskamux! filesink location = test.mkv --gst调试= 4
问题: Gstreamer挂起,没有输出。
- GST-调试= 4:
0:00:01.027331700 2422 0x17824f0 INFO GST_EVENT gstevent.c:709:gst_event_new_segment:创建段事件时间 segment start = 0:00:00.000000000,stop = 99:99:99.999999999, rate = 1.000000,applied_rate = 1.000000,flags = 0x00, 时间= 0:00:00.000000000,基数= 0:00:00.000000000,位置 0:00:00.000000000,持续时间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:event stream-start是 已收到
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:(NULL)
时有事件类型eos事件0:01:16.449986289 2232 0x1fa8f0 DEBUG视频编码器 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:0获取缓冲区0x21f938(0xb2068550)
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上创建高分辨率的时间间隔?
答案 0 :(得分:2)
很抱歉有关necro,但我认为这是尝试以更高的分辨率使用Raspberry Pi HW H264
编码器。它可以管理1080p30
,并且最大行长度为2048
像素,因此源图像太大。
您可以尝试MJPEG
,但没有相同的限制。
答案 1 :(得分:0)
我现在没有Pi进行测试,但我怀疑一个可能的问题是你在同一个过程中有两个OMX元素。 GStreamer只是包装OMX和IIRC,OMX API并不是真的希望你同时运行两件事,特别是在同一个过程中...
我尝试使用jpegdec而不是omxmjpegdec,并在这些行中添加更多管道:
gst-launch-1.0 multifilesrc location =" GOPR%04d.JPG" start-index = 4711 stop-index = 4750! image / jpeg,帧率= 1/5! jpegdec!视频转换! omxh264enc! h264parse! matroskamux! filesink location = test.mkv
我不认为在Pi上使用队列元素也有任何意义。