IjkPlayer是bilibili(b站)开源的视频+直播框架,底层基于FFmpeg封装,并且同时支持Android 和 iOS 平台。
由于IjkPlayerSDK框架在ijkplayer demo中并没有直接提供,demo里只提供了编译脚本,需要我们手动编译。
首先下载ijkplayer
https://github.com/bilibili/ijkplayer
1.下载后放在桌面不需要改动任何文件里的内容
(我看网上有些文章说SDK会编译失败 ,需要改动里面一些文件内容。但是我这里并没有出现)
下载后打开文件夹里面有很多文件,包含了 iOS跟 Android的, 我们只需要管 iOS 的就行
打开IJKMediaPlayer工程
ijkplayer-master > iOS > IJKMediaPlayer > IJKMediaPlayer.xcodeproj
这个工程就是我们需要用到的编译ijkplayer框架的工程。 (其他的这里先不做介绍)
打开工程后你会发现这个工程中有2处是缺少文件的
第一处 缺少ffmpeg 整个文件都是红的
第二处 Frameworks 文件中 缺少 libcrypto.a libssl.a
我们要做的就是把这2处缺失的文件补好,这些脚本已经帮我们写好了,我们只需要执行命令就行,然后通过这个工程编译出我们需要的ijkplayer框架
注意⚠️ 编译出了的文件不需要动他的路径
1.执行命令 ./init-ios.sh
1. cd到 ijkplayer-master 文件夹里
2. 执行命令 ./init-ios.sh (下载fmpeg 要保证网络连接通畅)
注!这一步容易断网报错 443 或者 500 (如下图),可能服务器不在国内吧 ,反正出现网络问题自己解决
成功后 iOS 文件夹里会出现 不同架构的ffmpeg
ffmpeg-arm64
ffmpeg-armv7
ffmpeg-i386
ffmpeg-x86_64
2.执行命令 ./init-ios-openssl.sh
成功后 iOS 文件夹里会出现 不同架构的openssl
openssl-arm64
openssl-armv7
openssl-i386
openssl-x86_64
3. 执行命令 ./init-config.sh
4. 执行命令 cd ios (进入ios文件夹)
5. 执行命令 ./compile-ffmpeg.sh clean (清理文件)
6. 执行命令 ./compile-openssl.sh clean (清理文件)
7. 执行命令 ./compile-openssl.sh all (编译 openssl )
得到 缺少的 libcrypto.a libssl.a
8. 执行命令 ./compile-ffmpeg.sh all (编译 ffmpeg )
第八步完毕后 我们IJKMediaPlayer所缺少的文件 跟框架都有了
ijkplayer-master/ios/build/universal/lib
9.编译ijkplayer框架
1.再次打开IJKMediaPlayer工程
2.选择 IJKMediaFramework (下面 红色箭头指向的)
3.Frameworks下面 libcrypto 和 libssl 依然是红色 不用管
10.合并真机跟模拟器
1. 真机跟模拟器的都跑一遍 然后进行合并 (开发期间 跑Debug 模式)
注意:合并的文件是下面截图的文件
2. lipo -create 真机路径 模拟器路径 -output 输出路径
3. 合并后以前的文件不会消失 ,所以我们需要把 IJKMediaFramework.framework 中 IJKMediaFramework 替换为合并后的 IJKMediaFramework
11.导入工程
添加系统库
AudioToolbox
AVFoundation
CoreMedia
CoreVideo
libbz2
libz
MediaPlayer
MobileCoreServices
OpenGLES
VideoToolbox导入头文件 编译成功
最后提一句 我们编译的库有多个架构版本,如果有些架构不需要的话 在开始前,我们就要去修改脚本文件
比如init-ios.sh
如果删除init-ios.sh中不需要的架构,那么ios/compile-ffmpeg.sh和ios/compile-openssl.sh也要一起修改,不然编译的时候会报错。