《 空中接口学园 》 >> 无限人生 >>>> FFMPEG用GPU实现视频编码 |
-- 作者:tom -- 发布时间:2022-09-18 14:16:41 这些年视频的H.265编码逐渐普及,手机以及PC都可以支持H.265播放,有些机顶盒也把支持H.265作为一项卖点。 相对于H.264,H.265的编码效率更高,文件更加精简。不过,我们手头大量的视频都不是采用H.265来编码的,需要进行转换。 开始我用VLC来转换,后来发现VLC是调用FFMPEG来转换的,就直接用FFMPEG来转换了。 FFMPEG是基于Linux的开源软件,我对Linux还是很熟悉的,干脆就在一台Ubuntu主机上安装了FFMPEG,开始转换。 一开始采用的是基于CPU的转换,有两个问题: 第一个问题是时间太长,能做到1:1就已经很好了,通常都要耗费3、4倍的时间,感觉耗不起。 第二个问题是开销太大,CPU占用率接近100%,风扇狂转,热风狂出,这样下去感觉CPU很难撑住。 于是,就想到了基于GPU的转换。 我这台Ubuntu主机是Intel的CPU,GPU支持视频的编码和转换。 花了好几天,网上也查阅各种资料,了解到有很多途径可以驱动和使用GPU,最后选择了VAAPI,并找到权威的参考点:http://trac.ffmpeg.org/wiki/Hardware/VAAPI 1. Build and install LibVA (https://github.com/intel/libva) 动了一些小脑筋,比如提示No VA display found for device /dev/dri/renderD128,就用sudo去运行ffmpeg,最终实现了GPU的视频的编码和转换。 效果非常明显:CPU的利用率降低到25%,转换效率提升到5:1以上,也就是耗时1/5。 个人感觉,还是一个非常大的成就。 -- 作者:tom -- 发布时间:2022-09-20 19:51:11 这段时间对各种分辨率的视频转换时间记录了一下,大致是: 1080P:CPU转换的效率为3:1,GPU转换的效率为1:2,效率提升6倍左右; DVD:CPU转换的效率为1:2,GPU转换的效率为1:6,效率提升3倍左右; 看来视频分辨率越高,GPU转换的效果越明显。 目前已经有2条评论 >>> 发表你的见解 |
Powered by:Old version Copyright ©2002 - 2019空中接口学园 , 页面执行时间:30.762毫秒 |