【ffmpeg】Ubuntu16.04重新编译ffmpeg来使用h264_nvenc编码(软编nvidia加速)

目的

使ffmpeg进行视频编码时可以用到cuda加速,即h264_nvenc编码(h264编码可以在移动端进行播放)

环境

  • Ubuntu 16.04
  • Cuda 9.1

参考链接

  • https://dwijaybane.wordpress.com/2017/07/19/ffmpeg-with-nvidia-acceleration-on-ubuntu-16-04-nvenc-sdk/
  • http://developer.download.nvidia.com/compute/redist/ffmpeg/1511-patch/FFMPEG-with-NVIDIA-Acceleration-on-Ubuntu_UG_v01.pdf

前言

重新编译ffmpeg是个蛮繁琐的过程,并且由于环境的原因,会导致编译过程会出现各种各样的bug, 我只配成了我的环境。如果有出现不同的情况欢迎评论进行交流。

提前下载文件

  1. 下载NVIDIA的SDK:

https://developer.nvidia.com/nvidia-video-codec-sdk

(这是9.1版本:Video_Codec_SDK_9.1.23)可以按照cuda版本在网上找不同的版本

  1. 下载ffmpeg

https://ffmpeg.org/releases/?C=N;O=D

根据自己需要下载ffmpeg版本,我下载的ffmpeg 3.4.2.tar.bz2 (不要下载太新的 新版本需要的nvidia驱动版本高)

配置依赖

先删除ffmpeg及x264包

sudo apt-get -y remove ffmpeg x264 libx264-dev

安装依赖

sudo apt-get -y install build-essential git yasm nasm unzip wget sysstat pkg-config

安装NVENC SDK

unzip Video_Codec_SDK_9.1.23.zip
# 8.0.14 版本
# sudo cp Video_Codec_SDK_8.0.14/Samples/common/inc/*.h /usr/local/include

安装CUDA UTILITY

wget http://developer.download.nvidia.com/compute/redist/ffmpeg/1511-patch/cudautils.zip
unzip cudautils.zip
cd cudautils
make
cd ..

安装x264

git clone git://git.videolan.org/x264.git
cd x264
./configure --disable-cli --enable-static --enable-shared --enable-strip --disable-asm
make -j 4
sudo make install
sudo ldconfig
cd ..

安装ffmpeg

tar -xjvf ffmpeg-3.4.2.tar.bz2
mkdir ffmpeg_build
cd ffmpeg_build

# 中间需要安装个codec-h
git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
cd nv-codec-headers
make
sudo make install
cd ..

../ffmpeg-3.4.2/configure \
--enable-nonfree \
--enable-nvenc \
--extra-cflags=-I../cudautils \
--extra-ldflags=-L../cudautils \
--enable-gpl --enable-libx264

make -j4
make install
echo "/usr/local/ffmpeg/lib" >> /etc/ld.so.conf
ldconfig

测试安装是否成功

ffmpeg -encoders | grep 264

如果有下边这些基本就代表成功了

V..... libx264 libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (codec h264)
V..... libx264rgb libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 RGB (codec h264)
V..... nvenc NVIDIA NVENC h264 encoder (codec h264)
V..... nvenc_h264 NVIDIA NVENC h264 encoder (codec h264)

你可能感兴趣的:(ffmpeg,ubuntu,code)