【发布时间】:2011-09-09 16:59:55
【问题描述】:
在我的应用程序中,我将音频文件的字节存储在 NSMutableData 中,如下所示:
NSMutableData *data = [NSMutableData dataWithBytes:byteData length:len];
我以后可以使用
播放这个player = [[AVAudioPlayer alloc] initWithData:data error:&error];
我的问题是什么代码会反转数据对象中的字节,以便在播放时声音是向后的?
非常感谢任何帮助。
顺便说一下,音频的byteData是通过以下方式获取的:
NSMutableData *wave =[NSMutableData dataWithContentsOfURL:url];
NSUInteger len = [wave length];
Byte *byteData = (Byte*)malloc(len);
memcpy(byteData, [wave bytes], len);
【问题讨论】:
-
如果你想反转音频,你不能只反转数据,除非它是未编码的 8 位/样本单声道,它不会是。
-
需要知道格式:每个样本有多少字节。
-
那么采样率是44100.0,格式是wav
-
wav 可以是 8 位或 16 位 PCM。给定文件大小、通道数、采样率和长度(以秒为单位)的小数学应该提供每个样本的位/字节。但更复杂的是,有一个文件格式要 wav,PCM 部分必须确定并且需要反转。最好弄个十六进制编辑器,从 wav 格式的文档中弄明白,一个是:sonicspot.com/guide/wavefiles.html
-
我的是 16 位 PCM,哇,这对我来说是不可能的(一个新手,你可能知道)。像反转音频播放这样简单的事情应该很容易。
标签: iphone objective-c audio nsmutabledata