0

应用程序由两个管道组成:

发送管道

filesrc ! decodebin ! encoder ! payloader ! udpsink

接收管道

udpsrc ! rtpbin ! depayloader ! decoder ! encoder ! filesink

想要的行为是发送管道播放一个文件,完成后,播放另一个文件并开始录制。

实际行为各不相同。在某些方法中,记录从第一次播放开始的同时开始。我认为这是因为管道共享相同的 GSocket,以便让它完全正常工作。因此,必须以某种方式缓冲进入套接字的数据。
其他方法会导致开始录制之前的几帧,然后跳转到录制开始之后,从而导致图片混乱(没有关键帧的 i 帧)。

我尝试了几种不同的方法来尝试让录制在正确的时间开始:

  • 当第二个文件开始播放时启动接收管道
  • 同时启动两个管道并让阀门元件丢弃所有内容,直到第二个文件开始播放
  • 同时启动两个流水线并寻找第二个文件开始播放的时间
  • 同时启动两个管道,并将接收管道连接到 fakesink,直到第二个文件开始播放时切换到真正的过滤器链
  • 在接收管道上设置偏移量

对于这方面的任何帮助,我将不胜感激!

4

1 回答 1

0

同时启动两个管道并让阀门元件丢弃所有内容,直到第二个文件开始播放

这实际上有效。我遇到的问题是没有发送图片快速更新,并且下一个关键帧自行到达需要一段时间。

于 2013-10-23T13:39:14.403 回答