AVAudioPlayer воспроизводит беззвучный режим при воспроизведении MPMoviePlayer

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

Однако есть один специфический сценарий, который AVAudioPlayer воспроизводит в беззвучном режиме, - это когда я воспроизводю видео в MPMoviePlayer.

В моем приложении перед воспроизведением фильма сначала воспроизводится звук BG.

Кто-нибудь может помочь? Это происходит только тогда, когда я смотрю фильм.

Дополнительные сведения:
Используемый цикл BG - тип m4a
используемый тип фильма - m4v

Я также обнаружил, что этот сценарий неоднократно появляется в iOS 5, но иногда это происходит даже в последних версиях.

Я исследовал всюду в Google, в документах Apple и в SO, но я не смог найти ничего относительно этого конкретного сценария.

Я даже попытался явно установить для категории AVAudioSession значение AVAudioSessionCategoryAmbient, а затем вызвать setActive. (Также пробовал метод setCategory:withOptions:error, но приложение по какой-то причине вылетает - проверено на устройстве)

Я даже пытался установить делегата и реализовать методы, когда пытался использовать AVAudioPlayerDelegate.

Кому-нибудь помочь? :(


person iOS_newbie    schedule 22.04.2013    source источник


Ответы (2)


NSURL *url = [NSURL URLWithString:self.videoURL];
            MPMoviePlayerViewController *mpvc = [[MPMoviePlayerViewController alloc] initWithContentURL:url];
            NSError *_error = nil;
            [[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: &_error];
            [self presentMoviePlayerViewControllerAnimated:mpvc];

Добавить этот фреймворк

#import <AVFoundation/AVFoundation.h>

попробуй вот так ...

person Arun    schedule 22.04.2013

попробуйте настроить аудиосеанс таким образом

AVAudioSession *audioSession = [AVAudioSession sharedInstance];
        NSError *err = nil;
        [audioSession setCategory :AVAudioSessionCategoryPlayAndRecord error:&err];
        if(err){
            NSLog(@"audioSession: %@ %d %@", [err domain], [err code], [[err userInfo] description]);
            return;
        }
        [audioSession setActive:YES error:&err];
        err = nil;
        if(err){
            NSLog(@"audioSession: %@ %d %@", [err domain], [err code], [[err userInfo] description]);
            return;
        }
person ajithmn89    schedule 22.04.2013