less than 1 minute read

功能:跨平台的音视频处理库;
官网 https://www.ffmpeg.org/
github:https://github.com/FFmpeg/FFmpeg

1 标准编译

# 进入根目录  
./configure --extra-cflags=-fPIC --enable-shared  
make -j4  // 4 是 cpu 核数,按需设置  
sudo make install  
# sudo ldconfig

如需扩展功能,则先编译扩展库,再编译 ffmpeg

2 扩展功能

./configure   
--prefix=/usr/local     // 编译好的库,在 install 时去往的地方  
--enable-shared         // 输出动态库
--enable-static         // 输出静态库
--enable-debug          // 支持调试
--enable-libx264   
--enable-libmp3lame     // 编码 mp3;即可以写 mp3 文件  
--disable-optimizaitons // 去优化,因为有时候系统优化后,调试时不再按函数的顺序执行  
--disable-stripping     // 这样就可以进入调用函数进行单步调试,不然无法单步进入函数进行单步调试  
--enable-gpl            // 是为了支持编译x264  

更多选项参见 ffmpeg 编译选项汇总

2.1 mp3

官网:https://sourceforge.net/projects/lame
同一个音频文件,保存成 wav 格式的文件大小是 mp3 格式的 10+倍;

下载 lame,解压后进入根目录;

./configure --prefix=/usr/local --enable-shared --enable-static --enable-debug  

2.1 x264

下载x264的源码;
解压后进入x264目录;

./configure --prefix=/usr/local --enable-shared --enable-static --enable-debug --disable-asm;  

2.2 NVENC

编译 ffnvcodec

git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
cd nv-codec-headers
make
make install PREFIX=./install

配置环境变量

# 修改 ${path}/install/lib/pkgconfig/ffnvcodec.pc 文件 prefix=${path}/install
export LD_LIBRARY_PATH=${path}/install/lib/pkgconfig:$LD_LIBRARY_PATH
# 或者 export PKG_CONFIG_PATH=${path}/install/lib/pkgconfig:$PKG_CONFIG_PATH
./configure --prefix=/usr/local --enable-shared --enable-static --enable-nvenc

解决报错

查看结果 ./ffmpeg -decoders | grep h264,出现 h264_cuvid 即为成功;

3 查看相应功能

查看 mp3 相关的库:ffmpeg -codecs | grep mp3,检查是否有相关编码器


TOP

附录

A 参考资料

B 1. 编译报错

1. NVENC
ERROR: nvenc requested, but not all dependencies are satisfied: ffnvcodec
${path}/install/lib/pkgconfigffnvcodec.pc 文件内 include 路径找不到,改成绝对路径即可;

Comments