Chromium浏览器不能播放MP4

一、问题发现:

      前面我们进行一番VS2019编译chrome的实践。编译出来的chome.exe能正常的打开网页,欣喜之余,打开优酷,发现优酷网页能正常打开,点击视频播放一直黑屏,腾讯视频也是如此。

                                                   优酷网站播放视频黑屏

尝试本地播放一个MP4,也是黑屏。

                                                本地播放MP4黑屏

    尝试进入youtube,看看google自家的视频能否播放。果然,Google自家的视频网站播放是OK的,尝试播放一个VP9编码的webm视频,播放也是OK的。很显然,是编译的浏览器默认不支持MP4封装h264编码的视频,默认只支持google自家的webm封装的VP9编码视频。

                                                youtube视频播放OK

                                             VP9编码的webm播放OK

现在的目标是让编译的chrome.exe 支持MP4播放。

二、分析过程:

网上找了一番,很多人说chromium编译默认不编译ffmpeg,所以播放不了MP4视频。这里整理网友几种解决方案:

1)有人建议将ffmpeg编译对应编码库(一堆的dll库)放到chrome.exe目录下

              这里有难处:ffmpeg版本如何和chrome.exe对应起来,自己再Windows上编译个ffmpeg也是很费劲。

2)有人建议将官方发布的chrome对应的ffmpeg的dll拷贝过去,但实际上近段时间官方的chrome安装包里面根本没有ffmpeg相关的dll(商业版的chrome压根就有没有用过ffmpeg还是将ffmpeg静态编译进其他dll,我们无法确定)

三、新发现:

      发现一个编译参数可以将chrome以组件形式编译(即is_component_build = true),默认编译第三方库,第三方库都是静态编译到其他dll中去,打开这个开关。发现编译后有一个叫ffmpeg.dll,但这个ffmpeg.dll才3M,不是我们常见的ffmpeg官方编译的一堆dll。这个dll到底是真正包含了ffmpeg的dll,还是只是对ffmpeg的一个接口适配层呢?我们查看ffmpeg.dll导出的符号表(windows上称为导出表),发现ffmpeg对外的接口,都在这个符号表中。很显然ffmpeg默认是已经编译好了。只是chrome可能某些开关没有打开,导致chrome无法真正将ffmpeg的API用起来。

                                                   ffmpeg.dll的符号表

四、问题解决:

  终于找到这个开关。编译前配置生成工程增加proprietary_codecs = true ffmpeg_branding = “Chrome"这2个宏即可,再次编译生成chrome.exe,播放MP4,播放youku等视频网站都OK了。

                                                chromium 播放MP4

下一步,我们将探索4k/h265的MP4在chrome上的播放,更多更详细信息请关注公众号:AV_Chat

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

江海细流

如该文章对你有帮助,请支持!

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

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

打赏作者

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

抵扣说明:

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

余额充值