背景:
每隔一定间隔播放视频时,我都会在文本框中显示一些文本,例如(00:02:00-00:04:00 "Hello there")
。
仅在视频以特定间隔播放时,才显示这些文本框。如果我倒带或将视频跳过到另一个时间,则应根据当前时间是否在该时间间隔内来生成/销毁文本框。
我已经在文档中搜索了ffplay和vlc以实现此功能。
我尝试过的事情:
ffplay:我的策略是继续轮询ffplay转储到STDERR中的视频的当前时间,并检查当前时间是否在间隔内。
LibVLC: LibVLC支持异步事件,但不支持取决于视频播放时间的事件。
我的问题:
1。是否建议继续轮询当前视频时间或设置回调/触发功能?
2。是否可以将视频的当前播放时间作为变量并相应地创建回调函数?
注意::我知道字幕具有相同的作用,但是我希望文本位于不同的窗口中。文本框应与我使用的视频播放器分离。
答案 0 :(得分:2)
如果您只对当前视频时间或位置感兴趣,则可以很好地进行轮询。 LibVLC确实为Media Player Position Changed
和Media Player Time Changed
实现了回调,但是对于非常定期执行的操作(例如每秒查询时间),将其作为异步事件处理没有太多价值。 / p>
设置计时器以每秒查询一次(或半秒,具体取决于您想要的精度)并调用:
libvlc_time_t current = libvlc_media_player_get_time(my_player);
请注意,结果以毫秒为单位。而且您显然必须保留对您的my_player
的引用,但是我想您已经做到了。另请注意,以我的经验,libvlc_media_player_get_time
报告的时间可能并不总是很准确。但是对于播放来说应该没问题。
答案 1 :(得分:0)
您可以仅使用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
`