videojs html5 视频检索相对于实时内容的绝对时间

标签 video html5-video video.js

我正在使用 VideoJs(使用 HTML5 播放器)播放来自 DASH 或 HLS 源的实时内容。

我想知道实际播放内容与实际直播内容相差多少。

我该怎么做?

有一个 player.currentTime() 和一个 player.liveTracker.seekableEnd(),如 https://docs.videojs.com/tutorial-live.html 中所述。 ,但这些以相对单位给出,并且由于缓冲/其他网络传输延迟,不一定跟踪内容的时间线。

我如何计算播放器播放的内容与实际直播 HLS 或 DASH 直播源输出的内容之间的差距(以毫秒为单位)?

最佳答案

如果您只想测试帧在屏幕上显示的时间与实际直播事件发生的时间(即在现实世界中)之间的差异,通常的方法是拍摄直播时钟或'拍板'。

如果您正在测试端到端交付,可能涉及云处理、打包等,那么简单的方法是将时钟和流式视频放在一起。

  • 用相机拍摄场记板
  • 将视频流馈送到您的视频工作流中(编码器、打包器、CDN 等)
  • 在播放器上播放直播
  • 将场记板和播放器放在一起
  • 查看、拍照或录像两个屏幕 - 时间之间的差异就是延迟

亚马逊在这里有一个很好的概述,包括这张有助于解释它的图片:

enter image description here

( https://aws.amazon.com/blogs/media/how-to-compete-with-broadcast-latency-using-current-adaptive-bitrate-technologies-part-1/ )

如果您希望能够单独在客户端上执行此操作,那么您需要在每个帧的元数据中添加一些准确的时间戳。我不知道标准设备这样做,但可能有一些可用 - H.264 中有诸如 SEI ( https://mpeg.chiariglione.org/tags/sei-messages ) 的机制来传达信息以“补充”视频,但同样,它们不常用于这样 AFAIK。

关于videojs html5 视频检索相对于实时内容的绝对时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60569748/

相关文章:

android - Android WebView中拦截HTML5视频源请求

ios - MPMoviePlayerController 再次向后缓冲视频

android - Cordova 5.3.3 - 如何播放本地mp4视频

jquery - 调用 dispose 时 videojs 返回 vdata 错误

javascript - 动态加载内容上的自定义 video-js 宽度和高度

javascript - 如果视频位于 OS X Chrome 的浏览器缓存中,Video.js 将无法播放

c# - 视频顶部具有透明背景的控件

python - FFmpeg-split.py 无法确定视频长度

css - 如果覆盖嵌入视频 [Firefox],则覆盖不起作用

android - 音频和视频未在 Android WebView HTML5 中播放