V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
kitten23
V2EX  ›  程序员

前端如何硬解 HEVC/H265?

  •  1
     
  •   kitten23 · Apr 9, 2020 · 8534 views
    This topic created in 2217 days ago, the information mentioned may be changed or developed.

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

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

    16 replies    2020-11-05 14:29:03 +08:00
    noe132
        1
    noe132  
       Apr 9, 2020 via Android
    如果浏览器支持硬解的话,大概关键字 mediasource objecturl

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