我正在尝试建立一个伪流媒体网站,该网站为通过以下方式提供的 h264 视频文件提供定时字幕nginx_mod_h264_streaming+JW播放器. 字幕会自动转换为 JW 播放器可以读取的格式,这是一个 PHP 脚本,它会获取观看者在视频中的当前位置,并输出一个类似 XML 的文件,其中包含字幕行及其相对于观看者所在位置的开始+结束时间戳。
每当观众加载流媒体页面时,视频就会自动搜索到与存储在 MySQL DB 中的开始时间相关的正确位置,并且字幕也会正确向前搜索。用户看不到任何这些;他或她只会看到自己在视频中的正确位置。
我的问题是字幕时间戳需要非常准确,而 nginx_mod_h264_streaming 只能搜索视频中最接近的关键帧,而该关键帧经常会偏离用户应该搜索的位置很长时间。我觉得这不是一个可以真正解决的问题;如果你想正确显示视频,你只能真正搜索关键帧。
我想知道的是:有没有办法读取视频实际播放的时间,或者关键帧数,以便至少可以正确显示字幕?我在 JW Player 文档中找不到任何内容来说明如何执行此操作;如果其他播放器能够做到这一点,我愿意换一个。
非常感谢您的帮助!
答案1
我相信您可以使用 javascript 来获得:
jwplayer("container").getPosition();
其中 container 是 JWPlayer 容器元素的 id,如果页面上只有一个 JW Player,则不包含:
jwplayer().getPosition();