Gstreamer: pausando / retomando vídeo em fluxos RTP

Estou construindo um pipeline de gstreamer que recebe dois fluxos RTP de uma fonte em rede:

Fluxo de áudio ILBC + fluxo RTCP correspondenteFluxo de vídeo H263 + fluxo RTCP correspondente

Tudo é colocado em um pipeline de gstreamer para que ele use o RTCP de ambos os fluxos para sincronizar áudio / vídeo. Até agora, eu vim com isso (usando o gst-launch para prototipagem):

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

Esse pipeline funciona bem se a fonte em rede começa com o envio de vídeo e áudio. Se o fluxo de vídeo for pausado posteriormente, o gstreamer continuará reproduzindo o áudio e até começará a reproduzir o vídeo quando a fonte em rede retomar o fluxo de vídeo.

Meu problema é, no entanto, que, se a fonte em rede iniciar apenas com um fluxo de áudio (o vídeo poderá ser adicionado posteriormente), o pipeline parecerá pausar / congelar até que o fluxo de vídeo seja iniciado também.

Como o vídeo é opcional (e pode ser adicionado / removido à vontade pelo usuário) no meu aplicativo, existe alguma maneira de conectar, por exemplo, um 'videotestsrc' que forneça algum tipo de dados de vídeo substituto para manter o pipeline em execução quando não há dados de vídeo em rede?

Eu tentei experimentar o 'videotestsrc' e uma coisa chamada 'videomixer', mas acho que o mixer ainda exige que os dois streams estejam vivos. Qualquer comentário será muito bem vindo!

questionAnswers(1)

yourAnswerToTheQuestion