Ich habe meine eigenen benutzerdefinierten Steuerelemente für die Verwendung mit der MPMoviePlayerController
erstellt. Bisher funktioniert alles außer der Mute-Tastensteuerung.Wie kann ich bei der Wiedergabe von Videos mit MPMoviePlayerController Audio stummschalten bzw. die Stummschaltung aufheben?
Ich habe die AVAudioSession
mit dem folgenden Code konfiguriert, bevor ich meine Instanz der MPMoviePlayerController
erstellen.
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);
}
Da ist in meinem Mute-Taste Callback-Methode habe ich den folgenden Code:
NSError *activeError = nil;
[self.audioSession setActive:NO error:&activeError];
if (activeError != nil) {
NSLog(@"Error setting inactive state for AVAudioSession: %@", activeError);
}
Wenn die Mute-Taste ich folgende unuseful Fehlermeldung erhalten klicken:
Error Domain=NSOSStatusErrorDomain Code=560030580 "The operation couldn’t be completed. (OSStatus error 560030580.)"
Ich Verknüpfung bin zu das AVFoundation
Rahmenwerk.
Das fängt wirklich an, mich zu ärgern, da ich für das Leben von mir nicht einen Weg ausarbeiten kann, um das Playbackaudio meiner Anwendung zu reduzieren oder zu stumm zu machen.
Ich möchte nicht das globale Volumen des Systems nur das Volumen der Anwendungsebene ändern, wie von der Kategorie AVAudioSession
AVAudioSessionCategoryPlayback
definiert.
Es scheint, dass Sie die Lautstärke des AVAudioPlayer
, aber nicht die MPMoviePlayerController
einstellen können. Ich habe andere Beiträge hier auf SO gesehen, die sagen, nur eine Instanz von AVAudioPlayer
erstellen und die Lautstärke einstellen, aber dies verursacht nur meine App zum Absturz und ich nehme an, es hat etwas damit zu tun, dass ich nicht die initWithContentsOfURL:error:
oder initWithData:error:
und stattdessen mit `init '.
Jede Hilfe wäre willkommen.
Würde ich gerne diese Klasse sehen, haben Sie es jemals auf GH gesetzt? –
Ich fürchte nicht, ich bin mir nicht 100% sicher, wie stabil meine Implementierung ist, so dass ich nie dazu gekommen bin, sie aufzustellen. Vielleicht stelle ich es nur als Referenz auf. Ein großer Fehler, den ich auch bei dieser Technik entdeckt habe, besteht darin, dass Sie nur die 0-100% des eingestellten Lautstärkepegels kontrollieren können, wenn Sie dies zur Steuerung des Wertepegels verwenden (anstatt nur zu stummschalten). Angenommen, die Lautstärke des Geräts ist auf 50% eingestellt, und Sie verwenden diese Methode, um das App-Volumen um 50% zu reduzieren. Das, was Sie hören werden, beträgt 25%. – Camsoft
ok, interessant. danke für die Antwort. Ich werde wahrscheinlich mit dem Wechsel zum AVPlayer gehen, um .mute –