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
这个问题好像是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编码参数的严格限制。
根本原因分析:
-
关键不兼容点:视频的
编码配置区块 (avcC box)与编码函数库。- 您的视频由
x264 core 148 r2721+46 0c4b09a编码生成,这是一个较旧版本的x264编码器。 - 生成的
avcC配置数据(包含SPS、PPS等关键解码参数)可能包含了HarmonyOS Next媒体框架(基于或类似于Android Media3/ExoPlayer)无法识别或认为不合规的语法元素。这与芯片(9000S1)无关,是系统层媒体解码器的合规性校验导致。
- 您的视频由
-
错误信息解读:
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严格的解码器兼容性要求冲突所致。通过标准化转码即可解决。

