我正在研究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标头?
答案 0 :(得分:33)
答案 1 :(得分:0)
您要在磁盘上录制的文件的名称是什么?我有一个类似的问题,只是通过在我的文件名末尾添加.wav
来解决它...我猜AVAudioRecorder
需要扩展来解决问题。