相对软件Codec来说,人们对硬件Codec的应用并不太熟悉。本次LiveVideoStackCon 2021 上海站大会我们邀请到了来自英特尔的媒体工程师——许广新,来为我们分享Intel在硬件编解码器中的最新研发进展。
文 / 许广新
整理 / LiveVideoStack
谢谢大家,下午来参加讨论。我是Intel开发者软件工程部门的工程师许广新,我们team主要负责多媒体框架,我们与开源FFmpeg/GStreamer社区有良好的合作关系。FFmpeg官方Twitter曾经赞扬过我们说:“如果这些大公司都能像Intel一样,都能给他们贡献pacth,该有多好。”我们team也有GStreamer在中国的第一个maintainer。
今天我们先给大家做一些基本的介绍,然后讨论Intel最新的硬件功能,第三,会让大家看一下Intel的独立显卡在HEVC的transcode的质量和性能。第四,我会简单介绍一下FFmpeg的hardwork codecs的工作流程。第五,介绍我们提供的两个Post Process,一个是FFmpeg DNN,一个是LibXCam。最后我会介绍如何在Intel的GPU上面,搭建一个优化的硬件视频pipeline,怎么发现硬件管线的问题。
图中就是一个基本的FFmpeg/GStreamer的pipeline,一般会包括一个基本的输入、video parser、video decoder、video process、video encoder,以及最后的输出。今天我们会分享video parser和video codec的内容。
接下来简单介绍一下,为什么会使用硬件codec?其中一个好处是,低延时和高吞吐。我记得我年轻的时候,解码一个VCD 352*240分辨率,就需要买一个单独的解码卡,但是现在买一个笔记本,解码几十路、近百路的1080p视频,可能一点问题都没有。硬件codec还有一个好处是,CPU的使用率会降低,会大量节省电源的消耗。但是它也有不好的地方。一个是,它很难跟软件encoder的最高质量模式竞争。因为客户对一般硬件编码器不是很熟悉,有很多厂商从下到下都是闭环的,很难去做定制化。但是,在Intel的平台上,我们从上到下,从driver到中间件、FFmpeg都是开源的,能在一定程度上帮助大家。大家需要对Intel硬件有一定的了解,才能去做定制化。所以,硬件codec大概的用途有video play,现在市面上看到的播放器都会用硬件来播放,很少用软件,否则CPU就会全部占用了。还有流媒体、云游戏的用途,以及对时延要求非常高的video encoder。