Конвертировать записанный звук в iphone из одного формата в другой, скажем, WAV в mp3 - PullRequest
5 голосов
/ 21 сентября 2010

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

 NSDictionary *recordSetting = [[NSMutableDictionary alloc] init];
 [recordSetting setValue:[NSNumber numberWithInt:kAudioFormatLinearPCM] forKey:AVFormatIDKey];//kAudioFormatMicrosoftGSM,kAudioFormatLinearPCM
 [recordSetting setValue:[NSNumber numberWithFloat:8000] forKey:AVSampleRateKey]; 
 [recordSetting setValue:[NSNumber numberWithInt: 2] forKey:AVNumberOfChannelsKey];
 [recordSetting setValue :[NSNumber numberWithInt:16] forKey:AVLinearPCMBitDepthKey];
 [recordSetting setValue :[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsBigEndianKey];
 [recordSetting setValue :[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsFloatKey];

Запись работает прекрасно. Теперь я хочу преобразовать этот звуковой файл в формат mp3. Могу ли я сделать это с помощью AudioToolBox Framework. Я попробовал это

 AudioStreamBasicDescription sourceFormat,destinationFormat;
 //Setting up source Format setting..here wav
 sourceFormat.mSampleRate   = 8000.0;
 sourceFormat.mFormatID    = kAudioFormatLinearPCM;
 sourceFormat.mFormatFlags   = kAudioFormatFlagIsSignedInteger ;
 sourceFormat.mBytesPerPacket  = 4;
 sourceFormat.mFramesPerPacket  = 1;
 sourceFormat.mBytesPerFrame   = 4;
 sourceFormat.mChannelsPerFrame  = 2;
 sourceFormat.mBitsPerChannel  = 16;

 destinationFormat.mSampleRate  = 8000.0;
 destinationFormat.mFormatID   = kAudioFormatMPEGLayer3;
 destinationFormat.mFormatFlags  = 0;
 destinationFormat.mBytesPerPacket = 4;
 destinationFormat.mFramesPerPacket = 1;
 destinationFormat.mBytesPerFrame = 4;
 destinationFormat.mChannelsPerFrame = 2;
 destinationFormat.mBitsPerChannel = 16;

 OSStatus returnCode     =     AudioConverterNew(&sourceFormat,&destinationFormat,&converter);
 if (returnCode) {
    NSLog(@"error getting converter : %d",returnCode);
    return;
 }

Функция AudioConverterNew () выдаёт мне ошибку kAudioConverterErr_FormatNotSupported ('fmt'). Я пробовал с различными комбинациями mFormatID и mFormatFlag. Но всякий раз, когда один из оперантов (источник или место назначения) - mp3, я получаю эту ошибку. Теперь, пожалуйста, помогите мне с этими вопросами.

  1. Можем ли мы использовать каркас AudioToolbox и функции для преобразования звуков между сжатым и не сжатый формат (сейчас хочу конвертировать между .wav и .mp3). В AudioConverterNew документация, которую они говорят «Кодирование и декодирование между линейный PCM и сжатые форматы поддерживается ". Но они не конкретно говоря, какой сжатый форматы.

  2. Если ответ на вопрос 1 «нет» тогда какие рамки мне нужно использовать для преобразования звука между вышеупомянутые форматы?

  3. Не относится к пункту 2 выше, но может кто-нибудь, дайте мне ссылку на любой сайты, где информация о различные форматы звука (WAV, MP3, AAC и т. д.) и их цифровые представления (cpm, lpcm и т. д.), так что я могу понять, который использует что.

1 Ответ

1 голос
/ 02 июля 2012

Некоторые ответы

  1. Да, вы можете использовать платформу AudioToolbox для преобразования звуков, за исключением случая формата .mp3.Из-за проблем с авторским правом, mp3 не доступен в качестве целевого формата в рамках.

  2. Если вы хотите конвертировать в mp3, вам, вероятно, придется использовать библиотеки LAME: http://lame.cvs.sourceforge.net/viewvc/lame/lame/USAGE

  3. Вот один пример для спецификации .mp3: http://mpgedit.org/mpgedit/mpeg_format/MP3Format.html Другие форматы, которые вы можете легко найти с помощью веб-поиска

Надеюсь, что это поможет

...