V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kitten23
V2EX  ›  程序员

前端如何硬解 HEVC/H265?

  •  1
     
  •   kitten23 · 2020-04-09 15:57:36 +08:00 · 7662 次点击
    这是一个创建于 1683 天前的主题,其中的信息可能已经有所发展或是发生改变。

    场景是 websocket 收视频数据,然后解码播放。 目前使用 wasm 软解,有性能瓶颈。单线程解码的话,i5 级别的 cpu 在 2Mbps 、2k 的视频就估计解不动了。

    有没有什么可以硬解的方案?

    16 条回复    2020-11-05 14:29:03 +08:00
    noe132
        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
    coderluan
        2
    coderluan  
       2020-04-09 16:22:05 +08:00
    前端是运行在浏览器之上的,并不能直接访问硬件,所以基本只能调用浏览器的硬解,性能就那样,没啥提升的空间。还有一个曲线的办法是安装本地解码器,然后通过浏览器插件的方式调用。
    Cooky
        3
    Cooky  
       2020-04-09 16:23:52 +08:00 via Android
    webgl ?
    kitten23
        4
    kitten23  
    OP
       2020-04-09 16:32:16 +08:00
    @noe132 当时就是因为浏览器不支持 HEVC,用不了 MSE,才用的 Wasm 软解
    kitten23
        5
    kitten23  
    OP
       2020-04-09 16:36:06 +08:00
    @coderluan 曲线方案都做了,目前希望能在浏览器里直接打开页面播放。有没有什么接口能尝试下?
    kitten23
        6
    kitten23  
    OP
       2020-04-09 16:36:39 +08:00
    @Cooky 渲染 yuv 数据的时候是用的 webgl,解码指望不上
    kokutou
        7
    kokutou  
       2020-04-09 16:36:47 +08:00 via Android
    视频再弄 h264 的,264 浏览器硬解支持的设备多。。
    VDimos
        8
    VDimos  
       2020-04-09 16:38:10 +08:00 via Android
    硬解这个得浏览器支持才行的吧
    tojonozomi
        9
    tojonozomi  
       2020-04-09 16:40:19 +08:00
    这个得看浏览器的支持程度吧,现在 chrome 的就 vp9 ?
    ffmpeg 转编码到 264 然后喂 MSE 也不是不行?不过性能要求应该很爆炸,可以考虑 preset 用快速方案
    coderluan
        10
    coderluan  
       2020-04-09 16:44:44 +08:00   ❤️ 1
    @kitten23 可以装本地解码器,那样是能在浏览器页面播放的,我见过这个实现,好像是 divx 公司的,具体接口就没研究过了。
    ccFox
        11
    ccFox  
       2020-04-09 18:42:08 +08:00
    不知道您这边是做什么类型产品,或许可以考虑一下 VP9 ? VP9 可以 Chrome 硬解。
    Xdh129
        12
    Xdh129  
       2020-04-09 18:42:54 +08:00
    Chrome/旧版 Edge 支持在线硬解 8k@60fps VP9 视频,FireFox 只能软解🤔
    zhw2590582
        13
    zhw2590582  
       2020-04-09 19:28:10 +08:00 via iPhone
    见过这方面的解码库,但现在就要求浏览器播放 h265 显然不合理,还是后端再转一次吧
    jim9606
        14
    jim9606  
       2020-04-10 03:42:01 +08:00   ❤️ 1
    我觉得要在不支持 HEVC 的浏览器上强行解码 HEVC 也太强人所难了。
    不知道你的 wasm 是用哪里的方案,搜了这篇文章( https://zhuanlan.zhihu.com/p/73772711 ),里面是用改过的的 ffmpeg 编译的,好像看性能还可以的样子?
    我个人觉得就算不能硬解也尽量用浏览器支持的编码,例如 VP9,好歹浏览器会带一个针对平台优化过的软件解码器。
    sunqixiaoxixi
        15
    sunqixiaoxixi  
       2020-04-30 19:25:12 +08:00
    我用 libde265 编过 wasm 版本,但是在高码率或者高分辨率时解码表现太差,还是回到 h264 作罢,也许 wasm 能支持多线程的话会有更多想象空间
    Shepherdog
        16
    Shepherdog  
       2020-11-05 14:29:03 +08:00
    目前 WebAssembly SIMD 已进入提案,如果未来有 wasm + ffmpeg 此方面的优化版本,1080p 的解码效率估计能达到可用状态(>25fps )。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2856 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 00:36 · PVG 08:36 · LAX 16:36 · JFK 19:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.