reactjs - 由于 track-player 和 react-native-video 中的 exo 播放器版本冲突,react-native-track-player 崩溃

标签 reactjs react-native react-native-video react-native-track-player

所以我同时使用 react-native-video 和 react-native-track-player,通常两者都工作正常,但是要使用视频播放器的一些额外功能,比如缓冲,我必须使用 Exo player ,但是使用 exo player手动使 react-native-track 播放器崩溃我试图得到一个答案并发现它是由于两个库使用的 exo 播放器版本发生冲突而发生的。谁能帮忙

谢谢

最佳答案

问题背景

两者都是react-native-track-playerreact-native-video建立在 Exoplayer 之上(适用于 Android 的应用程序级媒体播放器)。

在当前版本的 react-native-track-player 和 react-native-video 中使用了以下 exoplayer 版本:

  • react-native-track-player (2.1.3): node_modules\react-native-track-player\android\build.gradle

     dependencies {
         ...   
         def exoPlayerVersion = safeExtGet("exoPlayerVersion", '2.11.4')
         ...
     }
    
  • react-native-video (5.2.0): node_modules\react-native-video\android-exoplayer\build.gradle

     dependencies {
         ...
         implementation('com.google.android.exoplayer:exoplayer:2.13.2') {
             exclude group: 'com.android.support'
         }
         ...
         implementation('com.google.android.exoplayer:extension-okhttp:2.13.2') 
         {
             exclude group: 'com.squareup.okhttp3', module: 'okhttp'
         }
         ...
     }
    

如您所见,两者都需要不同版本的 exoplayer,这会导致问题(应用程序崩溃)。

解决方案

可用的解决方案是确保两个包使用相同版本的 exoplayer。我们可以通过降级其中一个软件包直到它与另一个软件包的 exoplayer 版本匹配 来实现这一点。由于当前版本的 react-native-track-player 使用旧版本的 exoplayer (2.11.4),我们别无选择,只能将 react-native-video 降级到使用 exoplayer 2.11.4 的版本,即 5.1.1 版本.

因此,如果您将 react-native-video 降级到 5.1.1,问题将得到解决。

npm i react-native-video@5.1.1

注意:这可能会导致 react-native-video 出现一些小问题。 (例如:Video 类的 textTracks 属性可能不起作用)

关于reactjs - 由于 track-player 和 react-native-video 中的 exo 播放器版本冲突,react-native-track-player 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70587748/

相关文章:

javascript - 使用 JQuery post+get 数据使用react

javascript - 如何获取js-cookie

react-native - AWS-amplify 在请求中包含 cognito Authorization header

react-native - react native ScrollView 类型错误 : undefined is not an object (evaluating 'this._subscribableSubscriptions.forEach' )

android - 在 Android 中找不到 com.yqritc :android-scalablevideoview:1. 0.4 react-native-video

react-native - React-native-video 中的 OnBuffer Prop 不起作用

react-native - React Native 视频不使用 exoplayer 播放音频

javascript - 如何在react js中的setInterval()方法上动态传递不同的时间

javascript - 如何自定义嵌套组件?

ios - React-native - 由于双重转换导致构建失败