fijkplayer 只是对 ijkplayer 的一个 Flutter 封装,ijkplayer 才是真正的播放器内核。 为了将 ijkplayer 接入到 Flutter 的生态中,必须要对 ijkplayer 进行必要的修改, fijkplayer 使用了修改后的 ijkplayer (https://github.com/befovy/ijkplayer) 进行功能接入。
在实际使用 fijkplayer 的过程中,处于各种原因可能需要重新编译 ijkplayer,或者是 ffmpeg。本节内容就如何在 fijkplayer 中替换自行编译的 ijkplayer 进行说明。注意一下三点:
- 确保使用的是 https://github.com/befovy/ijkplayer 的衍生版本,其中含有纹理接入的必要修改。
- 以本地相对路径方式引入 fijkplayer。
- fijkplayer 以本地路径方式引入 ijkplayer。
本节余下部分使用 ${fijkplayer} 表示 fijkplayer 项目在本地环境的文件路径。
以本地路径依赖 fijkplayer
将项目 https://github.com/befovy/fijkplayer clone 到本地环境,在本地的 Flutter 项目中以相对路径方式引入 fijkplayer 的依赖。
dependencies:
fijkplayer:
path: ${local_fijkplayer_path} # 替换为实际的本地路径
编译 ijkplayer
将项目 https://github.com/befovy/ijkplayer clone 到本地环境,按照其中 README 准备编译环境,需要准备 ffmpeg openssl 等。
在 android/ijkplayer 目录中运行 ./gradlew :fijkplayer-full:assembleRelease
可以编译产出 fijkplayer-full-release.aar
在本地 ios/IJKMediaPlayer/ 运行 xcodebuild -project IJKMediaPlayer.xcodeproj -configuration Release -scheme Universal
可以编译产出 IJKMediaPlayer.framework ,输出在 ios/CocoaPodsPub
文件夹中。
修改 ijkplayer 依赖方式
把文件 fijkplayer-full-release.aar 复制到 ${fijkplayer}/android/aars 目录中。 修改文件 ${fijkplayer}/android/build.gradle 中 dependencies 内容。
- implementation 'com.befovy.fijkplayer:fijkplayer-full:0.3.7' // 注释掉这一行
+ implementation(name: 'fijkplayer-full-release', ext: 'aar') // 去掉这行原先的注释
把文件 IJKMediaPlayer.framework 复制到 ${fijkplayer}/ios/Frameworks 目录中。 修改文件 ${fijkplayer}/ios/fijkplayer.podsped 文件内容。
+ # 去掉这三行原先的注释
+ s.preserve_paths = 'Frameworks/*.framework'
+ s.vendored_frameworks = 'Frameworks/IJKPlayer.framework'
+ s.xcconfig = { 'LD_RUNPATH_SEARCH_PATHS' => '"$(PODS_ROOT)/Frameworks/"' }
- # s.dependency 'BIJKPlayer', '~> 0.3.8' // 把原先这一行注释掉
无论你是修改 ffmpeg 配置文件重新编译 ffmpeg, 还是修改 ijkplayer 源码编译新的 ijkplayer, 请一定确保使用的是 https://github.com/befovy/ijkplayer 的衍生版本。
befovy/ijkplayer 和 bilibili/ijkplayer 的区别
fijkplayer 中用的 ijkplayer 部分来自 befovy/ijkplayer
完整的区别可以查看 diff compare/bilibili:master…befovy:master
主要改动内容包括:
- github action ci
- Android 构建配置
- iOS flutter 纹理接入
- Android 硬解码渲染到缓冲区
- 新增截图功能支持