Запись звука в формате WAV на iPhone - PullRequest
14 голосов
/ 20 февраля 2009

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

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

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

EDIT:

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

Ответы [ 2 ]

20 голосов
/ 24 февраля 2009

Да, ключ kAudioFileWAVEType

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

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

2 голосов
/ 20 февраля 2009

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

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

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

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

...