MediaCodec和24位PCM

yan*_*ano 7 android mediacodec

我成功地使用MediaCodec来解码音频,但是当我加载带有24位样本的文件时,我无法知道这已经发生了.由于应用程序假定为16位样本,因此失败.

当我打印MediaFormat时,我明白了

{mime=audio/raw, durationUs=239000000, bits-format=6, channel-count=2, channel-mask=0, sample-rate=96000}
Run Code Online (Sandbox Code Playgroud)

我假设"位格式"是一个提示,但是这个键没有在API中声明,并且在输出格式改变时实际上没有发出.我明白了

{mime=audio/raw, what=1869968451, channel-count=2, channel-mask=0, sample-rate=96000}
Run Code Online (Sandbox Code Playgroud)

(顺便说一下什么是"what"键?我注意到如果我将其解释为4charcode,它是" outC"......只是一个标志,它是一个输出格式?)

那么这里最好的办法是什么?如果我把ByteBuffer直线送到AudioTrack它那当然会播放静电(假设PCM 16).

如果我知道价值,那么我可以自己转换!我从其他问题中了解到,你也无法决定输出格式.