2010-09-08 3 views
1

Я пытаюсь сравнить два .caf-файла на основе некоторого параметра, например максимальных децибел или продолжительности файлов. Я записал эти два файла, используя AVAudioRecorder класс, используя следующие параметры:Как я могу сравнить два аудиофайла на основе определенного параметра say maximum decibel?

NSMutableDictionary* recordSetting = [[NSMutableDictionary alloc] init]; 
    [recordSetting setValue :[NSNumber numberWithInt:kAudioFormatAppleIMA4] forKey:AVFormatIDKey]; 
    [recordSetting setValue:[NSNumber numberWithFloat:44100.0] forKey:AVSampleRateKey]; 
    [recordSetting setValue:[NSNumber numberWithInt: 2] forKey:AVNumberOfChannelsKey]; 
    [recordSetting setValue :[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsBigEndianKey]; 
    [recordSetting setValue :[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsFloatKey]; 

Спасибо за помощь!

ответ

1

Чтобы получить длительность файлов следующий код:

NSFileManager *fileManager = [NSFileManager defaultManager]; 
NSError* error; 
NSDictionary *fileAttributes = [fileManager attributesOfItemAtPath:filePath error&error]; 

NSInteger duration = fileAttributes.fileAttributes/sampleRare/numberOfChannels/bytesPerSample; 

Чтобы получить максимум децибел вы должны проанализировать содержание файла.

+0

Благодарим за отзыв. Я попробую сделать это, чтобы определить продолжительность звука. Но как я могу анализировать содержимое файла? Должен ли я использовать NSData? Недостаточно функциональности для NSData. Можно ли использовать метод averagePowerForChannel во время записи или воспроизведения звука? – Viraj

+0

Метод averagePowerForChannel возвращает текущую среднюю мощность в децибелах для записи/воспроизведения звука, поэтому ее следует использовать только во время записи/записи. Вы можете использовать NSData для получения содержимого выходящего файла. После того, как вы получили контент, используйте свой любимый метод/библиотеку для его анализа. Чтобы получить массив C-стиля из объекта NSData, используйте метод байтов. – eviltrue

+0

Как насчет того, чтобы использовать метод averagePowerForChannel в цикле каждые 3 секунды, пока я записываю или играю и беру на себя наибольшее значение? Также после того, как я получаю контент, я совершенно не уверен, что с ним делать? Или как анализировать его с помощью моего любимого метода/библиотеки? Я новичок в разработке аудио. Благодарю. – Viraj