理论篇(1)- 一文搞懂 X264 编码库

目录

前言

正文

1. 下载源码

2. windows平台编译

3. 疑难问题

3.1 报错:No working C compiler found.

3.2 报错:gcc.exe: fatal error: no input files

4. 命令使用方法

4.1 编码命令

4.2 解码命令


《音视频开发》系列-总览_Data-Mining的博客-CSDN博客音视频开发涉及的内容非常多,本专栏大致从音频基础知识、视频基础知识、通用媒体协议、实战案例介绍、常用开源库几个方面进行展开,欢迎小伙伴有针对性的学习!大家好,我是Data-Mining ,CSDN博客专家、华为云享专家,别名 liuzhen007,中国邦德,一个敲代码的邦德,对音视频技术和WebRTC、FFmpeg、Electron等开源框架有深入的了解。欢迎大家订阅 Data-Mining 的《音视频开发》技术专栏。https://liuzhen.blog.csdn.net/article/details/116494086

前言

x264 是一个自由软件库和应用程序,用于将视频流编码为 H.264/MPEG-4 AVC 压缩格式,并根据GNU GPL的条款发布。在H.264编码方面性能非常优秀,但是在版权方面比另外一个开源库OpenH264要受限。

正文

1. 下载源码

仓库地址:VideoLAN / x264 · GitLab

代码同步命令如下:

​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

设置编译器--sysroot参数

一般不需要设置,通常在交叉编译时进行设置

--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 签约作者,欢迎关注我分享更多干货!😄

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Data-Mining

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值