目录
3.1 报错:No working C compiler found.
3.2 报错:gcc.exe: fatal error: no input files
前言
x264 是一个自由软件库和应用程序,用于将视频流编码为 H.264/MPEG-4 AVC 压缩格式,并根据GNU GPL的条款发布。在H.264编码方面性能非常优秀,但是在版权方面比另外一个开源库OpenH264要受限。
正文
1. 下载源码
代码同步命令如下:
git clone https://code.videolan.org/videolan/x264.git
同步代码,切换到稳定分支。
另外,个人感觉,官网地址也有比较记录一下:x264, the best H.264/AVC encoder - VideoLAN
2. windows平台编译
今天先简单介绍一下windows平台下的编译过程,编译方法和命令如下:
cd x264
mkdir build && cd build
../configure
make
其实,configure 是一个可执行的 POSIX sh 脚本,执行后会产生 gmake 的配置文件 Makefile,命令后边可以设置很多参数,比如:
--help | -h | 查看../configure 的使用帮助 |
--prefix=DIR | 指定安装目录。默认是/usr/local/ |
--host=HOST | 设置目标程序运行的CPU平台 一般不需要设置,通常在 默认与宿主机一样 |
--cross-prefix=PREFIX | 设置 |
--with-sysroot=DIR | 设置 一般不需要设置,通常在 |
--enable-static | 编译生成静态库 |
--enable-shared | 编译生成动态库 |
3. 疑难问题
3.1 报错:No working C compiler found.
报错截图:
解决:
执行 configure 脚本时,增加 --host=mingw32 配置参数。
截图:
3.2 报错:gcc.exe: fatal error: no input files
报错截图:
解决:
再次执行 make 命令,如果还不行,就先执行 make fprofiled 命令,再执行 make 命令。
4. 命令使用方法
4.1 编码命令
假设把 akiyo_cif_352x288_25fps.yuv 文件编码成分辨率为 352x288,帧率为25的 h264码流文件,编码命令如下:
./x264.exe --qp 24 -o akiyo_cif.out.h264 akiyo_cif_352x288_25fps.yuv 352x288
注意:yuv 源文件名中必须包含宽高信息,如上面命令中所示,其实可以去掉命令后边的“352x288”。
另外,编码yuv成h264时,可以指定目标码率和帧率,命令如下:
./x264.exe --qp 24 --bitrate 1500 --fps 30 -o 1080p.out.h264 1920x1080-30fps-2.yuv
x264.exe 可执行文件的可用参考列表如下图所示:
4.2 解码命令
假设把 1080p.out.h264 的码流文件解码成 yuv 文件,命令如下:
./h264dec.exe 1080p.out.h264 1080p.yuv
解码命令还是比较简单,不需要指定其他参数。
作者简介:😄大家好,我是 Data-Mining(liuzhen007),是一位典型的音视频技术爱好者,前后就职于传统广电巨头和音视频互联网公司,具有丰富的音视频直播和点播相关经验,对 WebRTC、FFmpeg 和 Electron 有非常深入的了解,😄公众号:玩转音视频。同时也是 CSDN 博客专家、华为云享专家(共创编辑)、InfoQ 签约作者,欢迎关注我分享更多干货!😄