当前位置:首页 > Windows程序 > 正文

灵跃桌面云利用上述API可以有效加速视频解码和图像处理

2024-03-31 Windows程序

转载自 灵跃云 :原文链接 

1. 写在前面

         硬件加速即操作GPU来完成图形相关的操纵,将CPU空闲出来措置惩罚惩罚其他事务,出格是在CPU性能不敷的情况下,此类操纵就更须要了。在视频措置惩罚惩罚上,DXVA是微软定制的视频加速规范,而在Linux 平台上则是由NVIDIA和Intel分袂供给的VDPAU和VAAPI加速规范。灵跃桌面云操作上述API可以有效加速视频解码和图像措置惩罚惩罚,降低系统CPU占用,提升系统性能。

2. 实现方案

         针对Intel CPU X86架构平台,可给与FFmpeg+VAAPI的硬解方案。此中,FFmpeg用于措置惩罚惩罚各类格局的视频解码;VAAPI则供给对硬件加速视频措置惩罚惩罚的访谒,措置惩罚惩罚流程图如下。 

技术分享图片

2.1 相关环境部署

 (一)安置依赖包

# apt-get install autoconf automake debhelper ladspa-sdk libsoundio-dev libbluray-dev libbs2b-dev libcaca-dev libcdio-paranoia-dev libdvdnav-dev libdvdread-dev libegl1-mesa-dev libenca-dev libfontconfig1-dev libfreetype6-dev libfribidi-dev libgl1-mesa-dev libgbm-dev libgme-dev libgnutls28-dev libgsm1-dev libguess-dev libharfbuzz-dev libjack-jackd2-dev libjpeg-dev liblcms2-dev liblircclient-dev liblua5.3-dev libmodplug-dev libmp3lame-dev libnetcdf-dev libopenal-dev libopus-dev libopencore-amrnb-dev libopencore-amrwb-dev libpulse-dev librtmp-dev librubberband-dev libschroedinger-dev libsmbclient-dev libssh-dev libsoxr-dev libspeex-dev libtheora-dev libtool libtwolame-dev libuchardet-dev libv4l-dev libva-dev libvorbis-dev libvo-amrwbenc-dev libvpx-dev libwavpack-dev libx264-dev libx265-dev libx11-dev libxext-dev libxinerama-dev libxrandr-dev libxss-dev libxv-dev libxvidcore-dev pkg-config python python-docutils x11proto-core-dev yasm zlib1g-dev

(二)安置libva

进入当前用户目录,并下载libva源码包:

# cd ~

#git clone https://github.com/01org/libva.git

进入libva文件夹中,

#cd libva

切换到1.7.3版本:

# git checkout libva-1.7.3

执行编译安置:

./autogen.sh && ./configure && make && make install

运行vainfo检察执行功效

技术分享图片

图中红框内暗示当前所撑持硬解的视频压缩格局。

(三)安置FFmpeg

进入灵跃桌面云当前用户目录,并下载FFmpeg源码包

# cd ~

#git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg

进入FFmpeg文件夹中,

#cd ffmpeg

执行编译安置

./configure --disable-static --enable-shared --enable-gpl --enable-version3 --disable-debug --enable-vaapi &&make && make install

最后执行ffmpeg检察执行功效。

技术分享图片

2.2 代码实现 (一)视频播放道理

简单来说,视频播放器在播放本地视频文件需要经历以下法式:解封装,解码,音视频帧同步,最终会把数据投递到对应的驱动设备,,具体过程如下图所示:

技术分享图片

 

(二)VAAPI解码流程

当措施把视频的压缩数据通报到VAAPI解码模块时,会按照视频的压缩格局(如H.264.MPEG-2等)创建对应的VADecoder,然后把数据送入VADecoder进行解码,最后由vaPutSurface来措置惩罚惩罚视频解码后的合成和衬着,具体过程如下:

技术分享图片

(三)具体实现

基于VAAPI和FFmpeg的解码流程图如下:

技术分享图片

由于灵跃桌面云使用的FFmpeg的版本是3.3版本,里面集成了VAAPI中对视频的细节措置惩罚惩罚,所以只需要在AVCodecContext的get_format回调函数中指定硬解参数,解码后的视频数据会存储在GPU内存中,通过vaPutSruface函数来措置惩罚惩罚后期的合成和图像衬着,下图为窗口创建和图像措置惩罚惩罚的过程图:

技术分享图片

3. 测试功效

本次测试为比拟使用GPU硬解和CPU软解的CPU占用率,视频参数:辨别率1920*1080 、帧率25FPS、编码格局H.264。灵跃桌面云依据测试功效可以看出,使用GPU硬解能大大降低CPU使用率,同时画面输出越发清晰流畅。

解码类型

 

CPU占用百分比

 

基于VAAPI的GPU硬解

 

4%

 

基于CPU软解

 

50%

 

4. 写在最后

         至此,灵跃桌面云基于VAAPI 的硬件加速技术介绍完毕。

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/35855.html

Jm-杰米博客Jamie
草根站长的技术交流乐园!IT不会不要紧快来好好学习吧!
  • 20786文章总数
  • 7494590访问次数
  • 建站天数
  • 友情链接