可真不像想象中那样简单。折腾了一天。
直接上命令
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 all
会ERROR: openssl not found
./compile-openssl.sh clean
./compile-openssl.sh all
./compile-ffmpeg.sh all
接下来就需要摸索了。
打开IJKMediaPlayer.xcodeproj
选择IJKMediaFramework
工程,edit-scheme
下 run
选择relese
工程下面没有Products
文件夹,Xcode13默认没了。
IJKMediaPlayer.xcodeproj
右键显示包内容,打开project.pbxproj
,
搜索productRefGroup
,将productRefGroup
上面一行的mainGroup
的值,复制给productRefGroup
,再保存一下,Xcode就自动刷新出来了。
勾选
image.png
这里的引用,先删除,再手动添加一遍。(如果报错的话)
image.png image.png
头文件找不到,添加ios - build - universal - include
目录下的文件,勾选引用
。注意是蓝色文件夹。
哦,记得引入
libcrypto.a
和libssl.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 <IJKMediaFramework/IJKMediaFramework.h>
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
网友评论