Hướng Dẫn Biên Dịch FFmpeg 6.1 Trên Ubuntu Với Hỗ Trợ drawtext, libx264, libx265 và nv-codec

Yêu Cầu Quan Trọng Cho drawtext

Để kích hoạt bộ lọc drawtext, bạn cần bao gồm các tùy chọn sau:

  • --enable-libharfbuzz
  • --enable-libfontconfig
  • --enable-libfreetype

Cài Đặt libx265


# Tải và giải nén mã nguồn x265
curl -O http://ftp.videolan.org/pub/videolan/x265/x265_2.6.tar.gz
tar -xvf x265_2.6.tar.gz
cd x265_v2.6/build/linux/

# Biên dịch và cài đặt
./make-Makefiles.bash
make
sudo make install

Cài Đặt nv-codec-headers


# Clone repository mã nguồn
git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
cd nv-codec-headers/

# Biên dịch và cài đặt
make
sudo make install

Biên Dịch FFmpeg


# Tải FFmpeg 6.1
wget https://ffmpeg.org/releases/ffmpeg-6.1.tar.gz
tar zxvf ffmpeg-6.1.tar.gz
cd ffmpeg-6.1

# Cấu hình với các thư viện hỗ trợ
./configure --prefix=/usr \
--toolchain=hardened \
--libdir=/usr/lib/x86_64-linux-gnu \
--incdir=/usr/include/x86_64-linux-gnu \
--arch=amd64 \
--enable-gpl \
--disable-stripping \
--disable-librav1e \
--enable-gnutls \
--enable-ladspa \
--enable-libaom \
--enable-libass \
--enable-libcodec2 \
--enable-libdav1d \
--enable-libflite \
--enable-libfontconfig \
--enable-libfreetype \
--enable-libvpx \
--enable-libx265 \
--enable-libxml2 \
--enable-libx264 \
--enable-shared \
--enable-libharfbuzz \
--enable-cuda \
--enable-cuvid

# Biên dịch với số lượng core tối đa
make -j$(nproc)

# Cài đặt
sudo make install

Cài Đặt Các Thư Phụ Thuộc Cần Thiết

Nếu gặp lỗi thiếu thư viện, hãy cài đặt các gói dev tương ứng:


sudo apt-get install nasm
sudo apt-get install libgnutls28-dev
sudo apt-get install ladspa-sdk libc6-dev
sudo apt-get install libaom-dev
sudo apt-get install libass-dev
sudo apt-get install libcodec2-dev
sudo apt-get install libdav1d-dev
sudo apt-get install flite1-dev libflite1
sudo apt-get install libvpx-dev
sudo apt-get install libx264-dev
sudo apt-get install libxml2-dev

Sửa Lỗi Trong Mã Nguồn

Đôi khi bạn cần chỉnh sửa một số file nguồn để khắc phục lỗi:


# Sao lưu file gốc
cp libavcodec/nvenc.c libavcodec/nvenc.c.backup

# Sửa lỗi bằng sed
sed -i 's/hevc->pixelBitDepthMinus8/hevc->pixelBitDepthMinus8/g' libavcodec/nvenc.c
sed -i 's/av1->inputPixelBitDepthMinus8/av1->inputPixelBitDepthMinus8/g' libavcodec/nvenc.c
sed -i 's/av1->pixelBitDepthMinus8/av1->pixelBitDepthMinus8/g' libavcodec/nvenc.c

# Sửa lỗi định dạng buffer
sed -i 's/NV_ENC_BUFFER_FORMAT_YV12_PL/NV_ENC_BUFFER_FORMAT_YV12/g' libavcodec/nvenc.c
sed -i 's/NV_ENC_BUFFER_FORMAT_NV12_PL/NV_ENC_BUFFER_FORMAT_NV12/g' libavcodec/nvenc.c
sed -i 's/NV_ENC_BUFFER_FORMAT_YUV444_PL/NV_ENC_BUFFER_FORMAT_YUV444/g' libavcodec/nvenc.c

Cập Nhật NVIDIA Video Codec SDK (Khuyến Nghị)

Bước 1: Tải SDK Mới Nhất


# Tải từ NVIDIA
wget https://developer.nvidia.com/video-sdk-archive -O nvidia-sdk.html

# Hoặc clone từ GitHub
git clone https://github.com/NVIDIA/video-sdk-samples.git

Bước 2: Cài Đặt SDK Mới


# Giải nén SDK
tar -xzf Video_Codec_SDK_*.tar.gz

# Sao chép header files
sudo cp -r Video_Codec_SDK_*/Interface/* /usr/local/include/
sudo cp -r Video_Codec_SDK_*/Interface/* /usr/include/

# Xóa file cũ
sudo rm -f /usr/include/nvEncodeAPI.h
sudo rm -f /usr/local/include/nvEncodeAPI.h

# Sao chép file mới
sudo cp Video_Codec_SDK_*/Interface/nvEncodeAPI.h /usr/local/include/
sudo cp Video_Codec_SDK_*/Interface/nvEncodeAPI.h /usr/include/

Thẻ: ffmpeg Ubuntu biên dịch drawtext libx264

Đăng vào ngày 4 tháng 6 lúc 19:19