FFmpeg是一个处理多媒体内容的库和工具的集合,如音频、视频、字幕和相关元数据。 此项目在FFmpeg源码的基础上,根据需求做了定制化修改。
- H264软编码 - x264
- H264硬编解码 - h264_nvenc / h264_cuvid
- H265软编码 - x265
- H265硬编解码 - hevc_nvenc / hevc_cuvid
- XAVC Intra Class 300编码
- AVS软编码 - xavs
- AVS2软编解码 - xavs2 / davs2
- RTMP/FLV支持H265和OPUS
- H265硬编码器支持写入元数据master_display和max_cll
- MP3编码 - mp3lame
- 以上库以静态库的形式链接到FFmpeg,生成的FFmpeg库为动态库
- Linux版本去掉了libpostproc的编译
- 使用的FFmpeg版本为release/4.2
- Windows版本暂未支持上述的AVS/AVS2/MP3等功能
- url: https://github.com/FFmpeg/FFmpeg.git
- branch: release/4.2
- commit id: 55a9533
- url: https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
- branch: sdk/11.0
- commit id: 9939a5b
- url: https://code.videolan.org/videolan/x264.git
- commit id: ae03d92b
- url: https://github.com/videolan/x265.git
- tag: 2.7
- commit id: 56b216f
- url: https://github.com/Distrotech/xavs.git
- commit id: 8300fbf
- url: https://github.com/pkuvcl/xavs2.git
- commit id: eae1e8b
- url: https://github.com/pkuvcl/davs2.git
- commit id: b06d758
- url: https://udomain.dl.sourceforge.net/project/lame/lame/3.100/lame-3.100.tar.gz
- version: 3.100
可选择本地编译或者使用docker容器编译(Windwos版本库的编译也在Linux环境下执行,通过交叉编译实现)
由于需要支持硬件编解码功能,编译环境需要安装cuda,推荐使用nvidia/cuda的镜像进行编译。
# 启动容器,挂载路径(如果遇到网络问题可以加上--net=host选项后启动)
docker run -it -v ~/FFmpeg/:/FFmpeg nvidia/cuda:11.1-cudnn8-devel-ubuntu18.04 /bin/bash
sudo apt update
sudo apt install -y pkg-config build-essential cmake nasm yasm
sudo apt install -y mingw-w64
cd FFmpeg
./build_linux.sh
# or
./build_windows.sh