官方的Chrome浏览器是不支持h265格式的MP4播放,可能是由于Google处于维护在的VP9编码生态考虑(不要跟我说专利费太重问题,微软的edge,苹果的safari都支持)。实际上chrome最初也不支持h264视频解码,但h264在视频编码媒体领域中已经是势不可当(2003年发布),处于绝对的领导地位,后面不得不支持h264的MP4播放。对于新一代视频编码h265,Google同样持以抵制的态度,至今为止H265商业化8年了(2013年发布),Google的chrome还是不支持。但实际上硬件编码器都已经完全支持h265编码,相反大多数硬编码器都不支持VP9(目前的英伟达,AMD,显卡都不支持VP9编码)。要想实现低流量,高质量的视频传输,加上硬件的加持,编码器只能使用h265了,同时客户端目前所有的显卡(包括Intel核显)都支持h265解码了。而chrome 为了封杀h265,就是不支持h265解码。本文就介绍如何定制开源的chrome,支持h265视频解码。
H265/HEVC
一、修改文件如下:
1)ffmpeg项目修改
ffmpeg项目修改
本质就是修改ffmpeg的编译配置,让ffmpeg支持hevc编码。同时增加了autorename_libavcodec_hevcdec.c和 autorename_libavformat_hevc.c。这2个文件其实就是将原来的文件,重命名加上一个autorename_xxx前缀而已。
2)chrome项目修改
chrome项目修改
chrome其实默认已经支持hevc了,但开关默认是关闭了,我们需要将相关的宏打开,修改相应的探测函数。
二、 重新编译chrome,该过程是增量编译,相比之前更新了media.dll和ffmpeg.dll.
VS编译chorme
三、重启chrome.exe,播放一个h265视频。
H265视频信息如下:
h265视频参数
4K/H265视频播放效果
以上只是通过ffmpeg实现h265软件解码,还没有用PC上的显卡GPU硬件来实现硬件解码,h265编码相对h264要复杂很多,所以解码时CPU占用率比较高,后面我们进一步探索chrome的h265的硬件解码。