AVAudioRecorder не записывает правильный заголовок файла WAV

Я работаю над проектом на iPhone, где я записываю звук с микрофона устройства с помощью AVAudioRecorder, а затем буду управлять записью.

Чтобы убедиться, что я правильно читаю образцы из файла, я использую модуль волны python, чтобы проверить, возвращает ли он те же образцы.

Однако модуль волны python возвращает "фрагмент fmt и / или фрагмент данных отсутствует "при попытке открыть wav-файл, сохраненный AVAudioRecorder.

Это настройки, которые я использую для записи файла:

[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 wave.

Это так выглядят первые 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?

10
задан ch3rryc0ke 8 June 2011 в 21:24
поделиться