场景是 websocket 收视频数据,然后解码播放。 目前使用 wasm 软解,有性能瓶颈。单线程解码的话,i5 级别的 cpu 在 2Mbps 、2k 的视频就估计解不动了。
有没有什么可以硬解的方案?
1
noe132 2020-04-09 16:12:52 +08:00 via Android
如果浏览器支持硬解的话,大概关键字 mediasource objecturl
https://stackoverflow.com/questions/50333767/html5-video-streaming-video-with-blob-urls/50354182 |
2
coderluan 2020-04-09 16:22:05 +08:00
前端是运行在浏览器之上的,并不能直接访问硬件,所以基本只能调用浏览器的硬解,性能就那样,没啥提升的空间。还有一个曲线的办法是安装本地解码器,然后通过浏览器插件的方式调用。
|
3
Cooky 2020-04-09 16:23:52 +08:00 via Android
webgl ?
|
7
kokutou 2020-04-09 16:36:47 +08:00 via Android
视频再弄 h264 的,264 浏览器硬解支持的设备多。。
|
8
VDimos 2020-04-09 16:38:10 +08:00 via Android
硬解这个得浏览器支持才行的吧
|
9
tojonozomi 2020-04-09 16:40:19 +08:00
这个得看浏览器的支持程度吧,现在 chrome 的就 vp9 ?
ffmpeg 转编码到 264 然后喂 MSE 也不是不行?不过性能要求应该很爆炸,可以考虑 preset 用快速方案 |
10
coderluan 2020-04-09 16:44:44 +08:00 1
@kitten23 可以装本地解码器,那样是能在浏览器页面播放的,我见过这个实现,好像是 divx 公司的,具体接口就没研究过了。
|
11
ccFox 2020-04-09 18:42:08 +08:00
不知道您这边是做什么类型产品,或许可以考虑一下 VP9 ? VP9 可以 Chrome 硬解。
|
12
Xdh129 2020-04-09 18:42:54 +08:00
Chrome/旧版 Edge 支持在线硬解 8k@60fps VP9 视频,FireFox 只能软解🤔
|
13
zhw2590582 2020-04-09 19:28:10 +08:00 via iPhone
见过这方面的解码库,但现在就要求浏览器播放 h265 显然不合理,还是后端再转一次吧
|
14
jim9606 2020-04-10 03:42:01 +08:00 1
我觉得要在不支持 HEVC 的浏览器上强行解码 HEVC 也太强人所难了。
不知道你的 wasm 是用哪里的方案,搜了这篇文章( https://zhuanlan.zhihu.com/p/73772711 ),里面是用改过的的 ffmpeg 编译的,好像看性能还可以的样子? 我个人觉得就算不能硬解也尽量用浏览器支持的编码,例如 VP9,好歹浏览器会带一个针对平台优化过的软件解码器。 |
15
sunqixiaoxixi 2020-04-30 19:25:12 +08:00
我用 libde265 编过 wasm 版本,但是在高码率或者高分辨率时解码表现太差,还是回到 h264 作罢,也许 wasm 能支持多线程的话会有更多想象空间
|
16
Shepherdog 2020-11-05 14:29:03 +08:00
目前 WebAssembly SIMD 已进入提案,如果未来有 wasm + ffmpeg 此方面的优化版本,1080p 的解码效率估计能达到可用状态(>25fps )。
|