我有Janus(WebRTC)服务器。我正在使用VP8 / OPUS。然后,Janus RTP数据包转发到GStreamer。我有两个问题。
我必须运行一个GStreamer(具有多个线程)还是多个GStremaer?实际上,Janus向Gstreamer发送了多个RTP流。例)两个同伴都在WebRTC会议室。然后,Janus向GStreamer发送了4个RTP数据包。 peer1:视频/音频,peer2:视频/音频。如果我只运行一个GStreamer,则无法确定每个流的来源。因此,要进行分类,我必须使用多个GStreamer进程将端口分开。
赞:
Process1:
gst-launch-1.0 \ rtpbin name=rtpbin \ udpsrc name=videoRTP port=5000 \ caps=“application/x-rtp, media=(string)video, payload=98, encoding-name=(string)VP8-DRAFT-IETF-01, clock-rate=90000” \ ! rtpvp8depay ! webmmux ! queue \ ! filesink location=track1.webm \ udpsrc port=5002 \ caps=“application/x-rtp, media=audio, payload=111, encoding-name=(string)OPUS, clock-rate=48000" \ ! rtpopusdepay ! opusparse ! oggmux \ ! filesink location=audio.ogg
process2:
gst-launch-1.0 \ rtpbin name=rtpbin \ udpsrc name=videoRTP port=5003 \ caps=“application/x-rtp, media=(string)video, payload=98, encoding-name=(string)VP8-DRAFT-IETF-01, clock-rate=90000” \ ! rtpvp8depay ! webmmux ! queue \ ! filesink location=track1.webm \ udpsrc port=5005 \ caps=“application/x-rtp, media=audio, payload=111, encoding-name=(string)OPUS, clock-rate=48000" \ ! rtpopusdepay ! opusparse ! oggmux \ ! filesink location=audio.ogg
所以我感到困惑。是否有多个线程?或多个过程?告诉我详细信息!
如何将VP8 / OPUS实时多路复用到mp4容器?我搜索了很长时间。但是我还不能。对于每个版本,GStreamer都有很多选项。 我正在等待您的建议!谢谢你。
我已经尽力了。
我希望Way和mp4文件。
答案 0 :(得分:0)
一种解决方案可能是插件tee
在帮助页面上找到
说明
将数据分割到多个打击垫。分支数据流在以下情况下非常有用:捕获视频,其中视频显示在屏幕上,并且也已编码并写入文件。另一个例子是播放音乐并连接可视化模块。
需要在每个分支中使用单独的队列元素(或多队列)来为每个分支提供单独的线程。否则,一个分支中的阻塞数据流将使其他分支停顿。 示例启动行
1
gst-launch-1.0 filesrc location=song.ogg ! decodebin ! tee name=t ! queue ! audioconvert ! audioresample ! autoaudiosink t. ! queue ! audioconvert ! goom ! videoconvert ! autovideosink
播放song.ogg音频文件,该文件必须位于当前工作目录中,并使用goom元素呈现可视化效果(使用playbin元素可以更轻松地完成此操作,这只是示例管道)。