flutter_ijkplayer_pod
ijkplayer for flutter
目的
主要是由于在 flutter 中将框架完整上传到 pub 感觉太大
而国内的朋友们普遍访问 pub、github 等网站时网速不太好,因此采用 pod 依赖,并且 pod 支持 xz 这样高压缩率的压缩格式,将大约 150M 的框架压缩至大约 30M
关于框架
在此部分是在基于 https://github.com/jadennn/flutter_ijk 项目提供的源码上进行修改编译而成的,这部分源码的修改按原作者 issue 解释,基于 MIT 协议。
额外修改如下:
- 加入了视频角度旋转后的通知,以便于 flutter 端能及时获取视频方向。
- 按照 https://github.com/bilibili/ijkplayer/issues/3643#issuecomment-333274685 中提供的方法,增加了两处
[CATransaction flush]
的调用以支持 11.0 后的真机(亲测 12.1.4 真机可用)。 - 增加了一个tcp速度的参数。
完整代码可在此查看。
遵循 bilibili/ijkplayer 的编译方案进行编译。
本项目自修改编译的完整配置文件可以查看 gitee 项目中的 config/module.sh
文件。
编译完成后在 framework 中加入了 openssl 以便于支持 https 协议。
这里只是加入了一些相对常用的选项,如果你需要使用其他的选项或需要根据你自己的业务情况进行剪裁,你需要自行编译 ffmpeg
目前的库同时支持 iOS 真机和模拟器,是通用库,但模拟器无图像(这里应该是模拟器的 bug)
完整编译方法
依次执行以下步骤通常都可以成功:
这里前两步因为涉及到下载 openssl 和 ffmpeg,建议开启 vpn,因为这两个东西都很大,我这里 vpn 的话 5 分钟不到两个都能下完,如果你没有 vpn,两小时不保证能完成下载步骤。
如果是 ss/ssr 请自己查询如何代理终端(我这里是输入)
$ export http_proxy=http://127.0.0.1:1081;export https_proxy=http://127.0.0.1:1081;
)
clone 项目,这个我放在 gitee 了 $ git clone https://gitee.com/kikt/ijkplayer_thrid_party ijkplayer
根据您需要的编译选项修改module.sh
,根据自己的需要进行裁剪可以有效降低应用包体积。
如果您需要一个相对通用的播放器,可以用module-default.sh
的内容替换掉module.sh
的内容,这样包体积会很大。
cd ijkplayer
./init-ios-openssl
./init-ios.sh
cd ios
./compile-openssl.sh clean
./compile-ffmpeg.sh clean
./compile-openssl.sh all
./compile-ffmpeg.sh all
open ./IJKMediaPlayer/IJKMediaPlayer.xcodeproj
接下来在 xcode 中操作
右键(control+左键)Products ,按住 option,拷贝为路径名称
接下来打开命令行,这里需要替换为您刚刚的目录
cd ~/Library/Developer/Xcode/DerivedData/IJKMediaPlayer-bpuwtjeeipcfgffpcjhynhwsndig/Build/Products
接下来按下方输入,这个目的是将真机库和模拟库包合并为一个通用库
lipo -create Release-iphoneos/IJKMediaFramework.framework/IJKMediaFramework Release-iphonesimulator/IJKMediaFramework.framework/IJKMediaFramework -output IJKMediaFramework
cp IJKMediaFramework Release-iphoneos/IJKMediaFramework.framework
open Release-iphoneos/
这里打开的看到的那个就是您的那个可用的通用 framework 库了
这里输出的是动态库,如果您需要静态库,您需要在 xcode 中进行设置,这一步请自行百度/谷歌
LICENSE
遵循 MIT 风格