我有两个不同的管道,一个用于视频,一个用于音频。他们都独立工作,但我想将它们合并为一个单一的。我相信这是可能的,但我不知道如何做这样的事情:(
以下是我的两个管道:
发信人:
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中打开它?
任何指针都会有很大的帮助;)
谢谢。
答案 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
。