项目集成bilibil下 ijkplayer直播,视屏播放框架总结
参考链接:https://www.jianshu.com/p/62ccf6f8aed4
参考链接:https://www.jianshu.com/p/65fb80dff4d6
参考链接:https://www.jianshu.com/p/9a69af13835e
ps:集成前注意了,是否需要支持https。我感觉集成https,相对较好,既支持https也支持http。
下载、
-1. git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-ios
Demo路径:../ijkplayer-master/iOS/IJKMediaDemo Build一下就报错了
编译、
cd ijkplayer-ios
git checkout -B latest k0.8.8 //一般新建一个分支
配置编解码器格式支持
module-default.sh 更多的编解码器/格式
module-lite-hevc.sh 较少的编解码器/格式(包括hevc)
module-lite.sh 较少的编解码器/格式(默认情况)
# 进入 config 目录
cd config
# 删除当前的 module.sh 文件
rm module.sh
# 可根据需要替换为`module-default.sh`, `module-lite-hevc.sh`, `module-lite.sh`
# 创建软链接 module.sh 指向 module-lite-hevc.sh
ln -s module-lite-hevc.sh module.sh
cd ..
cd iOS
sh compile-ffmpeg.sh clean
-1.下载ffmpeg
./init-ios.sh //时间稍长一些
-Tip:可能会报这样的错误fatal-early-eof-fatal-index-pack-failed
解决方法: 终端输入:
git config --global core.compression 0
-添加 https 支持
# 获取 openssl 并初始化
./init-ios-openssl.sh
-
此处可能会报错。
:Git error: RPC failed; curl 56 LibreSSL SSL_read: SSL_ERROR_SYSCALL, errno 54
解决方法:去ios/compile-openssl.sh. 删除里面的armv7
之后再次
./init-ios-openssl.sh
cd iOS
# 在模块文件中添加一行配置 以启用 openssl 组件
echo 'export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-openssl"' >> ../config/module.sh
./compile-ffmpeg.sh clean
最后会生成支持 https 的静态文件 libcrypto.a 和 libssl.a, 如果不需要可以跳过这一步
-2.编译ffmpeg
cd iOS
编译openssl, 如果不需要https可以跳过这一步
./compile-openssl.sh all
./compile-ffmpeg.sh clean
./compile-ffmpeg.sh all //编译
最新的 Xcode 已经弱化了对 32 位的支持, 解决方法:
在 compile-ffmpeg.sh 中删除 armv7 , 修改如:
FF_ALL_ARCHS_IOS8_SDK="arm64 i386 x86_64"
再重新执行出现错误的命令: ./compile-ffmpeg.sh all
然后再次执行
./compile-ffmpeg.sh clean
./compile-ffmpeg.sh all //编译
打包、
打开ios/IJKMediaPlayer并运行
如果使用 https, 那么需要手动给IJKMediaFramework添加 libcrypto.a 和 libssl.a 文件, 默认不会添加 .
ps: 这两个依赖库的目录为:ijkplayer-ios/ios/build/universal/lib, 只有进行了上面跟 openssl 相关的操作, 才会在这个目录下有生成libcrypto.a 和libssl.a如果不使用 https, 可以跳过此步, 直接开始打包 framwork
-
开始编译 framwork
大家会发现除了 IJKMediaFramework这个target, 还有一个叫 IJKMediaFrameworkWithSSL, 但是不推荐使用这个, 因为大部分基于 ijkplayer 的第三方框架都是使用的前者, 你把后者导入项目还是会报找不到包的错误, 就算你要支持 https 也推荐使用前者, 然后按照上一步添加 openssl即可支持
- 首先将debug改为release (可选)
到了这一步,可能还会有报错。
-
ps :s也可以 这样处理:删除armv7的架构。
- 选中IJKMediaFramework.framework右键show in finder可以看到