选择最新 Chromium,支持 H264 / H265

本文讲述了作者在自编 Chromium WebView 中遇到H264/H265解码问题,通过分析源码、调整编译选项,发现Chromium的MediaCodecVideoDecoder创建失败。升级到最新版本111.0.5563.49后,问题得到解决。同时,建议使用ExoPlayer来检查Android系统对MediaCodec的支持。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在做了充分的准备后,我信心满满的向着 H265 8K 视频解码这个目标发起进攻,然而,正打算动手的时候,我突然发现,别说支持 H265 ,自编的 Chromium WebView 连 H264 解码都不支持。使用 WebView Shell 访问测试页面,结果如下:

115bd0390bff76eb1323133783da34a4.png

错误日志如下:

03-05 23:20:21.731  9061  9124 E chromium: [ERROR:batching_media_log.cc(26)] MediaEvent: MEDIA_ERROR_LOG_ENTRY {"error":"FFmpegDemuxer: no supported streams"}

令我不解的是,Android 10 的预编译 Webview 却没这样的问题。

测试的视频是 MP4 格式,从日志上看,大致可以判断是对流的解析出现问题。浏览 media 部分的代码,可以看到有 mp4_stream_parser.h / mp4_stream_parser.cc 文件,基本可以判断 MP4StreamParser 类的作用就是解析 MP4 格式的。StreamParser 使用工厂模式创建,工厂类为 StreamParserFactory,查看源码,可以发现有很多代码被 BUILDFLAG(USE_PROPRIETARY_CODECS) 宏包起来了。

联想到 Chromium 文档中有提到专有解码器的,原话为:

此外,您可能希望包括对专有音频和视频编解码器的支持,就像 Google 的 WebView 所做的那样。 这些编解码器可能受到专利或许可协议的保护,在分发包含它们的 WebView 构建之前,您应该寻求法律建议。

因为平台是支持硬解 H264 / H265 的,没有联想到和这个有关系。赶紧加到编译选项中:

ffmpeg_branding = "Chrome"
proprietary_codecs = true
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云水木石

但行好事,莫问前程

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值