视频硬编码笔记

由于项目要求,需要对1080P以及4K的视频实时编解码,编码格式为H265。首先使用X265编码测试,无奈平均编码速度仅有6.08fps,远远无法满足实时性的要求。之后依次使用Intel与nvidia的硬编码测试效果,总算满足了实时编码的要求,下面把整个过程做一个记录。整个过程均使用ffmpeg实现,不清楚ffmpeg的请参考雷神的博客FFMPEG视音频编解码零基础学习方法

所谓硬编码,我的理解就是硬件加速编码,intel硬编码是使用其集显中的视频编解码模块加速,同理nvidia硬编码使用nvidia显卡中的视频编解码模块进行加速。在命令行中使用 ffmpeg -hwaccels 可以查看ffmpeg支持的硬件加速方法。

图一.ffmpeg支持的硬编码方法

Intel硬编码

Intel硬编码使用Intel处理器内部集成的显卡进行硬件加速,图一中的qsv加速方法便对应着Intel硬编码。测试中发现Intel硬编码对H.264加速效果明显,且不需要安装额外库(仅使用相应的ffmpeg命令):

ffmpeg -y -i infile -vframes 2000 -b:v 8000K -vcodec h264_qsv -preset veryfast output.h264

使用Intel编码h265文件,需要额外安装Intel® Media SDK,之后使用下图中的命令进行编码,或直接查看官方文档

图二.Intel加速h265编码
不知道是不是自己哪儿出错了,使用Intel加速h265编码之后,编码效率并未见到明显提高,后续也没有仔细研读其官方文档,转向了NVIDIA加速的方法

NVIDIA硬编码

顾名思义,NVIDIA硬编码使用英伟达的显卡对视频编码进行加速。在正确使用英伟达硬编码之前需要安装CUDA英伟达的必要驱动
安装好以上两个环境后就可以使用NVIDIA的硬编码了,编码H264格式命令为

ffmpeg -f rawvideo -s:v 1920x1080 -r 30 -pix_fmt yuv420p -i <input.yuv> -c:v h264_nvenc -preset slow -cq 10 -bf 2 -g 150 <output.h264>

编码H265格式命令为:

ffmpeg -f rawvideo -s:v 1920x1080 -r 30 -pix_fmt yuv420p -i <input.yuv> -vcodec hevc_nvenc -preset slow -cq 10 -g 150 <output.h265>

使用英伟达加速后速度明显上升,H265编码帧率达到180+fps。具体资料参考英伟达官网给出的教程NVIDIA/FFMPEG

Ubuntu 上编译支持CUDA硬编码的ffmpeg

  1. Clone ffnvcodec git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
  2. Install ffnvcodec cd nv-codec-headers && sudo make install
  3. 下载源码 ffmpeg download 官网下载速度比GitHub上快很多,推荐官网下载
  4. Install necessary packages sudo apt-get install build-essential yasm cmake libtool libc6 libc6-dev unzip wget libnuma1 libnuma-dev
  5. Configure sudo ./configure --prefix="$HOME/ffmpeg_build" --pkg-config-flags="--static" --extra-cflags="-I$HOME/ffmpeg_build/include" --extra-ldflags="-L$HOME/ffmpeg_build/lib" --extra-libs="-lpthread -lm" --bindir="$HOME/bin"
  6. sudo make
  7. sudo make install
  8. 测试是否安装成功 ffmpeg -h encoder=h264_nvenc or ffmpeg -h encoder=hevc_nvenc

参考资料


结语:以上只是简要地记录了整个试验过程,文中给出地链接都是官方教程中的,部分可能需要梯子才能访问。试验中遇到的很多问题都是因为环境没有配置好引起的,走了很多弯路,所以记录下来备忘,也方便以后的同行参考。

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值