我无法弄清楚如何合并2个udp源(1个用于音频,1个用于视频),单独它很容易,但不知道如何合并它们是一个菜鸟,我知道我非常接近< / p>
gst-launch-1.0 rtpbin name=rtpbin rtpbin.recv_rtp_sink_ \
! udpsrc port=6004 caps="application/x-rtp, media=(string)video,clock-rate=(int)90000,payload=(int)96,encoding-name=VP8-DRAFT-IETF-01" \
! rtpvp8depay \
! queue \
! mux. rtpbin.recv_rtp_sink_ \
! udpsrc port=6005 caps="application/x-rtp, media=audio, clock-rate=48000, encoding-name=X-GST-OPUS-DRAFT-SPITTKA-00, payload=111,channels=2" \
! rtpopusdepay \
! queue \
......?
答案 0 :(得分:1)
我不知道确切的答案,但我会这样做(我们可以通过评论协商解决方案:)):
gst-launch-1.0 flvmux name=mux ! rtmpsink udpsrc port=6004 caps="application/x-rtp, media=(string)video,clock-rate=(int)90000,payload=(int)96,encoding-name=VP8-DRAFT-IETF-01" ! rtpvp8depay ! vp8dec ! queue ! x264enc ! mux. udpsrc port=6005 caps="application/x-rtp, media=audio, clock-rate=48000, encoding-name=X-GST-OPUS-DRAFT-SPITTKA-00, payload=111,channels=2" ! rtpopusdepay ! queue ! opusdec ! voaacenc ! aacparse ! queue ! mux.
为什么这个管道:
- 管道的三个部分后来链接在一起,
1,首先是flvmux链接到rtmpsink,注意没有!标志 这部分和下一个udpsrc部分之间的
2,udpsrc视频部分当中 需要首先从vp8解码,然后重新编码为h264 flvmux只能理解h264(我猜不支持vp8,你可以 检查一下)3,udpsrc音频部分从opus解码得到 在原始pcm音频,然后编码在aac中,因为flvmux似乎不理解原始音频
- 在多路复用后,这可以转到rtpmsink,它会将它流式传输到给定的位置(我对这种格式不太熟悉)
请记住,元素出现的顺序只是创建的顺序,它不是链接的顺序。但是我认为如果要链接它们必须首先存在元素,因此我将flvmux放在开始能够使用多路复用器。稍后命名(类似于别名)。 我创建了这三部分管道,然后将它们与多路复用器的使用联系起来。别名..