替换 ijkplayer

 

fijkplayer 只是对 ijkplayer 的一个 Flutter 封装,ijkplayer 才是真正的播放器内核。 为了将 ijkplayer 接入到 Flutter 的生态中,必须要对 ijkplayer 进行必要的修改, fijkplayer 使用了修改后的 ijkplayer (https://github.com/befovy/ijkplayer) 进行功能接入。

在实际使用 fijkplayer 的过程中,处于各种原因可能需要重新编译 ijkplayer,或者是 ffmpeg。本节内容就如何在 fijkplayer 中替换自行编译的 ijkplayer 进行说明。注意一下三点:

  1. 确保使用的是 https://github.com/befovy/ijkplayer 的衍生版本,其中含有纹理接入的必要修改。
  2. 以本地相对路径方式引入 fijkplayer。
  3. 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 硬解码渲染到缓冲区
  • 新增截图功能支持

您的支持是我的动力。你可以通过以下方式支持我:

  • 给该项目点赞   给该项目点赞
  • 关注我的 Github   关注我的 Github
微信赞赏码 支付宝
微信赞赏码 支付宝二维码