Comment couper / activer le son lors de la lecture d'une vidéo à l'aide de MPMoviePlayerController?

J'ai créé mes propres contrôles personnalisés pour une utilisation avec le MPMoviePlayerController. Jusqu'à présent, tout fonctionne sauf le bouton de mise en sourdine de contrôle.

J'ai configuré le AVAudioSession en utilisant le code suivant avant de créer ma instance de la 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);
    }

Ensuite dans mon bouton de mise en sourdine de la méthode de rappel, j'ai le code suivant:

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

En cliquant sur le bouton Mute, j'ai le inutile d'erreur:

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

Je suis un lien vers la AVFoundation cadre.

Cela commence vraiment à me gonfler car je ne peux pas pour la vie de moi un moyen de réduire ou couper le son de la lecture audio de ma demande.

Je ne veux pas changer le système mondial, le volume de la demande au niveau du volume défini par le AVAudioSession AVAudioSessionCategoryPlayback catégorie.

Il semble que vous pouvez régler le volume de la AVAudioPlayer mais pas le MPMoviePlayerController. J'ai vu d'autres posts ici sur de SORTE que dire il suffit de créer une instance de AVAudioPlayer et de régler le volume, mais ce juste à cause de mon appli crash et j'attends qu'il a quelque chose à voir avec le fait que je ne suis pas en utilisant la initWithContentsOfURL:error: ou initWithData:error: et au lieu d'utiliser "init".

Toute aide serait appréciée.

source d'informationauteur Camsoft