Как отключить / включить звук при воспроизведении видео с помощью MPMoviePlayerController?

Я создал свои собственные элементы управления для использования сMPMoviePlayerController, Пока что все работает, кроме кнопки отключения звука.

Я настроилAVAudioSession используя следующий код, прежде чем я создаю свой экземплярMPMoviePlayerController.

    NSError *modeError = nil;
    [self.audioSession setMode:AVAudioSessionModeMoviePlayback error:&modeError];
    if (modeError != nil) {
        NSLog(@"Error setting mode for AVAudioSession: %@", modeError);
    }

    NSError *categoryError = nil;
    [self.audioSession setCategory:AVAudioSessionCategoryPlayback error:&categoryError];
    if (categoryError != nil) {
        NSLog(@"Error setting category for AVAudioSession: %@", categoryError);
    }

Тогда в моем методе обратного вызова кнопки отключения звука у меня есть следующий код:

    NSError *activeError = nil;
    [self.audioSession setActive:NO error:&activeError];
    if (activeError != nil) {
        NSLog(@"Error setting inactive state for AVAudioSession: %@", activeError);
    }

При нажатии на кнопку Mute я получаю следующую ненужную ошибку:

Error Domain=NSOSStatusErrorDomain Code=560030580 "The operation couldn’t be completed. (OSStatus error 560030580.)"

Я ссылаюсь наAVFoundation фреймворк.

Это действительно начинает меня беспокоить, так как я не могу на всю жизнь найти способ уменьшить или отключить звук воспроизведения моего приложения.

Я не хочу изменять общий объем системы, а только уровень приложения, как определеноAVAudioSession AVAudioSessionCategoryPlayback категория.

Кажется, вы можете установить громкостьAVAudioPlayer но неMPMoviePlayerController, Я видел другие посты здесь на SO, которые говорят просто создать экземплярAVAudioPlayer и установить громкость, но это просто вызывает сбой моего приложения, и я ожидаю, что это как-то связано с тем, что я не используюinitWithContentsOfURL:error: или жеinitWithData:error: и вместо этого используя `init '.

Любая помощь будет оценена.

Ответы на вопрос(2)

Ваш ответ на вопрос