2022前端最新面试题知乎 2022前端最新面试题( 三 )


优点有很多:由于是CPU软解且使用行业最标准的FFMPEG解码,最终结果是:不挑系统,容错性好,支持任何CPU架构、操作系统,性能虽比不过硬解,但依然比前端WASM方案性能更好,且原生支持MSE和VideoElement 。
缺点也很明显:普通的四核笔记本电脑,即使分辨率只有1080P,在快进或快退时也会感到明显的卡顿,同时伴随比较高的CPU占用,抢占渲染进程CPU资源,另外这种方法是否有版权有待评估,但可以确定一点,使用平台提供的解码是合规且没有版权风险的 。
当分辨率达到4K甚至8K级别,8核甚至更多核的CPU也会卡到掉帧 。
(FFMPEG的解码流程,图片来自知乎@我是小北挖哈哈)
根据FFMPEG的解码流程如上图(参考:),可知道,FFMPEG除了实现了软解,其实已经完整实现了硬解功能,然而Chromium的FFMpegVideoDecoder并不支持硬解,因此,同组同学@豪爽,首先尝试FFMpegVideoDecoder内尝试配置hw_device_ctx,以开启其硬解能力,具体步骤如下:
开启硬解宏:
设置硬件上下文:
取出解码数据:
将硬件解码得到的数据取出,即av_hwframe_transfer_data函数:
如上,经过多次尝试后,通过活动监视器可以观察到点击

推荐阅读