IOS - 解码 PCM 字节数组

标签 ios audio decode pcm

我在我的 objective-c 应用程序上遇到了一个问题。

我正在从向我发送 PCM 编码声音的服务器 (Socket c#) 读取一个字节数组,我目前正在寻找一个示例代码来为我解码这个字节数组 (NSData) 并播放它。

有人知道解决办法吗?或者如何阅读 u-Law 音频?

非常感谢! :D

最佳答案

此链接包含有关 mu-law 编码和解码的信息:

http://dystopiancode.blogspot.com.es/2012/02/pcm-law-and-u-law-companding-algorithms.html

#define MULAW_BIAS 33
/*
 * Description:
 *  Decodes an 8-bit unsigned integer using the mu-Law.
 * Parameters:
 *  number - the number who will be decoded
 * Returns:
 *  The decoded number
 */
int16_t MuLaw_Decode(int8_t number)
{
 uint8_t sign = 0, position = 0;
 int16_t decoded = 0;
 number=~number;
 if(number&0x80)
 {
  number&=~(1<<7);
  sign = -1;
 }
 position = ((number & 0xF0) >>4) + 5;
 decoded = ((1<<position)|((number&0x0F)<<(position-4))|(1<<(position-5)))
            - MULAW_BIAS;
 return (sign==0)?(decoded):(-(decoded));
}

当您拥有未压缩的音频时,您应该能够使用 Audio Queue API 播放它。

祝你好运!

关于IOS - 解码 PCM 字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11413781/

相关文章:

ios - 如何在单元格 iOS 中为按钮设置标签?

android - 如何在 pjsip android 应用程序中启用扬声器?

audio - 调试脚本

不同屏幕尺寸的 iOS 缩放约束

ios - 如何在 Swift 中更新底部 TabBar 而不进行导航?

go - 如何在使用 Golang 和 gin-gonic 动态创建的 HTML 中渲染/显示图像

ios - JSONDecoder - "Expected to decode Dictionary<String, Any> but found a string/data instead."

c# - Protobuf 字符串到可读字符串?

ios - 动态添加具有特定文本和坐标的标签

iOS:在相机打开并拍照时播放来自另一个应用程序的音乐