0

在我的 Python 程序中,我将 GStreamerplaybin与 a 结合使用textoverlay来播放视频文件并在其上显示一些文本。这很好用:如果我更改 的text属性,textoverlay则会显示新文本。

但现在我想根据视频的当前位置/时间(如字幕)设置文本。

我读到了管道的时钟、缓冲区的时间戳、段事件和外部计时器,它们每 x 毫秒查询一次当前时间。但是,了解时间变化的最佳做法是什么,以便我可以尽快显示正确的文本?

4

1 回答 1

0

与视频真正同步的最佳方法是使用 cairooverlay 元素之类的东西,并根据帧的实际时间戳直接在管道内进行渲染。或者另外编写自己的元素来做到这一点。

如果不需要非常精确的时序,最简单的解决方案是使用流水线时钟。一旦它开始,您就可以从管道中获取它,然后可以为您想要的时间或间隔创建单次(或周期性)时钟 ID。然后在时钟上使用 async_wait() 方法。

要获得对应于例如管道的位置 1 秒的时钟时间,您需要在管道的基本时间上增加 1 秒(即 1000000000)。您可以在创建时钟 ID 时使用该值。

于 2014-07-17T15:15:20.773 回答