Objective-c/IOS:向后播放音频文件的最简单方法是什么

Dav*_*122 6 iphone audio reverse objective-c

我已经在这个问题上苦苦挣扎了很长一段时间,并且没有代码示例在网上完成.谁能帮我?

我的应用程序使用AVFoundation来录制音频.@ 16位深度,2个通道,WAV

我可以访问音频的字节,我只是不知道如何反转它.

Goz*_*Goz 7

在波数据中,样本是交错的.这意味着数据的组织方式如下.

Sample 1 Left | Sample 1 Right | Sample 2 Left | Sample 2 right ... Sample n Left | Sample n right
Run Code Online (Sandbox Code Playgroud)

由于每个样本是16位(2字节),因此前2个通道样本(即左侧和右侧)的大小为4个字节.

这样您就知道波形数据块中的最后一个样本如下:

wavDataSize - 4
Run Code Online (Sandbox Code Playgroud)

然后,您可以通过从记录结束开始并向后读取将每个样本复制到不同的缓冲区中来一次加载每个样本.当您到达波形数据的开头时,您已经反转波形数据并且播放将被反转.

编辑:如果您想在iOS上轻松读取wave文件,请查看音频文件服务参考.

编辑2:

readPoint  = waveDataSize;
writePoint = 0;
while( readPoint > 0 )
{
    readPoint -= 4;
    Uint32 bytesToRead = 4;
    Uint32 sample;
    AudioFileReadBytes( inFile, false, maxData, &bytesToRead &sample );
    AudioFileWriteBytes( outFile, false, writePoint, &bytesToRead, &sample );

    writePoint += 4;
}
Run Code Online (Sandbox Code Playgroud)

  • 感谢Goz,这对我帮助很大. (2认同)
  • 使用@Goz答案我创建了一个小应用程序,它记录用户的声音并反向播放.https://github.com/kiranb/iReversePlay希望这对其他人有所帮助. (2认同)