HTML5支持更多音视频格式

HTML5引进了新的的

在Chromium代码工程的生成gn工程的时候加上以上两个值:

ffmpeg_branding="Chrome"
proprietary_codecs=true

就可以让Chromium编译出来的浏览器像Chrome一样支持MP3、MP4格式格式了。

proprietary_codecs的作用是开启代码中的USE_PROPRIETARY_CODECS宏,使Chromium的代码支持更多的音视频解码格式。ffmpeg_branding则是作用于Chromium所依赖的第三方ffmpeg工程的代码,使之编译相关的支持代码。

Chromium的音视频解码是调用的第三方库ffmpeg。ffmpeg几乎支持所有的音视频格式,那么Chromium理论上也是可以支持所有的音视频格式的能力。实际上由于ffmpeg这个库很大,为了优化浏览器的体积,Chromium只编译链接了它所需要支持格式的相关代码,只占整个ffmpeg很小的一部分。

我以3GP格式为例,介绍如何让Chromium内核的video标签支持更多视频格式。

我们先编写一个测试3gp格式视频的html文件:

 
 
 

 

然后在MimeUtil::AddSupportedMediaFormats里面添加如下2行:

CodecSet tgpp_codecs(mp4_codecs);
AddContainerWithCodecs("video/3gpp", tgpp_codecs, true);

这是让浏览器能够识别Video标签中的video/3gpp。

3gp只是视频的容器格式,实际上的音频和视频的编解码器是有多种可能的。通过工具查看这个test.3gp的音频格式,如下:

这个的视频格式是mpeg4,是Chromium内核默认所不支持的。而音频格式是aac,Chromium内核默认支持。所以为了支持这个浏览器播放这个3gp文件,只需要添加mepg4的解码器相关的代码即可。所以我们修改一下Chromium代码编译ffmpeg的开关。

因为之前我们已经把ffmpeg_branding设置成”Chrome”,因此我们的的配置文件是third_partyffmpegchromiumconfigChromewinia32config.h。

在这个config.h里面搜索关键词MPEG4,找到了#define CONFIG_MPEG4_DECODER 0,然后我们把这个宏的值改成#define CONFIG_MPEG4_DECODER 1。然后找到相关的依赖diamond加入到third_partyffmpegffmpeg_generated.gni中恰当的位置。重新生成工程编译代码即可。最后效果如下图:

责编内容来自:gclxry (源链) | 更多关于

阅读提示:酷辣虫无法对本内容的真实性提供任何保证,请自行验证并承担相关的风险与后果!
本站遵循[CC BY-NC-SA 4.0]。如您有版权、意见投诉等问题,请通过eMail联系我们处理。
酷辣虫 » 前端开发 » HTML5支持更多音视频格式

喜欢 (0)or分享给?

专业 x 专注 x 聚合 x 分享 CC BY-NC-SA 4.0

使用声明 | 英豪名录