J'ai créé mes propres commandes personnalisées pour utilisation avec le MPMoviePlayerController
. Jusqu'à présent, tout fonctionne à l'exception du contrôle du bouton muet.Comment couper/activer le son lors de la lecture d'une vidéo à l'aide de MPMoviePlayerController?
J'ai configuré le AVAudioSession
en utilisant le code suivant avant de créer mon instance du 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 ma méthode de rappel bouton Muet ont 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 Muet obtiens l'erreur unuseful suivante:
Error Domain=NSOSStatusErrorDomain Code=560030580 "The operation couldn’t be completed. (OSStatus error 560030580.)"
Je suis un lien vers le cadre AVFoundation
.
Cela commence vraiment à me déranger car je ne peux pas pour la vie de moi trouver un moyen de réduire ou de couper le son de lecture de mon application.
Je ne veux pas modifier le volume global du système uniquement le volume au niveau de l'application tel que défini par la catégorie AVAudioSession
AVAudioSessionCategoryPlayback
.
Il semble que vous pouvez régler le volume du AVAudioPlayer
mais pas le MPMoviePlayerController
. J'ai vu d'autres messages ici sur SO qui disent simplement créer une instance de AVAudioPlayer
et régler le volume, mais cela provoque juste mon application à planter et je m'attends à quelque chose à voir avec le fait que je n'utilise pas le initWithContentsOfURL:error:
ou initWithData:error:
et au lieu d'utiliser `init '.
Toute aide serait appréciée.
Aimeriez-vous voir cette classe, l'avez-vous déjà mise sur GH? –
Peur, je ne suis pas sûr à 100% de la stabilité de ma mise en œuvre, donc je n'ai jamais eu le temps de la mettre en place. Peut-être que je le mettrai juste comme référence. Un défaut majeur que j'ai également découvert avec cette technique est que si vous utilisez ceci pour contrôler le niveau de la valeur (au lieu de simplement l'ignorer) cela vous permettra seulement de contrôler le 0-100% du niveau de volume du périphérique. Par exemple, disons que le volume de l'appareil est réglé à 50% et que vous utilisez ensuite cette méthode pour réduire le volume de l'application de 50%, ce que vous entendrez réellement est de 25% de volume. – Camsoft
ok, intéressant. Merci pour la réponse. je vais probablement aller avec le commutateur à AVPlayer pour obtenir .mute –