AVAudioRecorder没有写出正确的WAV文件头

时间:2011-06-08 20:12:02

标签: python ios avaudiorecorder wave

我正在研究iPhone上的一个项目,我正在使用AVAudioRecorder从设备麦克风录制音频,然后将操作录音。

为了确保我正确地读取文件中的样本,我正在使用python的wave模块来查看它是否返回相同的样本。

然而,当尝试打开由AVAudioRecorder保存的wav文件时,python的wave模块返回“fmt chunk和/或data chunk missing”。

这些是我用来录制文件的设置:

[audioSettings setObject:[NSNumber numberWithInt:kAudioFormatLinearPCM] forKey:AVFormatIDKey];
[audioSettings setObject:[NSNumber numberWithInt:16] forKey:AVLinearPCMBitDepthKey];
[audioSettings setObject:[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsBigEndianKey];
[audioSettings setObject:[NSNumber numberWithFloat:4096] forKey:AVSampleRateKey];
[audioSettings setObject:[NSNumber numberWithInt:1] forKey:AVNumberOfChannelsKey];
[audioSettings setObject:[NSNumber numberWithBool:YES] forKey:AVLinearPCMIsNonInterleaved];
[audioSettings setObject:[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsFloatKey]; 

之后,我只是打电话给recordForDuration来实际录音。

录制成功 - 我可以播放文件等,我可以使用AudioFile服务读取示例,但我无法验证它,因为我无法使用Python的波形模块打开文件。

这是文件的前128个字节:

1215N:~/Downloads$ od -c --read-bytes 128 testFile.wav
0000000   R   I   F   F   x   H 001  \0   W   A   V   E   f   m   t    
0000020 020  \0  \0  \0 001  \0 001  \0   @ 037  \0  \0 200   >  \0  \0
0000040 002  \0 020  \0   F   L   L   R 314 017  \0  \0  \0  \0  \0  \0
0000060  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
*
0000200

知道我需要做些什么才能确保AVAudioRecorder写出正确的WAV标头?

2 个答案:

答案 0 :(得分:33)

答案 1 :(得分:0)

您要在磁盘上录制的文件的名称是什么?我有一个类似的问题,只是通过在我的文件名末尾添加.wav来解决它...我猜AVAudioRecorder需要扩展来解决问题。