[FFMPEG硬件加速]Intel® Media Server Studio

1.安装Linxu版本Intel Media Server Studio 2017

  • 操作系统:CentOS Linux release 7.2.1511 (Core)
  • 下载Intel Media Server Studio 2017,参考media server studio getting started guide
  • 使用install_sdk_CentOS.sh进行安装;
  • 使用 vainfo进行测试, 使用sample进行测试,若无错误,则安装成功

2.安装编译ffmpeg

  • 下载ffmpeg ,需要是2.8以后的版本才支持Intel Quick Sync Video
  • 安装参考文档quicksync-video-ffmpeg-install-valid
  • 配置FFmpeg(–enable-libmfx --enable-nonfree),编译,安装:需要拷贝头文件到/opt/intel/mediasdk/include/mfx目录,并且增加libmfx.pc文件.
  • 安装libpciaccess:apt install *pciaccess*
  • 重装 libdrm和libva
  • 查看是否编译成功:ffmpeg -codecs | grep qsv
  • 使用h264_qsv进行转码调试:
    ffmpeg -hwaccel qsv -c:v h264_qsv -vsync 0 -i udp://224.2.2.2:9000 -look_ahead 0 -pix_fmt nv12 -c:v h264_qsv -c:a copy -b:v 2M -preset veryfast -f mpegts udp://127.0.0.1:10000

2.qsv在ffmpeg中的CODEC

2.1.命令

ffmpeg -codecs | grep qsv 

2.2.decoders

h264_qsv   Supported pixel formats: nv12 p010le qsv
hevc_qsv   Supported pixel formats: nv12 p010le qsv 
mpeg2_qsv  Supported pixel formats: nv12 qsv 
vc1_qsv    Supported pixel formats: nv12 qsv

2.3.encoders

 h264_qsv  Supported pixel formats: nv12 qsv  
 hevc_qsv  Supported pixel formats: nv12 qsv 
 mpeg2_qsv Supported pixel formats: nv12 qsv

2.4.pixel formats

YV12:YUV420Planar,Y,V(Cr),U(Cb)依次占用3个平面,先V后U
IYUV,I420:YUV420Planar,Y,U(Cb),V(Cr)依次占用3个平面,与YV12的U、V平面顺序相反,先U后V;
NV12:YUV420 Semi Planar, Y,U(Cb)V(Cr)依次占用2个平面,后面是UV占用一个平面,先U再V交错的一个平面。
NV21:YUV420 Semi Planar, Y,V(Cr)U(Cb)依次占用2个平面,与NV12的UV交错平面中的UV交错顺序相反,其后面也是VU占用一个平面,先V再U交错的一个平面。

参考

Intel_Media_Developers_Guide
integrating-intel-media-sdk-with-ffmpeg-for-muxdemuxing-and-audio-encodedecode-usages
cloud-computing-quicksync-video-ffmpeg-white-paper
quicksync-video-ffmpeg-install-valid

在Visual Studio中使用FFmpeg DLL进行硬件加速,主要是为了在视频处理、播放或编码时利用GPU的能力来提高性能。FFmpeg是一个非常强大的多媒体框架,支持众多的编码和解码格式。硬件加速可以通过FFmpeg硬件加速编解码器接口来实现,例如使用NVENC、VA-API等硬件加速API。 以下是使用FFmpeg DLL进行硬件加速的基本步骤: 1. 确保你有支持硬件加速FFmpeg版本,该版本包含了相应的硬件加速库,如nvidia-encode.dll(对于NVENC)。 2. 在你的项目中配置FFmpeg DLL,确保所需的硬件加速库(如nvidia-encode.dll)被包含在项目中,并在运行时能够被正确加载。 3. 初始化FFmpeg硬件加速模块。这通常涉及到设置编码器或解码器的硬件加速选项,并提供必要的硬件上下文。 4. 在编码或解码时,使用硬件加速选项来指导FFmpeg使用GPU进行操作。 5. 通过适当的错误检查和资源管理,确保在处理完视频后正确释放所使用的硬件加速资源。 示例代码(以C++为例): ```cpp extern "C" { #include <libavcodec/avcodec.h> #include <libavcodec/nvenc.h> } // 初始化NVENC硬件加速编码器 void initializeNVENC(AVCodecContext* codecContext) { // 检查是否支持NVENC if (!avcodec_find_encoder_by_name("h264_nvenc")) { // 报错处理 } // 设置编码器的硬件加速相关参数 codecContext->hwaccel = av_hwaccel_find codec("cuda"); codecContext->hwaccel_context = NULL; // 其他编码器配置... // 打开硬件加速编解码器 if (avcodec_open2(codecContext, avcodec_find_encoder_by_name("h264_nvenc"), NULL) < 0) { // 报错处理 } } // 在适当的位置调用initializeNVENC函数 ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_35804181

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值