我正在构建一个 GStreamer 管道,从网络源接收两个 RTP 流:
如果网络源一开始就发送视频和音频,这个流水线效果很好。如果稍后暂停视频流,gstreamer仍将播放音频,甚至在网络源恢复视频流时开始播放视频。
然而,我的问题是,如果网络源一开始只有音频流(视频可能稍后添加),则该流水线似乎会暂停/冻结,直到视频流也开始。由于视频是可选的(用户可以随意添加/删除),我是否可以连接一个“videotestsrc”,以提供某种备用视频数据,以保持当没有网络视频数据时流水线运行?
我尝试过使用“videotestsrc”和一个称为“videomixer”的东西进行实验,但我认为混合器仍需要两个流都活着。非常感谢您的任何反馈!
- ILBC 音频流 + 相应的 RTCP 流
- H263 视频流 + 相应的 RTCP 流
gst-launch -vvv gstrtpbin name=rtpbin
udpsrc caps="application/x-rtp,media=(string)video,clock-rate=(int)90000,encoding-name=(string)H263-2000" port=40000 ! rtpbin.recv_rtp_sink_0
rtpbin. ! rtph263pdepay ! ffdec_h263 ! xvimagesink
udpsrc port=40001 ! rtpbin.recv_rtcp_sink_0
rtpbin.send_rtcp_src_0 ! udpsink port=40002 sync=false async=false
udpsrc caps="application/x-rtp,media=(string)audio,clock-rate=(int)8000,encoding-name=(string)PCMU,encoding-params=(string)1,octet-align=(string)1" port=60000 rtpbin.recv_rtp_sink_1
rtpbin. ! rtppcmudepay ! autoaudiosink
udpsrc port=60001 ! rtpbin.recv_rtcp_sink_1
rtpbin.send_rtcp_src_1 ! udpsink port=60002 sync=false async=false
如果网络源一开始就发送视频和音频,这个流水线效果很好。如果稍后暂停视频流,gstreamer仍将播放音频,甚至在网络源恢复视频流时开始播放视频。
然而,我的问题是,如果网络源一开始只有音频流(视频可能稍后添加),则该流水线似乎会暂停/冻结,直到视频流也开始。由于视频是可选的(用户可以随意添加/删除),我是否可以连接一个“videotestsrc”,以提供某种备用视频数据,以保持当没有网络视频数据时流水线运行?
我尝试过使用“videotestsrc”和一个称为“videomixer”的东西进行实验,但我认为混合器仍需要两个流都活着。非常感谢您的任何反馈!