在视频播放器上设置时间触发器

Setting up time triggers on video player

背景:

每当视频以特定间隔播放时,我想在文本框中显示一些文本,比如 (00:02:00-00:04:00 "Hello there")

这些文本框只应在视频以特定间隔播放时显示。如果我倒带或将视频跳到不同的时间,文本框应 generated/destroyed 取决于当前时间是否在间隔内。

我已经搜索了 ffplay 和 vlc 的文档来实现这个功能。

我试过的:

ffplay:我的策略是不断轮询 ffplay 在 STDERR 中转储的视频的当前时间,并检查当前时间是否在间隔内。

LibVLC: LibVLC 支持异步事件,但不支持依赖于视频播放时间的事件。

我的问题:

1.Is 是否建议继续轮询当前视频时间或设置 callbacks/trigger 功能?

2.Is是否可以获取视频的当前播放时间作为变量并相应地创建回调函数?

注意: 我知道字幕做同样的事情,但我希望文本位于不同的 window。文本框应该与我使用的视频播放器分离。

如果您只对当前视频时间或位置感兴趣,轮询非常合适。 LibVLC 确实为 Media Player Position ChangedMedia Player Time Changed 实现了回调,但是对于非常有规律地执行的事情(比如每秒查询一次时间),将其作为异步事件处理没有太多价值。

设置一个计时器每秒查询一次(或半秒,具体取决于您想要的精度)并调用:

libvlc_time_t current = libvlc_media_player_get_time(my_player);

注意,结果以毫秒为单位。而且您显然必须保留对 my_player 的引用,但我认为您会这样做。另请注意,根据我的经验,libvlc_media_player_get_time 报告的时间可能并不总是非常准确。不过播放应该没问题。

您可以只使用 subtitle 文件,例如
带有您的视频名称但以 .srt

结尾的文件

Myvideo.srt 包含:

1
00:02:00,001 --> 00:04:00,001
Hello There!

Vlc 应该会自动拾取它。

ffplay 可能需要被告知。

ffplay -ss 00:01:55.00 -i Myvideo.mp4 -vf subtitles="./Myvideo.srt `