【问题标题】:Setting up time triggers on video player在视频播放器上设置时间触发器
【发布时间】:2019-07-02 16:35:04
【问题描述】:

背景:

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

这些文本框应仅在视频以特定间隔播放时显示。如果我倒带或跳过视频到不同的时间,则应根据当前时间是否在间隔内生成/销毁文本框。

我已经搜索了 ffplay 和 vlc 的文档以实现此功能。

我的尝试:

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

LibVLC: LibVLC 支持异步事件,但不支持取决于视频播放时间的那种。

我的问题:

1.是否建议继续轮询当前视频时间或设置回调/触发函数?

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

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

【问题讨论】:

    标签: video ffmpeg libvlc


    【解决方案1】:

    如果您只对当前视频时间或位置感兴趣,那么轮询非常好。 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 报告的时间可能并不总是非常准确。但是播放应该没问题。

    【讨论】:

      【解决方案2】:

      您可以只使用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 `

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-01
        相关资源
        最近更新 更多