HarmonyOS 鸿蒙Next中OSS返回视频无法在Pura70 Harmony4上播放

HarmonyOS 鸿蒙Next中OSS返回视频无法在Pura70 Harmony4上播放 我们的APP可以在后台上传视频,然后在APP端口播放。最近在APP上架,ios,小米和国内的主流安卓机上面都可以播放,荣耀也可以,但是在华为pura70 上(9000S1芯片)没有办法播放我们上传的视频动画。前端是flutter。

给出的错误代码是:

initVideo:init video failure https://…/t100.mp4 err: PlatformException(VideoError, Video player had error androidx.media3.exoplayer.ExoPlaybackException: MediaCodecVideoRenderer error, index=0, format=Format(1, null, video/mp4, video/avc, avc1.640029, 875480, und, [1080, 1920, 25.0, ColorInfo(BT709, Limited range, SDR SMPTE 170M, false, 8bit Luma, 8bit Chroma)], [-1, -1]), format_supported=YES, null, null)

视频参数是

视岶荡收已频ID:1格式: AVC

格式信息 Advanced Video Codec格式配置(Profile): High@L4.1格式设置:CABAC/4 Ref Frames格式设置,CABAC:是格式设置,参考帧:4 帧编解码器 ID: avc1编解码器 ID/信息: Advanced Video Coding时长: 11 秒 678 毫秒码率: 552 kb/s最大码率:875 kb/s宽度:1080 像素高度: 1920 像素画面比例:9:16帧率模式: 恒定帧率(CFR)帧率:25.000 FPS色彩空间: YUV色度抽样:4:2:0位深:8 位扫描类型: 逐行扫描(连续)数据密度[码率/(像素*帧率)]:0.011流大小: 787 KiB(87%)编码函数库:x264 core 148 r2721+46 0c4b09a xiaowan [8-bit@all X86 64psy=1 /fade compensate=0.00/psy rd=1.00:0.00/mixed ref=1/me range=16/chromame=1/trellis=2/8x8dct=1/cqm=0/deadzone=21,11 /fast pskip=1/chroma gp offset=-2 / thr编码设置:cabac=1/ref=4/deblock=10:0/analyse=0x3:0x133/me=umh/subme=9编码日期: 2025-12-26 03:56:01 UTC标记日期: 2025-12-26 03:56:03 UTC色彩范围: Limited色彩原色:BT.709传输特性: BT.709矩阵系数: BT.709编码配置区块(box): avcC

希望能得到大家的帮助,谢谢。


更多关于HarmonyOS 鸿蒙Next中OSS返回视频无法在Pura70 Harmony4上播放的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

这个问题好像是androidx.media3:media3-exoplayer版本问题

Github之前有人提过 参考这个flutter/flutter/issues/166481

更多关于HarmonyOS 鸿蒙Next中OSS返回视频无法在Pura70 Harmony4上播放的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


感谢您的回复。我们去看看。

这台测试机刚到,还是harmony 4.0的版本。

鸿蒙Next中OSS返回的视频无法在Pura70的HarmonyOS 4上播放,主要原因是两个系统版本间的媒体框架和编解码器存在差异。鸿蒙Next采用了全新的ArkTS/ArkUI框架和可能更新的媒体引擎,而HarmonyOS 4基于旧的架构。这导致了格式兼容性问题。

从错误信息和视频参数来看,这是一个典型的视频编码格式兼容性问题,而非简单的OSS或网络问题。问题核心在于HarmonyOS Next(Harmony 4)的媒体框架对特定AVC编码参数的严格限制

根本原因分析:

  1. 关键不兼容点:视频的 编码配置区块 (avcC box)编码函数库

    • 您的视频由 x264 core 148 r2721+46 0c4b09a 编码生成,这是一个较旧版本的x264编码器。
    • 生成的 avcC 配置数据(包含SPS、PPS等关键解码参数)可能包含了HarmonyOS Next媒体框架(基于或类似于Android Media3/ExoPlayer)无法识别或认为不合规的语法元素。这与芯片(9000S1)无关,是系统层媒体解码器的合规性校验导致。
  2. 错误信息解读ExoPlaybackException: MediaCodecVideoRenderer error 表明系统底层MediaCodec(硬解码)在初始化或解码该视频流时失败。format_supported=YES 仅表示容器格式(MP4/AVC)被支持,但具体的编码内容流无法被成功解码。

解决方案:

立即方案(转码): 对上传的视频进行预处理转码,使用主流且标准的编码工具和参数。建议:

  • 编码器:使用FFmpeg的 libx264(确保版本较新)或华为视频云服务等提供的标准转码。
  • 关键参数:确保Profile为 High,Level不低于 4.1(您的视频是4.1,可以保持)。可以尝试在FFmpeg中显式设置 -pix_fmt yuv420p-coder 1(启用CABAC),并避免使用x264的一些高级调优参数,使用 -preset medium-preset fast 这类通用预设。
  • 命令参考
    ffmpeg -i input.mp4 -c:v libx264 -profile:v high -level 4.1 -pix_fmt yuv420p -coder 1 -preset medium -movflags +faststart output.mp4
    
    -movflags +faststart 有助于网络播放。

长期建议: 在您的视频上传处理流水线中,增加针对HarmonyOS Next的兼容性转码策略。检测到用户设备为HarmonyOS Next时,或对所有上传视频统一进行一轮标准化的转码,确保编码输出完全符合公共标准。

排查验证: 您可以先用FFmpeg等工具按上述参数转码一个小视频,上传到相同OSS路径,在Pura70上测试播放,以验证是否为编码兼容性问题。

总结:此问题是由于视频编码器生成的非标准avcC数据与HarmonyOS Next严格的解码器兼容性要求冲突所致。通过标准化转码即可解决。

回到顶部