Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Gstreamer管道将2个udp源合并到rtmp?_Gstreamer - Fatal编程技术网

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

Gstreamer管道将2个udp源合并到rtmp?,gstreamer,Gstreamer,我不知道如何合并2个udp源(1个用于音频,1个用于视频),分开来说这很容易,但不知道如何合并它们,因为它们是一个noob,我知道我已经非常接近了 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=VP

我不知道如何合并2个udp源(1个用于音频,1个用于视频),分开来说这很容易,但不知道如何合并它们,因为它们是一个noob,我知道我已经非常接近了

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,首先是flvmux链接到rtmpsink,注意没有!签名 此部件和下一个udpsrc部件之间

2、udpsrc视频部分 需要首先从vp8解码,然后重新编码到h264,如图所示 flvmux只理解h264(我想不支持vp8,你可以 勾选此项)

3、从opus解码的udpsrc音频部分 在原始pcm音频中,然后在aac中编码为flvmux,因为flvmux似乎不理解原始音频

  • mux后,这可以转到rtpmsink,它将流式传输到给定的位置(我不太熟悉这种格式)
请记住,元素出现的顺序只是创建的顺序,而不是链接的顺序。。但是,我认为如果要链接元素,元素必须首先存在,因此我将flvmux放在开头,以便能够使用mux。稍后命名(类似于别名)。
我创建了管道的这3个部分,然后将它们与mux的使用联系起来。alias..

我很感谢您的努力,但这并不奏效。这是一个错误语法错误,我认为命令必须是有序的,而接收器必须是最后一个?不,它们不必是有序的。。元件的正确连接必须有序,并且是。。我没有得到错误的错误语法。。但是它对我也不起作用,所以我重新做了它,现在它应该起作用了(我更新了答案),它起作用了!我花了12个多小时感到沮丧,当只有一个人回答时,我准备放弃,但非常感谢您用一个工作样本修复它。最后多路复用器。谢谢@用户6238466我很高兴它终于起作用了:)哇,12个多小时了,时间太多了。。了解gst launch的工作原理需要时间,但您可能需要了解3-4件事情,然后您将能够制作比此复杂得多的管道:)请记住使用
gst-inspect-1.0 element
检查element的功能(并了解哪一个是sink,哪一个是src),等等。。祝你在接下来的gstreamer冒险中好运:)
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.