如何访问HTML5视频解码功能?

2023-12-30

HTML5 有<video/>从服务器下载视频、解码并渲染的元素。通常(如果不是总是)他们使用硬件加速解码(如果可用)。

是否可以仅访问解码功能?原因是我正在使用自定义流协议,因此在客户端我已经编码了需要解码和渲染的视频流。

遗憾的是,视频解码器的纯 JavaScript 实现不适用,因为它们无法提供足够的性能。我仅对 HVEC 或 h.264 编解码器感兴趣。


是否可以仅访问解码功能?

很不幸的是,不行。我们只能访问高级 API,以不可知的方式处理流/源文件,影响有限,例如基于时间的位置、播放状态和各种事件。我们可以将当前解码帧中的帧作为原始 RGB(A) 绘制到画布上,仅此而已。

原因是我使用的是自定义流协议等 客户端我已经编码了需要解码的视频流 使成为

您没有描述此协议,因此我们只能猜测,但您也许可以构建一个浏览器兼容的流,供视频元素使用媒体源扩展 https://www.w3.org/TR/media-source/。这使您可以直接在客户端中构建自适应和自定义流解决方案。

视频解码器的纯 JavaScript 实现不适用 不幸的是,他们无法提供足够的性能。

这不一定是真的。示例包括实时解码 MPEG1 流(音频和视频)的纯 JS 实现,例如this http://jsmpeg.com/ and this http://phoboslab.org/log/2013/05/mpeg1-video-decoder-in-javascript。当然,目前大多数浏览器的功能都受到了限制。还有一个基于 emscripten 的 H-264 https://github.com/mbebenita/Broadway可用的解码器似乎也通过 WebGL 使用 GPU,但我不能谈论它的性能 - 不过,这可能是下一段的一个很好的起点:

更好的选择是调查网络组装 http://webassembly.org/它可以运行来自 C/C++ 源代码等预编译的二进制代码。这允许您使用在浏览器中以本机速度运行的 HVEC/H.264 解码器的开源实现(但请注意许可证和条款,特别是对于 H.264 http://www.mpegla.com/main/programs/AVC/Pages/Agreement.aspx),或使用软件的一部分,例如(可链接)ffmpeg http://trac.ffmpeg.org/wiki/CompilationGuide.

我对任何非便携式解决方案都感兴趣

在这种情况下,您可能想要考虑构建一个网络扩展 https://developer.mozilla.org/en-US/Add-ons/WebExtensions(又名浏览器扩展)可以使用与本机应用程序交互的消息传递 https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Native_messaging(在这种情况下,后者可以是 ffmpeg,或者可以直接处理流的程序)。

当然,这到底如何工作取决于您正在使用的协议等。

基于有限的范围/描述,我只需要 2 美分。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何访问HTML5视频解码功能? 的相关文章