Запись звука как WAV на iphone

Я делаю приложение для записи iPhone, которое должно отправить звуковой файл в качестве .wav на внешний сервер.

Начиная с примера SpeakHere, я могу записывать звук как файл, но только как .caf

Кто-нибудь знает, как записать его как wav? Или как конвертировать из .caf в .wav на iphone? (Преобразование должно происходить на телефоне)

EDIT:

Мне интересно, можно ли что-либо сделать с использованием kAudioFileWAVEType вместо kAudioFileCAFType в AudioFileCreateWithURL

Ответы

Ответ 1

Yup, ключ kAudioFileWAVEType

AudioFileCreateWithURL (
            audioFileURL,
            kAudioFileWAVEType,
            &audioFormat,
            kAudioFileFlags_EraseFile,
            &audioFileID
        );

Переход на WAVE из CAF в примере SpeakHere вызывает запись как wav. Я также редактирую то же самое в классе воспроизведения и изменяю имя файла как Recording.wav

Ответ 2

Посмотрите libsndfile. Это хорошо используемая (в том числе Audacity) библиотека C для работы с большим количеством форматов файлов. Он поддерживает чтение и запись различных форматов CAF и WAV.

Структура файла CAF и WAV format довольно схожи. Если худшее приходит к худшему, преобразование не должно быть слишком сложным.

Это будет связано с использованием блока аудиоданных и копированием, как в WAV файл, и использованием информации в разделе "Описание аудио" для добавления эквивалентной подмки fmt для файла WAV. Это довольно простое копирование байтов.

Однако, помните (как заметил Эрик) есть проблемы с лицензированием, см.: Может ли библиотека Libsndfile использоваться на iPhone iOS?