大家好:
DM3730 dvsdk_dm3730-evm_4_02_00_06 EVMMAIN REV G
我现在想用TI-gst-plugin中的TIViddec2插件同时解两路(h264+h264 或 h264+mpeg4)码流,出错。若只是解一路码流(h264或mpeg4),则正常。
TI gstreamer插件支持同时解多路码流吗? 有没有人实现过同时解两路码流? 若同时解多路码流,在构建pipeline上需要注意什么? 谢谢!
pipeline:
gst-launch -e -v filesrc location=/usr/share/ti/data/videos/test_480p30.264 ! typefind ! h264parse ! queue
! TIViddec2 padAllocOutbufs=TRUE ! queue ! videomixer name=mix ! queue ! tidisplaysink2 filesrc location=/usr/share/ti/data/vi
deos/davincieffect.mpeg4 ! typefind ! mpeg4videoparse ! queue ! TIViddec2 padAllocOutbufs=TRUE !queue ! mix.
0:00:00.062872127 1729 0x15088 LOG TIViddec2 gsttividdec2.c:246:gst_tividdec2_get_type: initialized get_type
0:00:00.066045995 1729 0x15088 LOG TIViddec2 gsttividdec2.c:360:gst_tividdec2_init_env: gst_tividdec2_init_env – begin
0:00:00.066290139 1729 0x15088 LOG TIViddec2 gsttividdec2.c:423:gst_tividdec2_init_env: gst_tividdec2_init_env – end
0:00:00.066595318 1729 0x15088 LOG TIViddec2 gsttividdec2.c:541:gst_tividdec2_set_property: begin set_property
0:00:00.066747908 1729 0x15088 LOG TIViddec2 gsttividdec2.c:593:gst_tividdec2_set_property: setting "padAllocOutbufs" to "TRUE"
0:00:00.066869980 1729 0x15088 LOG TIViddec2 gsttividdec2.c:600:gst_tividdec2_set_property: end set_property
0:00:00.081701209 1729 0x15088 LOG TIViddec2 gsttividdec2.c:360:gst_tividdec2_init_env: gst_tividdec2_init_env – begin
0:00:00.081975857 1729 0x15088 LOG TIViddec2 gsttividdec2.c:423:gst_tividdec2_init_env: gst_tividdec2_init_env – end
0:00:00.082219989 1729 0x15088 LOG TIViddec2 gsttividdec2.c:541:gst_tividdec2_set_property: begin set_property
0:00:00.082372571 1729 0x15088 LOG TIViddec2 gsttividdec2.c:593:gst_tividdec2_set_property: setting "padAllocOutbufs" to "TRUE"
0:00:00.082494637 1729 0x15088 LOG TIViddec2 gsttividdec2.c:600:gst_tividdec2_set_property: end set_property
Setting pipeline to PAUSED …
0:00:00.120091777 1729 0x15088 LOG TIViddec2 gsttividdec2.c:1252:gst_tividdec2_change_state: begin change_state (10)
0:00:00.120305405 1729 0x15088 LOG TIViddec2 gsttividdec2.c:1289:gst_tividdec2_change_state: end change_state
0:00:00.120519032 1729 0x15088 LOG TIViddec2 gsttividdec2.c:1252:gst_tividdec2_change_state: begin change_state (10)
0:00:00.120671623 1729 0x15088 LOG TIViddec2 gsttividdec2.c:1289:gst_tividdec2_change_state: end change_state
0:00:00.123235153 1729 0x15088 LOG TIViddec2 gsttividdec2.c:1252:gst_tividdec2_change_state: begin change_state (19)
0:00:00.123479299 1729 0x15088 LOG TIViddec2 gsttividdec2.c:1289:gst_tividdec2_change_state: end change_state
0:00:00.124242249 1729 0x15088 LOG TIViddec2 gsttividdec2.c:1252:gst_tividdec2_change_state: begin change_state (19)
0:00:00.124455875 1729 0x15088 LOG TIViddec2 gsttividdec2.c:1289:gst_tividdec2_change_state: end change_state
/GstPipeline:pipeline0/GstTypeFindElement:typefindelement0.GstPad:src: caps = video/x-h264
/GstPipeline:pipeline0/GstTypeFindElement:typefindelement1.GstPad:src: caps = video/mpeg, systemstream=(boolean)false, mpegversion=(int)4, parsed=(boolean)false
Pipeline is PREROLLING …
0:00:00.179326474 1729 0x78470 DEBUG TIViddec2 gsttividdec2.c:869:gst_tividdec2_sink_event: pad "sink" received: newsegment
/GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:sink: caps = video/x-h264
/GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:src: caps = video/x-h264, stream-format=(string)byte-stream, alignment=(string)nal, width=(int)720, height=(int)480
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = video/x-h264, stream-format=(string)byte-stream, alignment=(string)nal, width=(int)720, height=(int)480
0:00:00.181676330 1729 0xa57d0 DEBUG TIViddec2 gsttividdec2.c:869:gst_tividdec2_sink_event: pad "sink" received: newsegment
/GstPipeline:pipeline0/GstMpeg4VParse:mpeg4vparse0.GstPad:src: caps = video/mpeg, mpegversion=(int)4, systemstream=(boolean)false, parsed=(boolean)true
/GstPipeline:pipeline0/GstMpeg4VParse:mpeg4vparse0.GstPad:sink: caps = video/mpeg, systemstream=(boolean)false, mpegversion=(int)4, parsed=(boolean)false
/GstPipeline:pipeline0/GstMpeg4VParse:mpeg4vparse0.GstPad:src: caps = video/mpeg, mpegversion=(int)4, systemstream=(boolean)false, parsed=(boolean)true, profile-level-id=(string)241, codec_data=(buffer)000001b0f1000001b5a913000001000000012008d48d0800f528045a14103f000001b24c61766335322e37342e31, pixel-aspect-ratio=(fraction)1/1, width=(int)1280, height=(int)720
/GstPipeline:pipeline0/GstQueue:queue3.GstPad:sink: caps = video/mpeg, mpegversion=(int)4, systemstream=(boolean)false, parsed=(boolean)true, profile-level-id=(string)241, codec_data=(buffer)000001b0f1000001b5a913000001000000012008d48d0800f528045a14103f000001b24c61766335322e37342e31, pixel-aspect-ratio=(fraction)1/1, width=(int)1280, height=(int)720
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:src: caps = video/x-h264, stream-format=(string)byte-stream, alignment=(string)nal, width=(int)720, height=(int)480
0:00:00.185155339 1729 0x78470 INFO TIViddec2 gsttividdec2.c:663:gst_tividdec2_set_sink_caps: requested sink caps: video/x-h264, stream-format=(string)byte-stream, alignment=(string)nal, width=(int)720, height=(int)480
0:00:00.185368962 1729 0x78470 LOG TIViddec2 gsttividdec2.c:1176:gst_tividdec2_exit_video: begin exit_video
0:00:00.185521550 1729 0x78470 LOG TIViddec2 gsttividdec2.c:1233:gst_tividdec2_exit_video: end exit_video
0:00:00.185643621 1729 0x78470 LOG TIViddec2 gsttividdec2.c:767:gst_tividdec2_set_sink_caps: sink caps negotiation successful
/GstPipeline:pipeline0/GstTIViddec2:tividdec20.GstPad:sink: caps = video/x-h264, stream-format=(string)byte-stream, alignment=(string)nal, width=(int)720, height=(int)480
0:00:00.186559150 1729 0x78470 LOG TIViddec2 gsttividdec2.c:1066:gst_tividdec2_init_video: begin init_video
0:00:00.187261056 1729 0x3e8d0 LOG TIViddec2 gsttividdec2.c:1577:gst_tividdec2_decode_thread: init video decode_thread
0:00:00.187505197 1729 0x3e8d0 LOG TIViddec2 gsttividdec2.c:1348:gst_tividdec2_codec_start: opening codec engine "codecServer"
/GstPipeline:pipeline0/GstQueue:queue3.GstPad:src: caps = video/mpeg, mpegversion=(int)4, systemstream=(boolean)false, parsed=(boolean)true, profile-level-id=(string)241, codec_data=(buffer)000001b0f1000001b5a913000001000000012008d48d0800f528045a14103f000001b24c61766335322e37342e31, pixel-aspect-ratio=(fraction)1/1, width=(int)1280, height=(int)720
0:00:00.196202720 1729 0xa57d0 INFO TIViddec2 gsttividdec2.c:663:gst_tividdec2_set_sink_caps: requested sink caps: video/mpeg, mpegversion=(int)4, systemstream=(boolean)false, parsed=(boolean)true, profile-level-id=(string)241, codec_data=(buffer)000001b0f1000001b5a913000001000000012008d48d0800f528045a14103f000001b24c61766335322e37342e31, pixel-aspect-ratio=(fraction)1/1, width=(int)1280, height=(int)720
0:00:00.196446861 1729 0xa57d0 LOG TIViddec2 gsttividdec2.c:1176:gst_tividdec2_exit_video: begin exit_video
0:00:00.196568931 1729 0xa57d0 LOG TIViddec2 gsttividdec2.c:1233:gst_tividdec2_exit_video: end exit_video
0:00:00.196721519 1729 0xa57d0 LOG TIViddec2 gsttividdec2.c:767:gst_tividdec2_set_sink_caps: sink caps negotiation successful
/GstPipeline:pipeline0/GstTIViddec2:tividdec21.GstPad:sink: caps = video/mpeg, mpegversion=(int)4, systemstream=(boolean)false, parsed=(boolean)true, profile-level-id=(string)241, codec_data=(buffer)000001b0f1000001b5a913000001000000012008d48d0800f528045a14103f000001b24c61766335322e37342e31, pixel-aspect-ratio=(fraction)1/1, width=(int)1280, height=(int)720
0:00:00.197270836 1729 0xa57d0 LOG TIViddec2 gsttividdec2.c:1066:gst_tividdec2_init_video: begin init_video
0:00:00.197637048 1729 0x432c0 LOG TIViddec2 gsttividdec2.c:1577:gst_tividdec2_decode_thread: init video decode_thread
0:00:00.197881188 1729 0x432c0 LOG TIViddec2 gsttividdec2.c:1348:gst_tividdec2_codec_start: opening codec engine "codecServer"
0:00:00.359685382 1729 0x3e8d0 LOG TIViddec2 gsttividdec2.c:1430:gst_tividdec2_codec_start: opening video decoder "h264dec"
0:00:00.488103347 1729 0x432c0 LOG TIViddec2 gsttividdec2.c:1430:gst_tividdec2_codec_start: opening video decoder "mpeg4dec"
0:00:00.489903885 1729 0x3e8d0 LOG TIViddec2 gsttividdec2.c:845:gst_tividdec2_set_source_caps_base: setting source caps to: video/x-raw-yuv, format=(fourcc)UYVY, framerate=(fraction)30000/1001, width=(int)720, height=(int)480
/GstPipeline:pipeline0/GstTIViddec2:tividdec20.GstPad:src: caps = video/x-raw-yuv, format=(fourcc)UYVY, framerate=(fraction)30000/1001, width=(int)720, height=(int)480
0:00:00.490972001 1729 0x3e8d0 LOG TIViddec2 gsttividdec2.c:1494:gst_tividdec2_codec_start: downstream buffer is not a DMAI buffer; disabling use of pad-allocated buffers
0:00:00.491216142 1729 0x3e8d0 LOG TIViddec2 gsttividdec2.c:1518:gst_tividdec2_codec_start: creating output buffer table
(gst-launch-0.10:1729): GStreamer-CRITICAL **: gst_debug_log_valist: assertion `category != NULL' failed
0:00:00.492040117 1729 0x78470 LOG TIViddec2 gsttividdec2.c:1162:gst_tividdec2_init_video: end init_video
0:00:00.492284258 1729 0x78470 LOG TIViddec2 gsttividdec2.c:1034:gst_tividdec2_chain: Found extra header information for h264dec
0:00:00.527074298 1729 0x432c0 WARN TIViddec2 gsttividdec2.c:1436:gst_tividdec2_codec_start:<tividdec21> error: failed to create video decoder: mpeg4dec
0:00:00.527654132 1729 0x432c0 LOG TIViddec2 gsttividdec2.c:1437:gst_tividdec2_codec_start: closing codec engine
0:00:00.527867755 1729 0x432c0 WARN TIViddec2 gsttividdec2.c:1589:gst_tividdec2_decode_thread:<tividdec21> error: failed to start codec
ERROR: from element /GstPipeline:pipeline0/GstTIViddec2:tividdec21: failed to create video decoder: mpeg4dec
Additional debug info:
gsttividdec2.c(1436): gst_tividdec2_codec_start (): /GstPipeline:pipeline0/GstTIViddec2:tividdec21
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL …
0:00:00.529363116 1729 0xa57d0 WARN TIViddec2 gsttividdec2.c:1158:gst_tividdec2_init_video:<tividdec21> error: decode thread failed to create circbuf handles
0:00:00.529759844 1729 0xa57d0 WARN TIViddec2 gsttividdec2.c:1027:gst_tividdec2_chain:<tividdec21> error: unable to initialize video
0:00:00.539281329 1729 0x15088 LOG TIViddec2 gsttividdec2.c:1252:gst_tividdec2_change_state: begin change_state (26)
0:00:00.544103106 1729 0xa57d0 WARN TIViddec2 gsttividdec2.c:988:gst_tividdec2_parse_and_queue_buffer:<tividdec21> error: Failed to queue input buffer into circular buffer
0:00:00.544560870 1729 0xa57d0 WARN TIViddec2 gsttividdec2.c:1045:gst_tividdec2_chain:<tividdec21> error: Failed to queue input buffer into circular buffer
/GstPipeline:pipeline0/GstTIViddec2:tividdec20.GstPad:src: caps = NULL
/GstPipeline:pipeline0/GstTIViddec2:tividdec20.GstPad:sink: caps = NULL
0:00:00.546025714 1729 0x15088 LOG TIViddec2 gsttividdec2.c:1289:gst_tividdec2_change_state: end change_state
0:00:00.546422443 1729 0x15088 LOG TIViddec2 gsttividdec2.c:1252:gst_tividdec2_change_state: begin change_state (17)
0:00:00.546636066 1729 0x15088 LOG TIViddec2 gsttividdec2.c:1176:gst_tividdec2_exit_video: begin exit_video
0:00:00.546880206 1729 0x3e8d0 LOG TIViddec2 gsttividdec2.c:1675:gst_tividdec2_decode_thread: invoking the video decoder
0:00:00.558080157 1729 0x3e8d0 LOG TIViddec2 gsttividdec2.c:1675:gst_tividdec2_decode_thread: invoking the video decoder
0:00:00.567571124 1729 0x3e8d0 LOG TIViddec2 gsttividdec2.c:1675:gst_tividdec2_decode_thread: invoking the video decoder
0:00:00.577031574 1729 0x3e8d0 LOG TIViddec2 gsttividdec2.c:1675:gst_tividdec2_decode_thread: invoking the video decoder
0:00:00.586461505 1729 0x3e8d0 LOG TIViddec2 gsttividdec2.c:1675:gst_tividdec2_decode_thread: invoking the video decoder
0:00:00.595921954 1729 0x3e8d0 LOG TIViddec2 gsttividdec2.c:1675:gst_tividdec2_decode_thread: invoking the video decoder
0:00:00.605596026 1729 0x3e8d0 LOG TIViddec2 gsttividdec2.c:845:gst_tividdec2_set_source_caps_base: setting source caps to: video/x-raw-yuv, format=(fourcc)UYVY, framerate=(fraction)30000/1001, width=(int)720, height=(int)480
/GstPipeline:pipeline0/GstTIViddec2:tividdec20.GstPad:src: caps = video/x-raw-yuv, format=(fourcc)UYVY, framerate=(fraction)30000/1001, width=(int)720, height=(int)480
0:00:00.606328448 1729 0x3e8d0 LOG TIViddec2 gsttividdec2.c:1783:gst_tividdec2_decode_thread: pushing buffer to source pad with timestamp : 0:00:00.000000000, duration: 0:00:00.033366666
0:00:00.606542071 1729 0x3e8d0 DEBUG TIViddec2 gsttividdec2.c:1786:gst_tividdec2_decode_thread: push to source pad failed
0:00:00.606694659 1729 0x3e8d0 LOG TIViddec2 gsttividdec2.c:1302:gst_tividdec2_codec_stop: freeing cicrular input buffer
0:00:00.607884844 1729 0x3e8d0 LOG TIViddec2 gsttividdec2.c:1311:gst_tividdec2_codec_stop: freeing output buffers
0:00:00.609654865 1729 0x3e8d0 LOG TIViddec2 gsttividdec2.c:1318:gst_tividdec2_codec_stop: closing video decoder
0:00:00.609899005 1729 0x15088 LOG TIViddec2 gsttividdec2.c:1186:gst_tividdec2_exit_video: shutting down decode thread
0:00:00.611211261 1729 0x3e8d0 LOG TIViddec2 gsttividdec2.c:1324:gst_tividdec2_codec_stop: closing codec engine
0:00:00.611607989 1729 0x3e8d0 LOG TIViddec2 gsttividdec2.c:1850:gst_tividdec2_decode_thread: exit video decode_thread (-1)
0:00:00.612065753 1729 0x15088 DEBUG TIViddec2 gsttividdec2.c:1191:gst_tividdec2_exit_video: decode thread exited with an error condition
0:00:00.612248859 1729 0x15088 LOG TIViddec2 gsttividdec2.c:1233:gst_tividdec2_exit_video: end exit_video
0:00:00.612401446 1729 0x15088 LOG TIViddec2 gsttividdec2.c:1289:gst_tividdec2_change_state: end change_state
0:00:00.612645587 1729 0x15088 LOG TIViddec2 gsttividdec2.c:1252:gst_tividdec2_change_state: begin change_state (26)
/GstPipeline:pipeline0/GstTIViddec2:tividdec21.GstPad:sink: caps = NULL
0:00:00.613194903 1729 0x15088 LOG TIViddec2 gsttividdec2.c:1289:gst_tividdec2_change_state: end change_state
0:00:00.613408526 1729 0x15088 LOG TIViddec2 gsttividdec2.c:1252:gst_tividdec2_change_state: begin change_state (17)
0:00:00.613591632 1729 0x15088 LOG TIViddec2 gsttividdec2.c:1176:gst_tividdec2_exit_video: begin exit_video
0:00:00.613774737 1729 0x432c0 LOG TIViddec2 gsttividdec2.c:1324:gst_tividdec2_codec_stop: closing codec engine
0:00:00.616765460 1729 0x432c0 LOG TIViddec2 gsttividdec2.c:1850:gst_tividdec2_decode_thread: exit video decode_thread (0)
0:00:00.617375812 1729 0x15088 LOG TIViddec2 gsttividdec2.c:1186:gst_tividdec2_exit_video: shutting down decode thread
0:00:00.617589435 1729 0x15088 LOG TIViddec2 gsttividdec2.c:1233:gst_tividdec2_exit_video: end exit_video
0:00:00.617711505 1729 0x15088 LOG TIViddec2 gsttividdec2.c:1289:gst_tividdec2_change_state: end change_state
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:src: caps = NULL
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstQueue:queue3.GstPad:src: caps = NULL
/GstPipeline:pipeline0/GstQueue:queue3.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:src: caps = NULL
/GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstMpeg4VParse:mpeg4vparse0.GstPad:src: caps = NULL
/GstPipeline:pipeline0/GstMpeg4VParse:mpeg4vparse0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstTypeFindElement:typefindelement0.GstPad:src: caps = NULL
/GstPipeline:pipeline0/GstTypeFindElement:typefindelement1.GstPad:src: caps = NULL
Freeing pipeline …
jinqiang wang:
请问楼主问题解决了吗?我现在也想用gstreamer插件解码两路视频,楼主有好的方法吗?