首页 关于 微信公众号
欢迎关注我的微信公众号

在 Mac OS 上编译 IJKPlayer

在 Mac OS 上编译 IJKPlayer 的主要流程参见 IJKPlayer 的文档就可以了。

这里主要记一些遇到过的问题:

1、在最新版的 Xcode(10.0+) 上编译 ffmpeg 可能会遇到如下报错:

./libavutil/arm/asm.S:50:9: error: unknown directive
        .arch armv7-a
        ^
make: *** [libavcodec/arm/aacpsdsp_neon.o] Error 1

这个问题的原因是因为最新的 Xcode 已经弱化了对 32 位处理器的支持,解决这个问题的方法可以参考这里,有下面几种方案:

推荐使用第 1、2 种方案。第 3 种方案放弃了对 armv7 的支持,对许多应用还是不可接受的。

1)下载一个低版本的 Xcode 9.1,执行下列命令:

sudo xcode-select -s <pathToXcode9.1>/Contents/Developer
./compile-ffmpeg.sh clean
./compile-ffmpeg.sh all

2)在 ios/tools/do-compile-ffmpeg.sh 文件中增加如下配置:

FFMPEG_CFG_FLAGS_ARM="$FFMPEG_CFG_FLAGS_ARM --disable-asm"

然后再重新编译。

3)在 compile-ffmpeg.sh 文件中去除对 armv7 架构的支持,修改

FF_ALL_ARCHS_IOS8_SDK="armv7 arm64 i386 x86_64"

FF_ALL_ARCHS_IOS8_SDK="arm64 i386 x86_64"

然后再重新编译。

但是这种方案会导致后面在真机上编译 IJKMediaFramework 时报错:

'armv7/avconfig.h' file not found

只能把 #include "armv7/avconfig.h" 的代码注释掉。

2、如果要支持 HTTPS,需要按如下步骤来:

# 获取 openssl 并初始化
./init-ios-openssl.sh

# 在 module.sh 文件中添加一行配置以启用 openssl 组件
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-openssl"


./compile-ffmpeg.sh clean

# 编译 openssl
./compile-openssl.sh all

# 编译 ffmpeg
./compile-ffmpeg.sh all

然后,在 IJKMediaDemo 工程中要把 IJKMediaFramework 库替换为 IJKMediaFrameworkWithSSL。

其他参考:

Blog

Opinion

Project