我想将 mp3 文件解码为 pcm 或 wav 数据。(Android 应用程序:API 20)
我使用 this从 mp3 解码数据的方法,但在使用 C++ 的 native 平台上。
解码后,我从解码器中知道填充输出缓冲数据是“声音/原始”格式。 此缓冲数据存储在 uint8_t* 中,因此它是 uint8_t(byte) 数组(值从 0 - 255)。
如果可能的话,我如何将这个数组转换成 pcm 或 wav 格式?
最佳答案
音频解码器目前都返回 16 位 PCM 音频,因此只需将您的 uint8_t*
转换为 int16_t*
,这样您就可以读出 PCM 样本。如果您有 size
字节的数据,您可以从 int16_t*
指针读取 size/2
样本。您可能还想从输出格式中检查 AMEDIAFORMAT_KEY_CHANNEL_COUNT
- 如果您总共有 size/2
个样本,您将有 size/(2*channels)
每个 channel 的样本元组。
关于c++ - 如何从 MediaCodec 输出缓冲区获取 pcm 数据缓冲区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26360382/