替换 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 FIJKPlayer-Universal 可以编译产出 IJKPlayer.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')  // 去掉这行原先的注释

把文件 IJKPlayer.framework 复制到 ${fijkplayer}/ios/Frameworks 目录中。 修改文件 ${fijkplayer}/ios/fijkplayer.podsped 文件内容。

+   # 去掉这三行原先的注释
+   s.preserve_paths = 'Frameworks/*.framework'
+   s.vendored_frameworks = 'Frameworks/FIJKPlayer.framework'
+   s.xcconfig = { 'LD_RUNPATH_SEARCH_PATHS' => '"$(PODS_ROOT)/Frameworks/"' }
  
-   # s.dependency 'FIJKPlayer', '~> 0.3.8' // 注释掉这一行

无论你是修改 ffmpeg 配置文件重新编译 ffmpeg, 还是修改 ijkplayer 源码编译新的 ijkplayer, 请一定确保使用的是 https://github.com/befovy/ijkplayer 的衍生版本。


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

每年国庆节前后是临潼石榴集中成熟上市销售的时期,我老丈人家就在秦岭山脉的骊山脚下,家中有十多亩石榴园,全部是绿色种植,施农家肥,人工套袋。 产出的石榴皮薄籽大,甜美多汁。10月份购买的订单均是现摘现发,保证您吃到新鲜美味的石榴。