使用Gstreamer从.mp4文件中提取无音频视频

时间:2014-01-03 09:32:28

标签: video streaming gstreamer

我正在研究服务器和客户端之间的视频流,这里服务器将发送无音频视频(即仅来自.mp4文件的视频),客户端将只接收视频并在接收器元素中播放。当服务器和客户端在两个单独的TI DM8148板上运行时,在已使用的管道下方共享并获取日志。

服务器管道:

gst-launch-0.10 -v filesrc location=/home/sample1/Holy.mp4 ! qtdemux name=demux ! multiqueue ! h264parse ! mpegtsmux name=mux ! udpsink host=192.168.10.11  port=5551 dec.

服务器日志:

Setting pipeline to PAUSED ....
Pipeline is PREROLLING ....
/GstPipeline:pipeline0/GstMultiQueue:multiqueue0.GstPad:sink0: caps = video/x-h264, level=(string)3.1, profile=(string)high, codec_data=(buffer)0164001fffe1001a6764001fac248805005bb011000003000100000300328f1832a001000568ee32
c8b0, width=(int)1280, height=(int)720, framerate=(fraction)25/1, pixel-aspect-ratio=(fraction)1/1
    /GstPipeline:pipeline0/GstMultiQueue:multiqueue0.GstPad:src0: caps = video/x-h264, level=(string)3.1, profile=(string)high, codec_data=(buffer)0164001fffe1001a6764001fac248805005bb011000003000100000300328f1832a001000568ee32c
8b0, width=(int)1280, height=(int)720, framerate=(fraction)25/1, pixel-aspect-ratio=(fraction)1/1
    /GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:sink: caps = video/x-h264, level=(string)3.1, profile=(string)high, codec_data=(buffer)0164001fffe1001a6764001fac248805005bb011000003000100000300328f1832a001000568ee32c8b
0, width=(int)1280, height=(int)720, framerate=(fraction)25/1, pixel-aspect-ratio=(fraction)1/1
    /GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:src: caps = video/x-h264, level=(string)3.1, profile=(string)high, width=(int)1280, height=(int)720, framerate=(fraction)25/1, pixel-aspect-ratio=(fraction)1/1, stream-format=(string)byte-stream, alignment=(string)au
    /GstPipeline:pipeline0/MpegTsMux:mux.GstPad:sink_64: caps = video/x-h264, level=(string)3.1, profile=(string)high, width=(int)1280, height=(int)720, framerate=(fraction)25/1, pixel-aspect-ratio=(fraction)1/1, stream-format=(string)byte-stream, alignment=(string)au
    /GstPipeline:pipeline0/MpegTsMux:mux.GstPad:src: caps = video/mpegts, systemstream=(boolean)true, packetsize=(int)188, streamheader=(buffer)< 47400030a600ffffffffffffffffffffffffff0000b00d0001c100000001e020a2c32941,474020308b00ffffffffffffffffffffffffff0002b0280001c10000e040f00c050448444d5688040ffffcfc1be040f00a050848444d56ff1b443ffba2e249 >
    /GstPipeline:pipeline0/GstUDPSink:udpsink0.GstPad:sink: caps = video/mpegts, systemstream=(boolean)true, packetsize=(int)188, streamheader=(buffer)< 47400030a600fffffffffffffffffffffffffffffffff0000b00d0001c100000001e020a2c32941, 474020308b00fff
fffffffffffffffffffffffffffffff0002b0280001c10000e040f00c050448444d5688040ffffcfc1be040f00a050848444d56ff1b443ff
ba2e249 >
    Caught interrupt -- handling interrupt.
    Interrupt: Stopping pipeline ...
    Execution ended after 29454849250 ns.
    Setting pipeline to PAUSED ...
    Setting pipeline to READY ...

客户端管道:

gst-launch-0.10 -v udpsrc port=5551 ! mpegtsdemux name=demux ! multiqueue ! h264parse ! ffdec_h264 ! v4l2sink demux.

客户日志:

Setting pipeline to PAUSED ....

** (gst-launch-0.10:1724): CRITICAL **: gst_v4l2sink_sync_rotation: assertion `v4l2_ioctl (fd, VIDIOC_S_CTRL, &c
ontrol) >= 0' failed

** (gst-launch-0.10:1724): CRITICAL **: gst_v4l2sink_sync_rotation: assertion `v4l2_ioctl (fd, VIDIOC_S_CTRL, &c
ontrol) >= 0' failed

** (gst-launch-0.10:1724): CRITICAL **: gst_v4l2sink_sync_flip: assertion `v4l2_ioctl (fd, VIDIOC_S_CTRL, &contr
ol) >= 0' failed
Pipeline is live and does not need PREROLL .....
Setting pipeline to PLAYING ....
New clock: MpegTSClock
/GstPipeline:pipeline0/GstMpegTSDemux:demux: pat-info = ((GValueArray*) 0x19f740)
/GstPipeline:pipeline0/GstMpegTSDemux:demux: pmt-info = ((MpegTsPmtInfo*) 0x10bc60)
/GstPipeline:pipeline0/GstMultiQueue:multiqueue0.GstPad:sink0: caps = video/x-h264, stream-format=(string)byte-s
tream, alignment=(string)nal
/GstPipeline:pipeline0/GstMultiQueue:multiqueue0.GstPad:src0: caps = video/x-h264, stream-format=(string)byte-st
ream, alignment=(string)nal
/GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:sink: caps = video/x-h264, stream-format=(string)byte-stre
am, alignment=(string)nal

两块TI板背靠背连接,一块作为发送器,另一块作为接收器。首先运行服务器,然后运行客户端管道。

观察:服务器发送数据,客户端也接收它,因为两个板上的LED闪烁。但是客户端没有视频播放。

问题1.如何确认只发送视频数据包?

任何人都可以帮我纠正管道,只发送.mp4的视频,只接收视频。

感谢。

0 个答案:

没有答案