繁体   English   中英

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

[英]Merge Audio and Video pipelines with 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 中打开它?

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

谢谢你。

合并发件人:

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 a=fmtp:96 sprop-parameter-sets=<your sprop-parameter sets in the caps>

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM