iPhone – конвертировать mp3 в wav?
-
16-09-2019 - |
Вопрос
Есть ли способ конвертировать mp3-файл в wav/aiff в приложении для iPhone?У меня есть mp3, но я хочу объединить его с другими файлами, и я знаю, что это можно сделать только при использовании форматов PCM.
Может кто-нибудь помочь мне здесь?
Спасибо.
Некоторые вещи, которые я пробовал
Я попытался использовать метод AudioConverterFillComplexBuffer() и его обратный вызов для преобразования mp3 в caf, но байты на пакет и на кадр считываются как 0.Есть идеи, как я могу или могу ли я использовать эту функцию?
Еще раз спасибо.
Решение
WAV и AIFF часто (обычно?) содержат PCM, так в чем же тут возражение?Или вы говорите, что вам нужно передать данные MP3 в PCM, чтобы микшировать их (возможно, в многоканальном микшерном аудиоустройстве).Если вы серьезно хотите это сделать, обратите внимание на Core Audio, а именно:
- Службы аудиофайлов (для чтения формата MP3 и записи AIFF или WAV)
- Службы преобразования аудиофайлов (для преобразования данных MP3 в PCM и/или для кодирования из PCM в какой-либо другой кодек, если вы собираетесь записать файл).Обратите внимание, что данный конвертер не может конвертировать два закодированных формата;вы можете конвертировать MP3 в PCM или PCM в AAC, но для преобразования MP3 в AAC вам понадобятся два конвертера.
- Расширенные аудиофайловые службы, сочетающие в себе оба вышеперечисленных.
Проверьте Пример конвертации файла в Core Audio SDK.При этом открывается исходный файл для чтения, описывается желаемый формат целевого файла, считывается буферы из одного и записывает их в другой.В коде показано как раздельное использование файловых сервисов + сервисов конвертации, так и удобное использование ExtAudioFiles.
Кроме того, обязательно поймите разницу между кодеками и форматами файлов, а также какие комбинации кодеков и форматов являются допустимыми.Я был удивлен, когда впервые узнал, что PCM должен быть с прямым порядком байтов в WAV и с прямым порядком байтов в AIFF.
Другие советы
Вероятно, вы сможете сделать это с помощью подходящего набора модулей Core Audio, но это, вероятно, потребует много ресурсов процессора.Вам следует преобразовать данные заранее (возможно, во время сборки?), если можете.