2016-04-22 78 views
2

我无法弄清楚如何合并2个UDP源(1音频,1个用于视频),seperately这是很容易的,但不知道如何将它们合并为一个小白,我知道我非常接近Gstreamer管道合并2 udp源到rtmp?

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 \ 

...?

回答

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的支持,你可以 检查)

它是从原始的PCM音频导致 巨著解码,然后在AAC编码为flvmux似乎并不理解原始音频

  • MUX在此之后可以去rtpmsink 3,udpsrc音频部分这将会它传输到指定位置(我不是很熟悉这个格式)

请记住,在其中元素出现的顺序是创造的只是顺序,它不联动的顺序..但是我认为如果你想链接它们,那么首先必须存在这些元素,因此我在开始时就使用了flvmux来使用mux。名称稍后(这是别名)。 我创建了这3个管道部分,然后将它们与多路复用器的使用关联起来。别名..

+0

我欣赏努力,但不工作只是错误的错误语法错误,我认为命令必须按顺序,并有最后的水槽? – user6238466

+0

不,他们不需要按顺序..元素的正确链接必须是正确的,它是..我没有得到错误的语法错误..但它不是为我工作,所以我重写了它,现在它应该正在工作(我更新了答案) – nayana

+0

@ user6238466我更新了答案.. – nayana