使用gstreamer合并音频和视频管道

时间:2014-10-14 07:06:51

标签: linux gstreamer

我有两个不同的管道,一个用于视频,一个用于音频。他们都独立工作,但我想将它们合并为一个单一的。我相信这是可能的,但我不知道如何做这样的事情:(

以下是我的两个管道:

发信人:

gst-launch v4l2src device=/dev/video0 ! 'video/x-raw-yuv,width=1280,height=720,framerate=10/1' ! ffmpegcolorspace ! vpuenc codec=6 ! rtph264pay ! udpsink host=192.168.20.26 port=5000 

gst-launch alsasrc device=hw:2 ! audioconvert ! audioresample  ! alawenc ! rtppcmapay ! udpsink host=192.168.20.26 port=5001

接收器:

gst-launch udpsrc port=5000 caps="application/x-rtp, media=(string)video, clock-rate=(int)90000, payload=(int)96, encoding-name=(string)H264" ! rtph264depay ! ffdec_h264 ! xvimagesink

gst-launch udpsrc port=5001 caps="application/x-rtp" ! rtppcmadepay ! alawdec ! alsasink

此外,任何人都知道生成的sdp文件是什么,所以如果需要我也可以在VLC中打开它?

任何指针都会有很大的帮助;)

谢谢。

1 个答案:

答案 0 :(得分:2)

合并发件人:

gst-launch v4l2src device=/dev/video0 ! 'video/x-raw-yuv,width=1280,height=720,framerate=10/1' ! ffmpegcolorspace ! vpuenc codec=6 ! rtph264pay ! udpsink host=192.168.20.26 port=5000 alsasrc device=hw:2 ! audioconvert ! audioresample  ! alawenc ! rtppcmapay ! udpsink host=192.168.20.26 port=5001

合并接收器:

gst-launch udpsrc port=5000 caps="application/x-rtp, media=(string)video, clock-rate=(int)90000, payload=(int)96, encoding-name=(string)H264" ! rtph264depay ! ffdec_h264 ! xvimagesink udpsrc port=5001 caps="application/x-rtp" ! rtppcmadepay ! alawdec ! alsasink

SDP文件的形式(通常,这可能不完全):

v=0
c=IN IP4 <Receiver IP>
m=video 5000 RTP/AVP 96
a=recvonly
a=rtpmap:96 H264/90000
m=audio 5001 RTP/AVP 8
a=recvonly
a=rtpmap:8 PCMA/8000/1

如果它是两个通道,您应该更改PCMA上的时钟频率。

此外,您可能需要在视频rtpmap行之后添加a=fmtp:96 sprop-parameter-sets=<your sprop-parameter sets in the caps>

您应该能够通过详细启动它来获取两个管道的完整上限(gst-launch -v)。这样您就可以获得PCMA的频道和时钟频率以及H264的sprop-parameter-sets