第二章 编译FFmpeg并开启H.264编码
目录
这里我默认大家已经看过 第一章 FFmpeg初体验:在Centos7.9下编译FFmpeg!【如果没有那还不赶紧去看!】
前言
FFmpeg本身并不支持H.264编码器,而是采用集成第三方模块的方式来支持。要想在FFmpeg中开启H.264编码,可以采用x264和OpenH264这两个编码器。二者各有千秋,不过目前主流的H.264编码器还是x264。
安装环境:
操作系统 | OpenEuler 22.03 LTS SP4 |
---|---|
硬件内存 | 8G内存 |
硬盘大小 | 128G硬盘 |
1. 下载x264
git clone http://git.videolan.org/git/x264.git
2. 编译x264
cd x264
./configure --enable-static --prefix=/usr/local/x264
--enable-static
:这个选项告诉配置脚本,在编译x264库时,应该生成静态库。静态库是包含在最终可执行文件中的,这意味着当你的程序运行时,不需要单独的库文件。--prefix=/usr/local/x264
是指定x264库安装后的根目录。这意味着所有的文件(包括库文件、头文件、文档等)都会被安装到/usr/local/x264
目录下。这样做的好处是,可以将软件安装到非标准位置,从而避免与系统自带软件发生冲突或者在不影响系统其他部分的情况下轻松地卸载软件。
3. 编译FFmpeg
./configure --enable-libx264 --enable-gpl
--enable-libx264
:这个选项告诉配置脚本,在编译过程中包含对x264编码库的支持。--enable-gpl
:这个选项表明你接受GNU通用公共许可证(GPL)。x264是按照GPL许可证发布的,启用这个选项是为了确保你的项目与x264库的许可证兼容。
make -j$(nproc) && make install
-j
:这是make
命令的一个选项,用于指定并发执行的任务数。-j
后面通常跟着一个数字,表示同时运行的作业数。$(nproc)
:这是一个 shell 命令替换,它会展开为当前系统上的处理器核心数。例如,如果系统有4个核心,那么-j$(nproc)
将展开为-j4
,告诉make
同时运行4个编译任务。这样做可以显著加快编译速度,因为它充分利用了多核处理器的优势。
3.1 可能出现的问题和解决方法
3.1.1 ERROR: x264 not found using pkg-config
解决方法:
由于我们使用--prefix
指定了路径,那么我们已经知道了x264的安装路径是在/usr/local/x264
在/usr/local/x264/lib/pkgconfig/
目录下有个x264.pc
文件,只需要将它复制到/usr/share/pkgconfig/
下即可。(pkg-config默认会搜索这个路径)
cp /usr/local/x264/lib/pkgconfig/x264.pc /usr/share/pkgconfig/
3.1.2 libx264 is gpl and --enable-gpl is not specified.
解决方法:
只需要在configure后面再加上--enable-gpl
就可以了。
如:
./configure --enable-libx264 --enable-gpl
因为x264是按照GPL许可证发布的,启用这个选项是为了确保能与x264库的许可证兼容。
4. 检查编译结果
ffmpeg -h encoder=libx264
返回结果:
Encoder libx264 [libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10]:
General capabilities: dr1 delay threads
Threading capabilities: other
Supported pixel formats: yuv420p yuvj420p yuv422p yuvj422p yuv444p yuvj444p nv12 nv16 nv21 yuv420p10le yuv422p10le yuv444p10le nv20le gray gray10le
libx264 AVOptions:
....................................
....................................
如果返回结果是这样就说明你的FFmpeg已经支持H.264编码啦~
本文来自博客园,作者:CyunZing,转载请注明原文链接:https://www.cnblogs.com/cyunzing/p/18305367