无法使用 Android Exoplayer react-native-video 在 Android 上播放 H.264 视频

Can't play video H.264 on Android with Android Exoplayer react-native-video

视频加载错误时的错误代码

{"error": {"errorException": "com.google.android.exoplayer2.ExoPlaybackException: MediaCodecVideoRenderer error, index=0, format=Format(1, null, null, video/avc, avc1.640034, -1, null, [2160, 3840, 24.000002], [-1, -1]), format_supported=NO_EXCEEDS_CAPABILITIES", "errorString": "ExoPlaybackException type : 1"}}

目前我正在使用此版本并在真实 Android 设备上构建

react-native: 0.64

react-native-video: ^5.2.0-alpha1

这是 h.264 视频示例:https://lifebeligum.s3.ap-southeast-1.amazonaws.com/documents/2021-10-04/ef07eb88-1e53-4800-b7cb-64e908a264c3.mp4

有人知道吗?

链接的视频使用的是 H.264 High 配置文件 - 这不是 Android 支持的标准格式之一,尽管某些设备可能支持它。

目前 Baseline 和 Main 配置文件列为受支持的标准。您可以在此处查看列表:

您可以使用 ffprobe 等工具检查编码配置文件:

ffprobe version N-95216-ge6625ca41f-tessus  https://evermeet.cx/ffmpeg/  Copyright (c) 2007-2019 the FFmpeg developers
  built with Apple clang version 11.0.0 (clang-1100.0.33.8)
  configuration: ......
  libavutil      56. 35.100 / 56. 35.100
  libavcodec     58. 59.101 / 58. 59.101
  libavformat    58. 33.100 / 58. 33.100
  libavdevice    58.  9.100 / 58.  9.100
  libavfilter     7. 61.100 /  7. 61.100
  libswscale      5.  6.100 /  5.  6.100
  libswresample   3.  6.100 /  3.  6.100
  libpostproc    55.  6.100 / 55.  6.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/Desktop/ef07eb88-1e53-4800-b7cb-64e908a264c3.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: mp42mp41isomavc1
    creation_time   : 2020-07-07T20:03:53.000000Z
  Duration: 00:00:16.50, start: 0.000000, bitrate: 13565 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 2160x3840, 13562 kb/s, 24 fps, 24 tbr, 24 tbn, 48 tbc (default)
    Metadata:
      creation_time   : 2020-07-07T20:03:53.000000Z
      handler_name    : L-SMASH Video Handler
      encoder         : AVC Coding

您可以使用 Main 或 Baseline 重新编码您的视频并进行测试以确认或使用您知道符合建议的视频进行测试