应用程序由两个管道组成:
发送管道
filesrc ! decodebin ! encoder ! payloader ! udpsink
接收管道
udpsrc ! rtpbin ! depayloader ! decoder ! encoder ! filesink
想要的行为是发送管道播放一个文件,完成后,播放另一个文件并开始录制。
实际行为各不相同。在某些方法中,记录从第一次播放开始的同时开始。我认为这是因为管道共享相同的 GSocket,以便让它完全正常工作。因此,必须以某种方式缓冲进入套接字的数据。
其他方法会导致开始录制之前的几帧,然后跳转到录制开始之后,从而导致图片混乱(没有关键帧的 i 帧)。
我尝试了几种不同的方法来尝试让录制在正确的时间开始:
- 当第二个文件开始播放时启动接收管道
- 同时启动两个管道并让阀门元件丢弃所有内容,直到第二个文件开始播放
- 同时启动两个流水线并寻找第二个文件开始播放的时间
- 同时启动两个管道,并将接收管道连接到 fakesink,直到第二个文件开始播放时切换到真正的过滤器链
- 在接收管道上设置偏移量
对于这方面的任何帮助,我将不胜感激!