第一章:初始安装ffmpeg
在CentOS操作系统上安装FFmpeg的方法如下:
- 更新系统软件包:
sudo yum update
- 安装必要的依赖软件:
sudo yum install autoconf automake freetype-devel gcc gcc-c++ git libtool make mercurial nasm pkgconfig zlib-devel x264-devel lame-devel
- 下载源代码:
git clone https://github.com/FFmpeg/FFmpeg.git
- 进入FFmpeg目录:
cd FFmpeg
- 配置并生成构建脚本:
./configure
- 构建并安装FFmpeg:
make
sudo make install
- 完成安装后,可以通过在终端输入
ffmpeg
来验证FFmpeg是否已正确安装。
按照以上步骤基本可以将ffmpeg程序以缺省授权是LGPL v2的方式安装至CentOS操作系统中。但是在实际应用过程中,需要使用LGPL v3、GPL授权的模块或者某些不遵循自有软件授权协议的模块,所以必须在运行configure时显式使能相应的选项。形如:–enable-version3 –enable-gpl –enable-nonfree。
另外,缺省配置是生成静态库而不生成动态库,如果希望禁止静态库、生成动态库都需要显式指定形如:–disable-static –enable-shared –enable-pic 。
其次,模块控制选项,筛选参与编译的模块,包括整个库的筛选,例如:–disable-avdevice。一组模块的筛选,例如:–disable-decoders。单个模块的筛选,如:–disable-decoder。mp3音频功能,例如:–enable-libmp3lame。字幕字体功能,例如:–enable-libfontconfig。滤镜功能,例如:–enable-libfreetype。H.264视频编码器功能,例如:–enable-libx264。以及其他:–enable-zlib … 等
最后,其他安装选项配置,标准选项配置(用于指定路径,函数库等);专家级选项,允许开发者进行深度定制,如交叉编译环境的配置、自定义编译器参数的设定、指令级优化、debug控制等。
github的INSTALL.md文件中未查询到相关的描述。因此出现了第二章处理环节。
第二章:扩展安装ffmpeg
- 安装相关模块控制。
可以先清理编译参数缓存:cd FFmpeg;make clean;
构建之前可以阅读帮助文档:
./configure --help;
配置并生成构建脚本:
./configure --enable-version3 --enable-gpl --enable-nonfree --enable-shared --enable-gpl --enable-pic --enable-libmp3lame --enable-libfontconfig --enable-libfreetype --enable-zlib --enable-libx264
- ffmpeg执行遇上的报错
- No such filter: ‘drawtext’。产生该问题的原因是:drawtext这个filter没有被编译进ffmpeg的库里面,通过源码编译安装时,打开相关配置即可:例如:–enable-libfreetype
- Unrecognized option ‘crf’.Error splitting the argument list: Option not found(Unrecognized option ‘preset’.Error splitting the argument list: Option not found)产生该问题的原因是:使用ffmpeg时使用到了编码器libx264,但在实际的编译过程中没有指定打开编译libx264参数,从而产生报错。编译时打开相关配置即可:例如:–enable-libx264
- error while loading shared libraries: xxx.so.xx:cannot open shared object file: No such file or directory。产生该问题的原因是:系统不知道xxx.so放在哪个目录下,这时候就要在/etc/ld.so.conf中加入xxx.so所在的目录。保存之后,再运行:/sbin/ldconfig -v更新一下配置即可。
- 编译遇上报错
- 由于安装的模块不一致,由于安装的顺序问题,可能出现ERROR: xxx not found using pkg-config。可以尝试在运行 configure 脚本时禁用 pkg-config 检测。可以通过将 –pkg-config-flags=–static 选项添加到 configure 脚本中来禁用 pkg-config 检测,例如:./configure –enable-xxxxxx –pkg-config-flags=–static
- 执行make时报错:collect2: error: ld returned 1 exit status。/usr/bin/ld: libavutil/color_utils.o: relocation R_X86_64_32S against `.rodata’ can not be used when making a shared object; recompile with -fPIC。这个错误提示是链接期间的错误,表明 libavutil/color_utils.o 对象文件中的某些符号无法使用,这可能是由于缺少 -fPIC 标志导致的。要解决此问题,可以尝试以下方法:在 configure 脚本中使用 –enable-pic 选项启用位置无关代码 (PIC):
- ---原文链接:ffmpeg安装问题记录
版权归原作者 d9g_bj 所有, 如有侵权,请联系我们删除。