由于您没有发布任何代码,我想您可以接受概念性答案..
rtspsrc 很少有选项可以用来控制它何时失败 - 关于超时或超过最大试验次数。这些是(不确定是否全部):
retry - this may be not very useful if it deals only with ports ..
timeout - if you want to try with UDP some longer time you can enlarge this one
tcp-timeout - this is important, try to play with it - make it much larger
connection-speed - maybe it will help to make smaller this one
protocols - I have experience that for bad streams TCP was much better for me
实际概念(我不是专家,将其作为问题的另一种观点):
您可以创建两个箱 - 每个流一个。我将使用 rtspsrc 和 decodebin 并阻止 decodebin 的输出焊盘,直到我拥有所有焊盘,然后我将连接到合成器。
当您收到任何错误(应该是在等待所有垫的阶段)时,您会将 bin 置于 NULL 状态(我的意思是 GStreamer 状态称为 NULL)并再次播放/暂停.. 那么您必须使用垫问题正确(不知道那是什么:D)..您可以发布有关此的代码吗?也许尝试丢弃错误消息以不分解管道..
另外,你只有视频输入吗?我猜不,你可以使用 audiomixer 来播放音频。。合成器也有很好的 OpenGL 版本,它的调用速度要快得多glvideomixer
。但它可能会引入另一个与 OpenGL 相关的问题。如果你有英特尔 GPU,那么你可能是安全的。