Я работаю над проектом на 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?