如何访问 HTML5 视频解码状态?
How to Access HTML5 Video Decoding Status?
我一直在使用 HTML 视频媒体源扩展 (MSE),下面是来自 w3.org 的关于 MSE 如何与 HTML 视频元素交互的图表概述:
如果我没理解错的话,MSE 只提供源代码。视频解码工作仍然由 HTML Video Element 完成,根据 的说法,它是访问硬件解码支持的唯一入口。
我有两个问题:
- 访问视频缓冲属性时,是指HTML元素中的解码缓冲区还是MSE中的downloaded/parsed缓冲区?如果是指下载的buffer,如MDN Doc saying,是否可以得到解码后的buffer范围?
- 在某些性能较差的计算机上,由于缺乏 GPU 硬件支持,它们无法足够快地解码高分辨率视频。同时,由于互联网带宽非常好,自适应比特率 (ABR) 算法将始终尝试为这些计算机提供高分辨率,从而导致播放体验不稳定。有什么解决办法吗?
非常感谢您的任何建议!
依次看你的问题:
它是下载的缓冲区 - 解码内容通常对 Javascript 应用程序级别不可用,如果是加密的,甚至对 OS 应用程序级别不可用媒体流和设备支持安全媒体路径。假设视频未加密,理论上没有什么可以阻止您在 Javascript 中自行解码,但显然会很慢。有一些 ffmpeg 端口到 Javascript 可用(例如 https://github.com/Kagami/ffmpeg.js/),但这些端口仍然相对较慢。
大多数 HMTML5 播放器都包含一种方法,可以手动或以编程方式设置或限制播放器从清单中可用的分辨率中请求的最大分辨率。不同的播放器也可能有不同的 ABR 算法,有些播放器会将 CPU 作为算法中的一个因素。有些播放器甚至可能支持多种或自定义 ABR 算法,因此您可以添加自己的标准。如果您想查看允许 CPU 的算法示例,请查看 DASH.js 中的 'DroppedFramesRule':https://github.com/Dash-Industry-Forum/dash.js/wiki/ABR-Logic
我一直在使用 HTML 视频媒体源扩展 (MSE),下面是来自 w3.org 的关于 MSE 如何与 HTML 视频元素交互的图表概述:
如果我没理解错的话,MSE 只提供源代码。视频解码工作仍然由 HTML Video Element 完成,根据
我有两个问题:
- 访问视频缓冲属性时,是指HTML元素中的解码缓冲区还是MSE中的downloaded/parsed缓冲区?如果是指下载的buffer,如MDN Doc saying,是否可以得到解码后的buffer范围?
- 在某些性能较差的计算机上,由于缺乏 GPU 硬件支持,它们无法足够快地解码高分辨率视频。同时,由于互联网带宽非常好,自适应比特率 (ABR) 算法将始终尝试为这些计算机提供高分辨率,从而导致播放体验不稳定。有什么解决办法吗?
非常感谢您的任何建议!
依次看你的问题:
它是下载的缓冲区 - 解码内容通常对 Javascript 应用程序级别不可用,如果是加密的,甚至对 OS 应用程序级别不可用媒体流和设备支持安全媒体路径。假设视频未加密,理论上没有什么可以阻止您在 Javascript 中自行解码,但显然会很慢。有一些 ffmpeg 端口到 Javascript 可用(例如 https://github.com/Kagami/ffmpeg.js/),但这些端口仍然相对较慢。
大多数 HMTML5 播放器都包含一种方法,可以手动或以编程方式设置或限制播放器从清单中可用的分辨率中请求的最大分辨率。不同的播放器也可能有不同的 ABR 算法,有些播放器会将 CPU 作为算法中的一个因素。有些播放器甚至可能支持多种或自定义 ABR 算法,因此您可以添加自己的标准。如果您想查看允许 CPU 的算法示例,请查看 DASH.js 中的 'DroppedFramesRule':https://github.com/Dash-Industry-Forum/dash.js/wiki/ABR-Logic