首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何访问HTML5视频解码功能?

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

Stack Overflow用户
提问于 2017-12-12 16:44:12
回答 3查看 7.6K关注 0票数 4

HTML5具有从服务器下载视频、解码视频和呈现视频的<video/>元素。通常,如果不是总是使用硬件加速解码(如果可用的话)。

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

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-07-27 21:39:24

这个问题的解决方案是WebRTC。可以集成外部编码器或使用嵌入式编码器。在浏览器中,WebRTC客户端采用H/W解码。WebRTC还提供实时流功能.兼容性还不错。

票数 0
EN

Stack Overflow用户

发布于 2017-12-19 05:08:03

是否有可能只访问解码功能?

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

原因是我使用自定义流协议等客户端,我有编码的视频流,我需要解码和渲染

您没有描述这个协议,所以我们只能猜测,但是您可能可以构建一个可以使用媒体源扩展的视频元素使用的浏览器兼容流。这使您可以直接在客户端构建自适应和自定义流解决方案。

遗憾的是,视频解码器的纯JavaScript实现并不适用,因为它们不能提供足够的性能。

这不一定是真的。例如,纯JS实现可以实时解码MPEG1流,包括音频和视频,例如。当然,这是在大多数浏览器目前所能做的极限上工作的。还有一个基于emscripten的H-264解码器似乎也可以通过WebGL使用GPU,但我不能说明它的性能--不过,对于下一段来说,它可能是一个很好的起点:

更好的选择是查看WebAssembly,它可以运行预编译的二进制代码,例如C/C++源代码。这允许您使用在浏览器中以本地速度运行的HVEC/H.264解码器的开放源代码实现(但要小心许可证和术语,特别是H.264),或者使用部分软件,如(可链接的)

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

在这种情况下,您可能希望构建一个web扩展 (也称为浏览器扩展),它可以使用与本机应用程序交互的消息传递 (在这种情况下,后者可以是ffmpeg,也可以是可以直接处理流的程序)。

当然,这将取决于您正在使用的协议等等。

基于有限的范围/描述,我只剩下2分钱。

票数 10
EN

Stack Overflow用户

发布于 2019-02-17 05:11:52

经过长时间的研究,使用硬件解码器对h264 HLS TS段流进行解码是可能的。由于iOS不支持MSE,让它在iOS中使用Safari似乎遇到了一个障碍,因为苹果不允许通过FIFO缓冲区或回调访问硬件解码器。考虑到苹果对WebRTC的支持,似乎只有在iOS中才能找到硬件解码器,这相当于“接收视频呼叫”流,除非输入必须是远程http流,输出必须放到画布上。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47777567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档