Ubuntu系統+x86架構+編譯安裝ffmpeg+帶有nvidia硬件加速
一、準備文件
注:可直接下載我上傳的CSDN資源,然后直接跳到"一"中的第"3"項"將文件按以下順序存放"。
ffmpeg源碼:音視頻開發+ffmpeg+編譯所需資源文件
其他文件:音視頻開發+ffmpeg+x86/Arm+編譯所需庫文件(fdk-aac-2.0.2,lame-3.99.5,opencore)
nvidia硬件加速文件:音視頻開發+ffmpeg+x86/Arm+編譯所需文件(使用nvidia硬件加速)
1.ffmpeg源碼下載
官網下載
網址:
http://ffmpeg.org/download.html#releases
操作:
點擊FFmpeg 4.4.3 “Rao"下的"Download xz tarball”
下載得到ffmpeg-4.4.3.tar.xz壓縮文件
注:本教程使用的ffmpeg4.4.3,官網找不到也可以使用其他版本。
2.其他文件
(1)fdk-aac-2.0.2.tar.gz
官網下載
網址:
https://www.linuxfromscratch.org/blfs/view/svn/multimedia/fdk-aac.html
(2)lame-3.99.5.tar.gz
官網下載
網址:
https://sourceforge.net/projects/lame/files/lame/3.99/
(3)opencore-amr-0.1.6.tar.gz
官網下載
網址:
https://sourceforge.net/projects/opencore-amr/files/opencore-amr/
(4)nv-codec-headers.zip
執行
git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
3.將文件按以下順序存放
新建"ffmpeg"目錄與"ffmpegOtherFiles"目錄
mkdir ffmpeg && \
mkdir -p ffmpeg/ffmpegOtherFiles
"ffmpeg-4.4.3.tar.xz"放入ffmpeg目錄
“fdk-aac-2.0.2.tar.gz”,“lame-3.99.5.tar.gz”,"opencore-amr-0.1.6.tar.gz"放入ffmpegOtherFiles目錄
"nv-codec-headers.zip"放入ffmpeg目錄
二、更新、安裝基礎依賴
sudo apt update && \
sudo apt upgrade -y && \
sudo apt install -y build-essential cmake python
三、安裝configure依賴
1.終端apt依賴
sudo apt install -y gnutls-dev \
libass-dev \
libdrm-dev \
libopus-dev \
libpulse-dev \
libspeex-dev \
libtheora-dev \
libtwolame-dev \
libv4l-dev \
libvorbis-dev \
libvpx-dev \
libx264-dev \
libx265-dev \
libxvidcore-dev \
libopenal-dev \
libomxil-bellagio-dev \
libxcb1-dev \
libsdl2-dev \
libva-dev \
libvdpau-dev
2.其他依賴
進入"ffmpegOtherFiles"目錄
cd ffmpeg/ffmpegOtherFiles
解壓編譯安裝依賴
tar -xvf fdk-aac-2.0.2.tar.gz && \
cd fdk-aac-2.0.2 && \
./configure --prefix=/usr --disable-static && \
make -j12 && \
sudo make install && \
cd .. && \
tar -xvf lame-3.99.5.tar.gz && \
cd lame-3.99.5 && \
./configure --prefix=/usr --disable-static && \
make -j12 && \
sudo make install && \
cd .. && \
tar -xvf opencore-amr-0.1.6.tar.gz && \
cd opencore-amr-0.1.6 && \
./configure --prefix=/usr --disable-static && \
make -j12 && \
sudo make install
3.nvidia硬件加速
cd ffmpeg
unzip nv-codec-headers.zip
cd nv-codec-headers
make -j $(nproc)
sudo make install
四、配置
1.解壓文件
cd ffmpeg
tar -xvf ffmpeg-4.4.3.tar.xz
cd ffmpeg-4.4.3
sed -i "s/compute_30,code=sm_30/compute_86,code=sm_86/g" configure
注:電腦顯卡為3050,所以是86,需要根據你的顯卡算力進行修改
可在此網站查看:顯卡算力查看
2.開始配置
./configure --prefix=/usr/local/ffmpeg \
--disable-debug \
--disable-doc \
--disable-static \
--enable-cuda-nvcc \
--enable-cuvid \
--enable-libdrm \
--enable-ffplay \
--enable-gnutls \
--enable-gpl \
--enable-libass \
--enable-libfdk-aac \
--enable-libfontconfig \
--enable-libfreetype \
--enable-libmp3lame \
--enable-libnpp \
--enable-libopencore_amrnb \
--enable-libopencore_amrwb \
--enable-libopus \
--enable-libpulse \
--enable-sdl2 \
--enable-libspeex \
--enable-libtheora \
--enable-libtwolame \
--enable-libv4l2 \
--enable-libvorbis \
--enable-libvpx \
--enable-libx264 \
--enable-libx265 \
--enable-libxcb \
--enable-libxvid \
--enable-nonfree \
--enable-nvenc \
--enable-omx \
--enable-openal \
--enable-opencl \
--enable-runtime-cpudetect \
--enable-shared \
--enable-vaapi \
--enable-vdpau \
--enable-version3 \
--enable-xlib \
--extra-cflags=-I/usr/local/cuda/include \
--extra-ldflags=-L/usr/local/cuda/lib64 \
--libdir=/usr/lib/x86_64-linux-gnu \
--incdir=/usr/include/x86_64-linux-gnu \
--disable-asm \
--disable-x86asm \
--extra-cflags=-fPIC \
--toolchain=hardened \
--disable-stripping \
--extra-cflags=-I/usr/local/include/ffnvcodec
五、編譯安裝
1.編譯
make -j $(nproc)
2.安裝
sudo make install
六、配置環境
1.鏈接
sudo ln -s /usr/local/ffmpeg/bin/ffmpeg /usr/bin/ffmpeg && \
sudo ln -s /usr/local/ffmpeg/bin/ffprobe /usr/bin/ffprobe && \
sudo ln -s /usr/local/ffmpeg/bin/ffplay /usr/bin/ffplay && \
sudo ln -s /usr/local/ffmpeg/bin/ffmpeg /usr/local/bin/ffmpeg && \
sudo ln -s /usr/local/ffmpeg/bin/ffprobe /usr/local/bin/ffprobe && \
sudo ln -s /usr/local/ffmpeg/bin/ffplay /usr/local/bin/ffplay
2.庫
寫入設置
sudo sh -c "echo '/usr/local/ffmpeg/lib' >> /etc/ld.so.conf.d/ffmpeg.conf"
更新設置
sudo ldconfig
七、驗證安裝
查看ffmpeg支持信息
ffmpeg -hwaccels
執行結果如下:
ffmpeg version 4.4.3 Copyright (c) 2000-2022 the FFmpeg developersbuilt with gcc 7 (Ubuntu 7.5.0-3ubuntu1~18.04)configuration: --prefix=/usr/local/ffmpeg --disable-debug --disable-doc --disable-static --enable-cuda-nvcc --enable-cuvid --enable-libdrm --enable-ffplay --enable-gnutls --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfontconfig --enable-libfreetype --enable-libmp3lame --enable-libnpp --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopus --enable-libpulse --enable-sdl2 --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libv4l2 --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxvid --enable-nonfree --enable-nvenc --enable-omx --enable-openal --enable-opencl --enable-runtime-cpudetect --enable-shared --enable-vaapi --enable-vdpau --enable-version3 --enable-xlib --extra-cflags=-I/usr/local/cuda/include --extra-ldflags=-L/usr/local/cuda/lib64 --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --disable-asm --disable-x86asm --extra-cflags=-fPIC --toolchain=hardened --disable-stripping --extra-cflags=-I/usr/local/include/ffnvcodeclibavutil 56. 70.100 / 56. 70.100libavcodec 58.134.100 / 58.134.100libavformat 58. 76.100 / 58. 76.100libavdevice 58. 13.100 / 58. 13.100libavfilter 7.110.100 / 7.110.100libswscale 5. 9.100 / 5. 9.100libswresample 3. 9.100 / 3. 9.100libpostproc 55. 9.100 / 55. 9.100
Hardware acceleration methods:
vdpau
cuda(使用nvidia硬件加速才有)
vaapi
drm
opencl
編解碼測試(使用nvidia硬件加速):
HEVC->H.264
ffmpeg -vcodec hevc_cuvid -an -gpu 0 -i <vidoe_path> -vcodec h264_nvenc -an -gpu 0 -y output.mp4
H.264->HEVC
ffmpeg -vcodec h264_cuvid -an -gpu 0 -i <video_path> -vcodec hevc_nvenc -an -gpu 0 -y output.mp4
Ubuntu系統+x86架構+編譯安裝ffmpeg+帶有nvidia硬件加速-完畢