Ho creato i miei controlli personalizzati per l'uso con MPMoviePlayerController
. Finora tutto funziona tranne il controllo del pulsante mute.Come disattivare/riattivare l'audio durante la riproduzione di video usando MPMoviePlayerController?
Ho configurato il AVAudioSession
utilizzando il seguente codice prima di creare la mia istanza di 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);
}
Poi nel mio metodo tasto di richiamata mute Ho il codice seguente:
NSError *activeError = nil;
[self.audioSession setActive:NO error:&activeError];
if (activeError != nil) {
NSLog(@"Error setting inactive state for AVAudioSession: %@", activeError);
}
Cliccando il tasto Mute ottengo il seguente errore inutile:
Error Domain=NSOSStatusErrorDomain Code=560030580 "The operation couldn’t be completed. (OSStatus error 560030580.)"
stanno collegando a il framework AVFoundation
.
Questo mi sta davvero dando fastidio visto che non riesco, per tutta la vita, a trovare un modo per ridurre o disattivare l'audio della riproduzione della mia applicazione.
Non voglio modificare il volume globale del sistema solo il volume del livello applicazione definito dalla categoria AVAudioSession
AVAudioSessionCategoryPlayback
.
Sembra che sia possibile impostare il volume di AVAudioPlayer
ma non lo MPMoviePlayerController
. Ho visto altri post qui su SO che dicono basta creare un'istanza di AVAudioPlayer
e impostare il volume, ma questo causa solo l'arresto anomalo della mia app e mi aspetto che abbia qualcosa a che fare con il fatto che non sto usando lo initWithContentsOfURL:error:
o initWithData:error:
e invece usando `init '.
Qualsiasi aiuto sarebbe apprezzato.
Vorrei vedere quella lezione, l'hai mai messa su GH? –
Non temendo, non sono sicuro al 100% di quanto stabile sia la mia implementazione, quindi non sono mai riuscito a metterlo su. Forse lo metto su come riferimento. Uno dei difetti principali che ho scoperto con questa tecnica è che se si utilizza questo controllo per controllare il livello del valore (anziché solo il silenziamento), si consente solo di controllare lo 0-100% del livello di volume del dispositivo impostato. Ad esempio, diciamo che il volume del dispositivo è impostato su 50% e quindi utilizzi questo metodo per ridurre del 50% il volume delle app che effettivamente sentirai è del 25% di volume. – Camsoft
ok, interessante. Grazie per la risposta. probabilmente andrò con l'interruttore su AVPlayer per ottenere .mute –