x264直播(1) - x264编译

x264 可以从github下载, 也可以从开源项目网站VLC 中下载
我的代码用的是VLC下载的, 编译器我用的是VS2010,是比较老的, 遇到问题:

  1. 项目是C语言, VS2010对C支持不是很好, 所有变量无法在中间定义, 所以在项目属性修改默认为C++, 全部变成C++方式
  2. 代码有很多强制转换, 没什么好办法, 一个个手动修改, 也可以修改警告等级去掉部分
  3. 部分宏也需要修改
  4. 其他基本没有问题可以编译, 最后链接会发现很多代码是在asm中
  5. asm编译需要先下载编译工具 https://www.nasm.us/, 下载后只要主exe就可以的, 复制到项目的路径中
    在项目中添加一个bat文件, 根据路径写入bat如下

cd ../common/x86
set bdexe="../nasm/nasm.exe"
set opt=-f win32 -DPREFIX
%bdexe% %opt% bitstream-a.asm
%bdexe% %opt% cabac-a.asm
%bdexe% %opt% const-a.asm
%bdexe% %opt% cpu-a.asm
%bdexe% %opt% dct-32.asm
%bdexe% %opt% dct-a.asm
%bdexe% %opt% deblock-a.asm
%bdexe% %opt% mc-a.asm
%bdexe% %opt% mc-a2.asm
%bdexe% %opt% pixel-32.asm
%bdexe% %opt% pixel-a.asm
%bdexe% %opt% predict-a.asm
%bdexe% %opt% quant-a.asm
%bdexe% %opt% sad-a.asm
goto :eof
%bdexe% %opt% dct-64.asm
%bdexe% %opt% sad16-a.asm
%bdexe% %opt% trellis-64.asm
%bdexe% %opt% x86inc.asm
%bdexe% %opt% x86util.asm

然后对项目的bat文件设置自定义生成工具
命令行

..\common\x86\asmbuild.bat
输入任意选择一个obj
..\common\x86\bitstream-a.obj
最后编译就会把asm编译从obj, 再把所有生成的obj添加到项目, 最后编译OK

  1. 编译后会发现asm生成的函数符号跟C中使用的有问题, 最后找到 BIT_DEPTH 定义, x264有8位版还有10位版, 这就这个, 我编译的用8
    修改x264_template相关
    #define x264_templateND(w) x264_glue2(x264, w)
    还有函数的类型 extern "C"

最终编译完全成功

  1. 编译完成后可以测试, 输入格式非常有限, 程序有支持avi, 但是需要dll, 可以从网上下载一个软件AviSynth, 然后把dll复制过来
    可以使用 -o out.flv v:\6.avi 测试, 输入6.avi文件, 转码生成out.flv
    经测试 avi-无压缩, avi-ms压缩格式是支持的, 没有这两种格式可以用工具转码生成, 我用的是vegas
posted @ 2020-10-29 13:44  Yofoo  阅读(190)  评论(0编辑  收藏  举报