在 react-native-tvos@^0.63.4-0 上使用 react-native-video 时遇到问题

Having trouble using react-native-video on react-native-tvos@^0.63.4-0

错误

我们正在使用这个库为 AndroidTV 构建一个严重依赖视频流的应用程序,所以我们决定使用这个库并看看它如何去了。

我们只为应用程序使用 HLS (m3u8) 视频格式。

我们使用了 ExoPlayer 并且一切似乎都很好,但是当用户开始在非品牌 AndroidBoxes[=83 上安装应用程序时=] ,我们收到了大量错误报告,所有错误报告都包含一个特定问题,“视频播放器无法正常工作”。 我们开始在多个设备上调试,包括 Android Phones , AndroidTVs , Amazon Fire Stickandroid 盒子.

我们对某些设备同时使用 ExoPlayerMediaPlayer 进行了调试。

  • 我们得到的结果是这样的:
    • Android PhoneExoPlayerMediaPlayer 工作正常。
    • AndroidTVExoPlayer 工作正常但是当我们尝试使用 MediaPlayer 视频开始不同步。
    • Amazon Fire StickExoPlayer 运行良好。 (未使用 MediaPlayer 进行测试
    • Android BoxExoPlayer 无法正常工作,问题包括我们手动将其设置为 1 时的 2 倍速度,没有声音,不能完全工作。另一方面,MediaPlayer 起初似乎可以工作,但在使用 30-40 分钟后就会出现故障,运行 视频以 2 FPS 播放。

平台

您在哪个播放器上遇到问题:

  • Android ExoPlayer
  • Android 媒体播放器

环境信息

React 本机信息输出:

System:
    OS: Windows 10 10.0.18363
    CPU: (8) x64 Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz 
    Memory: 3.36 GB / 11.90 GB
  Binaries:
    Node: 14.16.0 - C:\Program Files\nodejs\node.EXE       
    Yarn: 1.22.4 - C:\Program Files (x86)\Yarn\bin\yarn.CMD
    npm: 6.14.11 - C:\Program Files\nodejs\npm.CMD
    Watchman: Not Found
  SDKs:
    Android SDK: Not Found
    Windows SDK: Not Found
  IDEs:
    Android Studio: Version  4.1.0.0 AI-201.8743.12.41.7042882
    Visual Studio: 16.5.30011.22 (Visual Studio Community 2019)
  Languages:
    Java: 1.8.0_282 - /c/Program Files/OpenJDK/openjdk-8u282-b08/bin/javac
  npmPackages:
    @react-native-community/cli: Not Found
    react: 16.13.1 => 16.13.1
    react-native: Not Found
    react-native-tvos:  0.63.4-0
    react-native-windows: Not Found
  npmGlobalPackages:
    *react-native*: Not Found

库版本:^5.1.1

重现步骤

  1. 运行 react-native init TestApp --template=react-native-tvos .
  2. 运行 npm i react-native-video .
  3. <Video /> 一个 HLS 类型的视频。
  4. 运行 react-native run-android --variable=release 并在目标平台上安装 apk 文件。

预期行为

在电视平台上流畅播放视频的解决方案或修复。

我在 react-native-video github here.

打开了一个关于这个问题的问题

我们的问题似乎出在文件的编码上,这导致 HLS 文件不稳定。 如果您想在您的应用中使用 HLS,请确保您的编码是标准的并且适用于旧设备。