Я создаю конвейер gstreamer, который получает два потока RTP из сетевого источника:
- Поток аудио ILBC + соответствующий поток RTCP
- H263 Видеопоток + соответствующий поток RTCP
Все помещено в один конвейер gstreamer, поэтому он будет использовать RTCP из обоих потоков для синхронизации аудио / видео. До сих пор я придумал это (используя gst-launch для создания прототипов):
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, но я думаю, что микшер все еще требует, чтобы оба потока были живы. Любая обратная связь с благодарностью!