硬件视频加速(Hardwarevideoacceleration) 通过让显卡编解码视频,从而减轻cpu负担并且还能节省电源。 当视频内容存储在硬盘、dvd、摄像机、手机或广播媒体上时,通常会被压缩并编码成特定的格式。当你想要播放、上传或复制内容到你的手机时,必须先对其进行解码,然后再以一种新的格式重新编码,这是一个耗费资源和时间的过程。硬件视频加速技术通过让显示卡来快速解码,使处理器能够完成其他任务,提高系统响应能力。 在linux上的几种实现: VideoAccelerationAPI(VAAPI)英特尔开发的规范和开源库,提供硬件加速视频的编解码。 VideoDecodeandPresentationAPIforUnix(VDPAU)是一套NVIDIA开发的,用于将部分视频解码和渲染分担给GPU来处理的开源库和API。 NVDECODENVENCODENVIDIAFermi,Kepler,MaxwellandPascal系列显卡专有的硬件加速APIintel硬件加速技术intel的开源媒体栈 MSDK:https:github。comIntelMediaSDKMediaSDK Libva:https:github。comintellibva i965driver:https:github。comintelintelvaapidriver iHDdriver:https:github。comintelmediadriverVAAPI 开源驱动: AMD:位于官方软件仓库的libvavdpaudriver和mesa两者为Radeon9500或更新的GPU提供支持。 Intel:位于官方软件仓库的libvainteldriver软件包为GMA4500系列或者更新的GPU提供支持。 NVIDIA:位于官方软件仓库的libvavdpaudriver和mesa两者为GeForce8系列和更新的GPU提供支持。位于AUR的nouveaufwAUR软件包包含从NVIDIA闭源驱动中提取出的必要的固件文件。 闭源驱动: AMD:位于AUR的libvaxvbadriverAUR〔brokenlink:archivedinaurmirror〕软件包为RadeonHD4000系列或更新的GPU提供支持。在RadeonHD5000系列或者更新的GPU上请使用catalystutilsAUR驱动;在RadeonHD4000系列上使用catalysttotalhd234kAUR作为驱动程序。 NVIDIA:位于官方软件仓库的libvavdpaudriver软件包和nvidiautils驱动为GeForce8系列或更新的GPU提供支持。 intel依赖libvainteldriver AMD依赖libvamesadriver)安装 以前整理过ubuntu下的简洁安装记录: linux下intelvaapi安装 主要是安装mediadriver及其依赖库。 检验VAAPI 运行libvautils包提供的vainfo工具来检查VAAPI的设置vainfolibvainfo:VAAPIversion0。39。4libvainfo:vagetDriverName()returns0libvainfo:Tryingtoopenusrlibdrii965drvvideo。solibvainfo:FoundinitfunctionvaDriverInit039libvainfo:vaopenDriver()returns0vainfo:VAAPIversion:0。39(libva1。7。3)vainfo:Driverversion:Inteli965driverforIntel(R)Skylake1。7。3vainfo:SupportedprofileandentrypointsVAProfileMPEG2Simple:VAEntrypointVLDVAProfileMPEG2Simple:VAEntrypointEncSliceVAProfileMPEG2Main:VAEntrypointVLDVAProfileMPEG2Main:VAEntrypointEncSliceVAProfileH264ConstrainedBaseline:VAEntrypointVLDVAProfileH264ConstrainedBaseline:VAEntrypointEncSliceVAProfileH264ConstrainedBaseline:VAEntrypointEncSliceLPVAProfileH264Main:VAEntrypointVLDVAProfileH264Main:VAEntrypointEncSliceVAProfileH264Main:VAEntrypointEncSliceLPVAProfileH264High:VAEntrypointVLDVAProfileH264High:VAEntrypointEncSliceVAProfileH264High:VAEntrypointEncSliceLPVAProfileH264MultiviewHigh:VAEntrypointVLDVAProfileH264MultiviewHigh:VAEntrypointEncSliceVAProfileH264StereoHigh:VAEntrypointVLDVAProfileH264StereoHigh:VAEntrypointEncSliceVAProfileVC1Simple:VAEntrypointVLDVAProfileVC1Main:VAEntrypointVLDVAProfileVC1Advanced:VAEntrypointVLDVAProfileNone:VAEntrypointVideoProcVAProfileJPEGBaseline:VAEntrypointVLDVAProfileJPEGBaseline:VAEntrypointEncPictureVAProfileVP8Version03:VAEntrypointVLDVAProfileVP8Version03:VAEntrypointEncSliceVAProfileHEVCMain:VAEntrypointVLDVAProfileHEVCMain:VAEntrypointEncSlice样例 ffmpegvaapih264加速样例,其他ffmpegwiki还有很多。ffmpegthreads1ifile。extvaapidevicedevdrirenderD128vcodech264vaapivfformatnv12vaapi,hwuploadoutput。mp4 代码例曾经写过的vaapi样例:解码overlay编码 vaapitest。goIntelQuickSync(QSV) 除了VAAPI之外,intel还有一项自己平台专属的硬件加速技术QSV(quicksyncvideo)。 QuickSyncVideo使用Intel图形技术专用媒体处理能力来快速编解码。 ffmpegwiki有一页qsv的介绍,但是推荐使用VAAPI(iHDi965)驱动代替libmfx。API支持情况 QSV支持访问多种不同的媒体库API: DXVA2D3D11VA:标准Windowsapi,由Intel图形驱动程序实现,以支持视频解码。 linuxlibmfx:这是intel的一个库,可以作为IntelMediaSDK的一部分安装,并且支持一些编码和解码类型。 Windowslibmfx:英特尔的图形驱动程序提供,它支持所有的编码和解码的类型。 MediaFoundation:通过英特尔图形驱动程序,支持一部分编解码类型,没有继承进ffmpeg。 VAAPIi965驱动:这是一个几乎免费的libvaVAAPI驱动程序。大多数Linux发行版都打包了它。 VAAPIiHD驱动:Linux上的libmfx后期使用了的一个修改过的libva和VAAPI驱动程序;这也可以由用户直接使用。vaapimfx比较 vaapii965 1)在大多数Linux发行版中都是作为标准打包的。 2)可运行在所有可用的硬件上,包括一些较老和较便宜的设备。 3)支持大多数编解码器。 4)通用的API,也可以使用基于Mesa的AMDNvidia硬件。 5)可与标准api(EGLOpenGL,OpenCL)交互。 libmfxiHD 1)在某些情况下,可能会提供更好的编码质量(如lookahead)。 2)在某些情况下(如MFE,特别是在Iris图形上)可能会提供更高的编码吞吐量。 3)linux和windows皆通用的API。 4)可与Intel实现的OpenCL实现交互。安装 linux下 可以安装基于vaapi开源的MediaSDK windows下 官方有驱动下载:https:software。intel。commediasdk样例 h264解码ffmpeghwaccelqsvc:vh264qsviinput。mp4fnull总结: 代码例:qsv解码overlay编码 qsvtest。go 参考资料:更多视频教程文档资料免费领取后台私信【学习】自行获取