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