C语言 x264编码代码,X264的编译与使用

X264的编译

X264的编译很久都没弄好(2013.1),现在专门写一篇学习X264的编译。

x264的编译步骤如下:

3 打开mysys,进入x264目录,执行

./configure --enable-shared  --prefix=/local/264

make

make install

可以在/local/264下找到生成的文件。

测试X264.exe

x264 [--参数名 参数值 ...] --output 输出文件 输入文件

其中方括号里是可输入可不输入的,“...”是可以输很多个的意思。观察这个形式,每个参数名之前要加“--”,空格后跟此参数名的参数值;一定要有“--output”并指定输出文件;一定要指定输入文件,但前面没有“--”之类的提示符号。

此外,还有短参数模式。这是为了简化某些常用参数名设计的。一个“-”加一个字母构成一个短参数名,和与之对应的普通参数名效果一样。注意此时这个字母区分大小写。

测试编码的例子: x264.exe --crf 24 --input-res 352x288 -o "1.264" "stefan_cif.yuv"

解释如下:

--crf:一种根据片子质量自动分配码率的vbr码率控制方式。一遍编码,如果对码率没要求请尽量使用crf模式。可用的值从1到51,越小编码质量越好,码率越高。一般使用16到24,可以为浮点。crf并不是恒定质量的方式,同一片子同一crf值,其他参数不同可能码率和质量能差比较大,不同的片子之间就更没有可比性了。

--input-res:输入文件的分辨率,格式为宽x高。

-o:输出文件,x264可以输出没有封装的H.264视频流,扩展名是.264;matroska视频,扩展名是.mkv;flash视频,扩展名是.flv;mp4视频,扩展名是.mp4。mkv、mp4和flv可以是vfr的。x264通过输出文件的扩展名判断输出文件类型。

x264支持输入的文件类型有raw yuv、y4m、avs和任何可以由ffms或lavf打开的文件。raw yuv会用在64位的x264里。有ffms/lavf打开的片子会自动正确的处理vfr问题。avs和ffms/lavf输入不需要指定片子的分辨率。

问题:

没有生成x264.lib

解决方法如下:

X264更新的比较快,每天都有更新,但算法模块,基本结构是没有多大变化的。x264都是用C语言写的包括C99,但C99语法是在VC中是没法用的(当然有精力可以全部改成C89),生成的.a库是也是没法调用的,如何转化成可用.lib库就比较重要了。

下载工具poxports,版本号0.43(下载地址为:

http://download.csdn.net/detail/evsqiezi/7014011)。解压后,得到pexports-0.43\bin\pexports.exe。将pexports.exe复制到C:\Program Files\Microsoft Visual Studio 5\VC\bin目录下(我这里安装的是VS2005,其他找对应版本的bin路径)。打开VS2005命令行工具。输入pexports,发现可用了。命令行进入libx264-142.dll所在的目录。使用如下目录。

pexports libx264-142.dll > libx264-142.def

lib /machine:ix86 /def:libx264-142.def

第一行命令,生成libx264-142.def

第二行命令,生成libx264-142.exp 和 libx264-142.lib

建立一个工程,将头文件,库文件加载到工程,测试代码如下:

#include

#include

#include "stdint.h"  //如果没有,下载地址为:

http://download.csdn.net/detail/evsqiezi/7014021 extern "C" { #include "x264.h" #include "x264_config.h" }; using namespace std; int main() { x264_param_t param; x264_param_default(&param); return 0; } 编译通过,说明可用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值