在视频播放器上设置时间触发器
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 Changed
和 Media 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
`
背景:
每当视频以特定间隔播放时,我想在文本框中显示一些文本,比如 (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 Changed
和 Media 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
`