在上一篇文章《Chromium 改造实录:增加 MPEG TS 格式支持》中,讲了如何为 Chromium 增加 MPEG TS 流的支持。但这项任务并没有结束,因为 TS 只是一种容器格式,现在只是相当于把盖子打开了,而里面的视频流和音频流能否播放,取决于音视频采用何种编码格式以及这些编码格式是否支持。
在解决了 TS 流中 H264 视频编码的解码问题后,我又碰到了音频解码问题。从 log 上看有如下信息:
03-08 06:38:13.096 31080 31932 V chromium: [VERBOSE1:ffmpeg_common.cc(122)] Unknown audio CodecID: 86016
03-08 06:38:13.096 31080 31932 V chromium: [VERBOSE1:batching_media_log.cc(37)] MediaEvent: {"debug":"Warning, FFmpegDemuxer failed to create a valid/supported audio decoder configuration from muxed str}
这里的 audio CodecID 是指定义在 third_party/ffmpeg/libavcodec/codec_id.h 文件中的 。这个文件中的 ID 以十六进制形式定义,简单转换一下,可以知道 log 中的 ID 对应的是 AV_CODEC_ID_MP2。
又是一个比较古旧的音频格式,而不是我们熟知的 MP3 和 AAC。关于 MP2 格式,介绍如下:
MP2 是 MPEG-1 Layer II 的缩写