在《选择最新 Chromium,支持 H264 / H265》一文中,记录了我通过升级 Chromium 版本解决了 H264 / H265 视频支持难题。然而难题接踵而至,这次的难题是 MPEG TS 流的支持。
MPEG2-TS 传输流广泛应用于数字电视广播系统,所以是一个不得不支持的格式。通过查询资料,了解到 FFmpeg 是支持 TS 格式的,但 Chromium 中并没有默认开启这个功能。这可能是出于版权、性能或者兼容性的考虑。
关于如何让 Chromium 支持 TS,我请教了一下 AI。AI 给的思路是:
修改 FFmpeg 的配置文件,开启 MPEG TS 的解复用器和解码器;
修改 Chromium for Android 的媒体框架,添加对 MPEG TS 的支持;
修改 Chromium for Android 的网络模块,添加对 MPEG TS 的传输协议的支持。
按照 AI 的建议,我一步步解决了 TS 格式的支持问题。
一
第一步研究 Chromium 的编译参数。媒体有关的编译选项主要位于 media 目录下的 media_options/gni 文件中。研究了一下,发现一个 enable_mse_mpeg2ts_stream_parser 参数,目前的值是:
enable_mse_mpeg2ts_stream_parser =
proprietary_codecs && (enable_cast_receiver || use_fuzzing_engin