无法在React Native中使用Android Exoplayer播放H.264视频

6
视频加载出错时的错误代码。
{"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

有人对此有什么想法吗?


视频文件大小为2160x3840像素(4K)。您应该编辑您的帖子,以包括您测试的方式(模拟器或具体型号/操作系统版本的物理设备)。 - Morrison Chang
谢谢您的回复。我刚刚更新了! - Lê Hoàng Chinh
在提到物理设备时,您应该说明技术规格,例如三星S9,型号G9600,运行Android 10。或者至少说明您正在使用的设备上是否可以使用VLC for Android播放视频。还要意识到插件在幕后使用Exoplayer,因此您应该阅读:https://exoplayer.dev/debug-logging.html。 - Morrison Chang
1个回答

4

这个视频使用的是H.264高级配置文件,这不是标准的Android支持格式之一,虽然某些设备可能支持。

目前的标准支持配置文件包括基线和主要配置文件。您可以在此处查看列表:

您可以使用像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

您可以重新使用主要或基线进行视频重新编码,并测试以确认,或者使用您知道符合推荐要求的视频进行测试。


我一直在努力寻找以下流媒体URL的编解码器信息,但未能成功。请您帮忙分析一下以下流媒体URL是否能在安卓设备上播放? https://ilglobotv-live.global.ssl.fastly.net/RAI_Italia2/Live.m3u8 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接