iphone - AVAudioRecorder обеспечивает монофоническое воспроизведение (звук воспроизводится только на одном канале) - PullRequest
1 голос
/ 17 июля 2009

Я использую AVAudioRecorder для записи звука и сохранения в файл wav (с использованием SDK 3.0) Словарь настроек содержит следующие значения

    NSMutableDictionary *recordSetting = [[NSMutableDictionary alloc] init];

    [recordSetting setValue :[NSNumber numberWithInt:kAudioFormatLinearPCM] forKey:AVFormatIDKey];
    [recordSetting setValue:[NSNumber numberWithFloat:44100.0] 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];

Даже после указания числа каналов равным 2, воспроизведение будет монофоническим (т. Е. Воспроизводится только один разъем для наушников вместо обоих каналов).

Кто-нибудь еще сталкивался с этой проблемой? Что-то не так со значениями словаря recordSetting?

Спасибо

Может кто-нибудь помочь мне с этим ... Если я укажу количество каналов равным 2, почему воспроизведение будет только в одном гнезде? (Я использую наушники для тестирования - те, которые пришли с моим iPhone)

Ответы [ 2 ]

9 голосов
/ 24 сентября 2009

Просто закомментируйте следующую строку

[recordSetting setValue:[NSNumber numberWithInt: 2] forKey:AVNumberOfChannelsKey];

Настройка по умолчанию должна работать.

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

1 голос
/ 17 июля 2009

Нет, в ваших настройках нет ничего плохого. Если вы попробуете ваше приложение на симуляторе, оно будет записывать и воспроизводить на двух каналах. Однако iPhone 3G и 3GS записывают звук только по одному каналу. Это относится также к аудио фильмов, снятых на 3GS.

Следовательно, это не ошибка.

...