xcode13 ijkPlayer打包

可真不像想象中那样简单。折腾了一天。
直接上命令
github地址
下载路径->桌面,会在桌面创建一个 'ijkplayer-ios'的文件夹

cd Desktop

克隆ijkplayer源码
可能失败几次,多尝试。切换热点试试

git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-ios

进入文件夹

cd ijkplayer-ios

切换最新版本

git checkout -B latest k0.8.8

从 'github '上下载 'ffmpeg' 等依赖,所以把 'init-ios.sh' 文件改一下,把' github'的源替换成 'gitee '的

# IJK_FFMPEG_UPSTREAM=https://github.com/Bilibili/FFmpeg.git
IJK_FFMPEG_UPSTREAM=https://gitee.com/yuazhen/FFmpeg.git

# IJK_FFMPEG_FORK=https://github.com/Bilibili/FFmpeg.git
IJK_FFMPEG_FORK=https://gitee.com/yuazhen/FFmpeg.git

# IJK_GASP_UPSTREAM=https://github.com/Bilibili/gas-preprocessor.git
IJK_GASP_UPSTREAM=https://gitee.com/yuazhen/gas-preprocessor.git

#FF_ALL_ARCHS_IOS8_SDK="armv7 arm64 i386 x86_64"
FF_ALL_ARCHS_IOS8_SDK="arm64 x86_64"#移除32位支持,i386 x86_64是模拟器的

iphone5s起就开始全面支持arm64了
执行:

./init-ios.sh

配置解码器

cd config
module-default.sh 更多的编解码器/格式
module-lite-hevc.sh 较少的编解码器/格式(包括hevc)
module-lite.sh 较少的编解码器/格式(默认情况) 

编辑module-lite.sh文件,添加下面2个配置

export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-protocol=rtp"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-demuxer=rtsp"

删除当前的module.sh 文件

rm module.sh

创建软链接 module.sh 指向 module-lite.sh

ln -s module-lite.sh module.sh

添加 https 支持,最后会生成支持 https 的静态文件 libcrypto.a 和 libssl.a
编辑/init-ios-openssl.sh

#IJK_OPENSSL_FORK=https://github.com/Bilibili/openssl.git
IJK_OPENSSL_FORK=https://gitee.com/yuazhen/openssl.git

#pull_fork "armv7"
#pull_fork "armv7s"
pull_fork "arm64"
#pull_fork "i386"
pull_fork "x86_64"

执行

./init-ios-openssl.sh

编辑module-lite.sh文件,最后添加

export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-openssl"

重新生成软连接

cd config
rm module.sh
ln -s module-lite.sh module.sh

编辑iOS文件夹下的compile-openssl.sh compile-ffmpeg.sh,移除32位支持

#FF_ALL_ARCHS_IOS8_SDK="armv7 arm64 i386 x86_64" 
FF_ALL_ARCHS_IOS8_SDK="arm64 x86_64"
cd ios

//只clean一次,否则./compile-ffmpeg.sh allERROR: openssl not found

./compile-openssl.sh clean
./compile-openssl.sh all
./compile-ffmpeg.sh all

接下来就需要摸索了。
打开IJKMediaPlayer.xcodeproj
选择IJKMediaFramework工程,edit-schemerun 选择relese

工程下面没有Products文件夹,Xcode13默认没了。
IJKMediaPlayer.xcodeproj右键显示包内容,打开project.pbxproj,
搜索productRefGroup,将productRefGroup上面一行的mainGroup的值,复制给productRefGroup,再保存一下,Xcode就自动刷新出来了。

image.png

勾选
image.png

这里的引用,先删除,再手动添加一遍。(如果报错的话)


image.png
image.png

头文件找不到,添加ios - build - universal - include目录下的文件,勾选引用。注意是蓝色文件夹。

image.png

哦,记得引入 libcrypto.alibssl.a。在ios - build - universal - lib
测试需要依赖的库:

libc++.tbd

libz.tbd

libbz2.tbd

AudioToolbox.framework

UIKit.framework

CoreGraphics.framework

AVFoundation.framework

CoreMedia.framework

CoreVideo.framework

MediaPlayer.framework

MobileCoreServices.framework

OpenGLES.framework

QuartzCore.framework

VideoToolbox.framework

测试:

#import 
IJKFFMoviePlayerController *player = [[IJKFFMoviePlayerController alloc] initWithContentURLString:@"" withOptions:[IJKFFOptions optionsByDefault]];
    player.view.frame = self.view.bounds;
    [self.view addSubview:player.view];
    [player prepareToPlay];

查看framework支持的架构:

1.进入到framework目录下
cd /Users/.../xxxFramework.framework
2.输入命令
lipo -info  xxxFramework

参考链接:
https://www.jianshu.com/p/6ec0ec0244e2?utm_campaign=hugo
https://www.jianshu.com/p/0706735f5bce
https://www.jianshu.com/p/bec1be2e8081
https://www.jianshu.com/p/ff8fd8c0c3c9

你可能感兴趣的:(xcode13 ijkPlayer打包)