Python中的GStreamer计时

时间:2014-07-14 14:10:26

标签: python gstreamer playbin2

在我的Python程序中,我将GStreamer的playbintextoverlay结合使用来播放视频文件,并在其上显示一些文字。 这很好用:如果我更改text的{​​{1}}属性,则会显示新文本。

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

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

1 个答案:

答案 0 :(得分:0)

与视频真正同步的最佳方法是使用类似cairooverlay元素的内容,并根据帧的实际时间戳直接在管道内进行渲染。或者,也可以编写自己的元素。

如果不需要超时精确定时,那么最简单的解决方案就是使用流水线时钟。您可以在管道启动后从管道获取它,然后可以创建所需时间或间隔的单次(或定期)时钟ID。然后在时钟上使用async_wait()方法。

获得与例如对应的时钟时间。您将在管道的基准时间内添加1秒(即1000000000)的管道位置1秒。您可以在创建时钟ID时使用该值。