http://cgit.freedesktop.org/gstreamer/gstreamer/tree/docs/design/part-states.txt?h=BRANCH-RELEASE-0_10_19

даю конвейер gstreamer, который получает два потока RTP из сетевого источника:

Аудиопоток ILBC + соответствующий поток RTCPH263 Видеопоток + соответствующий поток 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», который предоставит какие-то резервные видеоданные для поддержания работы конвейера, когда нет сетевых видеоданных?

Я попытался поэкспериментировать с «видеотестами» и тем, что называется «видеомиксер», но я думаю, что микшер все еще требует, чтобы оба потока были живы. Любая обратная связь с благодарностью!

Ответы на вопрос(1)

Ваш ответ на вопрос