mingw下ffmpeg编译添加x265支持

最近在编译ffmpeg时,发现x265的一个bug,记录一下

我使用的x265是1.2 stable,修订版本7246,在编译完x265后将其添加到ffmpeg过程中,在ffmpeg的configure这一步始终不能检测通过,每次都是报x265找不到

首先出现的问题是找不到x265的库文件,提示需要pkg-config,这个好解决

1)下载pkg-config并编译安装,然后再configure前指明PKG_CONFIG_PATH到x265安装目录i下的lib目录下的pkgconfig目录

2)在configure选项中--extra-cflags中用-I引入x265的include目录,

3)在configure选项中--extra-ldflags用-L引入x265的lib目录

通过以上方法可以解决ffmpeg找不到x265库的问题

接下来要解决C++编译问题,由于x265是C++库,因此在ffmpeg的configure,因此configure需要有--extra-libs=-lstdc++选项

再次congfigure,这次在测试时链接x265库出现了找不到x265_stack_align的错误,导致configure失败,

查了下源码,发现该函数是在x265的common/common.h中定义的,源码如下

#if X265_ARCH_X86 && !defined(X86_64))
extern "C" intptr_t x265_stack_align(void (*func)(), ...);
#define x265_stack_align(func, ...) x265_stack_align((void (*)())func, __VA_ARGS__)
#else
#define x265_stack_align(func, ...) func(__VA_ARGS__)
#endif

由于windows下只能采用mingw编译ffmpeg,因此x265我也是采用mingw编译的,那么问题就出来了,似乎x265对mingw32编译的情况没有考虑周全,这里会把x265_stack_align的定义搞错,因此需要将

#if X265_ARCH_X86 && !defined(X86_64))

改为

#if X265_ARCH_X86 && !defined(X86_64) && !defined(__MINGW32__)

重新编译x265,之后ffmpeg的编译就没有问题了

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值