San*_*mar 5 rtp video-streaming gstreamer libav
我是 gstreamer 的新手,我想将包含音频和视频的 mp4 视频从我的主机(Ubuntu PC)传输到目标板。我仅成功传输视频。但流媒体(音频和视频)并没有发生。
仅传输视频的管道如下
发件人:
gst-launch-1.0 -v filesrc 位置 = video.mp4 !解码器!x264enc!rtph264支付!udpsink 主机=192.168.2.136 端口=5000
接收者:
gst-launch-1.0 -v udpsrc port = 5000 caps =“application / x-rtp,media = video,clock-rate = 90000,encoding-name = H264,payload = 96,ssrc = 3394826012,timestamp-offset = 2215812541, seqnum-offset=46353”!rtph264depay !avdec_h264!视频转换!ximagesink 同步 = false
因此,可以看到目标上的视频。
仅传输 mp4 文件中的音频。
仅传输视频的管道如下
发件人:
gst-launch-1.0 -v filesrc location=video.mp4 !qtdemux name=demuxer 解复用器。!队列 !rtpmp4apay pt=97 !udpsink 主机=192.168.2.69 端口=5000
接收者:
gst-launch-1.0 -v udpsrc 端口=5000 caps=“应用程序/x-rtp,媒体=音频,时钟速率=44100,编码名称=MP4A-LATM,cpresent=0,配置=40002420,有效负载=97, ssrc=3386264266,时间戳偏移=2822202855,seqnum-偏移=17719”!rtpmp4adepay !解码器!阿尔萨辛克 &
这也运行成功。
但是当我尝试在下面的管道中同步传输音频/视频时:
发件人:
gst-launch-1.0 -v filesrc 位置=sample.mp4 !qtdemux 名称=demux demux。!队列 !rtph264支付 pt=96 !udpsink 主机=192.168.3.101 端口=5000 解复用器。!队列 !rtpmp4apay pt=97 !udpsink 主机=192.168.3.101 端口=5001
接收者:
gst-launch-1.0 -v udpsrc port = 5000 caps =“application / x-rtp,media = video,clock-rate = 90000,encoding-name = H264,payload = 96,ssrc = 2226494377,timestamp-offset = 3242004369, seqnum-offset=17021”!rtph264depay !解码器!ximagesink udpsrc端口= 5001 caps =“应用程序/ x-rtp,媒体=音频,时钟速率= 44100,编码名称= MP4A-LATM,cpresent = 0,配置= 40002420,有效负载= 97,ssrc = 1499706502,时间戳-偏移量=190741668,序列号偏移量=24774”!rtpmp4adepay !解码器!阿尔萨辛克
但是:得到如下输出:
错误:来自元素 /GstPipeline:pipeline0/GstDecodeBin:decodebin1/GstFaad:faad0:无法解码流。
失败。请有人建议我一个可以在目标设备上同步传输音频/视频的管道。
提前致谢。
小智 1
如果您在发送端对视频和音频流进行解复用,则没有简单的方法可以与 gstreamer同步流式传输。时间戳信息保存在容器中(在本例中为 MP4),在解复用时会丢失。
尝试将 MP4 发送到接收器,然后在那里进行解复用。一个基本的例子可以在这里找到:Streaming Mp4 video through RTP protocol using Gstreamer in Ubuntu