Gstreamer管道将2个udp源合并到rtmp?

时间:2016-04-22 02:37:00

标签: gstreamer

我无法弄清楚如何合并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 \

......?

1 个答案:

答案 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放在开始能够使用多路复用器。稍后命名(类似于别名)。 我创建了这三部分管道,然后将它们与多路复用器的使用联系起来。别名..