如何从MediaCodec输出缓冲区中获取pcm数据缓冲区
How to get pcm data buffers from MediaCodec output buffers?
我想将mp3文件解码为pcm或wav数据。(Android应用程序:API 20)
我使用这种方法来解码mp3中的数据,但在使用C++的原生平台上。
解码后,我知道从解码器填充的输出缓冲数据是"声音/原始"格式。这个缓冲数据存储在uint8_t*中,所以它是uint8_t(字节)数组(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)
个样本元组。
相关文章:
- 使用 strcat 获取缓冲区溢出错误
- 是否可以从 OpenGL 缓冲区获取原始大小的像素?
- 在 DirectX 11 中从 GPU 读回顶点缓冲区(并获取顶点)
- 让 iaxClient 将音频发送到缓冲区而不是音频设备/从缓冲区获取音频
- CSV文件未从缓冲区获取数据
- 从 CImage AtlImage 获取缓冲区数组
- 如何在运行时从平面缓冲区获取数据值和数据类型
- 无法获取索引缓冲区以在 OpenGL 中绘制正方形
- 从交换链获取多个屏幕缓冲区
- 从索引缓冲区中获取索引
- 如何使用 std::istringstream 获取正确的缓冲区大小以进行数据解析
- 获取 vscode c++ 插件以查找协议缓冲区标头
- GlReadPixel始终从深度缓冲区0中获取
- 获取当前目录,我可以在不知道最大缓冲区大小的情况下进行
- 套接字:在没有memcpy的情况下,使用recvfrom将UDP数据获取到字对齐的缓冲区
- 如何从窗口中获取像素数据像素缓冲区并提取RGB
- OpenGL:只获取模具缓冲区而不获取深度缓冲区
- 获取字符串流中的最后一个字符,而不复制其整个缓冲区
- 获取字符串流的适当大小,以便将其放入缓冲区
- 协议缓冲区获取EnumDescriptor *