Reputation: 2378
I want to play a video using MPMoviePlayerController
but I want it to ignore the mute switch, similar to the behavior of Youtube's video player.
Any ideas?
Upvotes: 21
Views: 7867
Reputation: 165
For anyone in the future, I know this has been answered already, but I had an issue with playing a video in my app which caused apps like spotify, youtube etc. to stop playing it's audio, so I ending up using this:
NSError *silentSwitcherror = nil;
BOOL silentSwitchSuccess = [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback withOptions:AVAudioSessionCategoryOptionMixWithOthers error:&silentSwitcherror];
if (silentSwitchSuccess)
{
//put whatever video code you are trying to play
}
else
{
//put how to handle failed instances.
}
Upvotes: 2
Reputation: 2570
in Swift: Do this once before you play sound/video (for example at the beginning of your application)
do{
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
} catch {
//Didn't work
}
Upvotes: 2
Reputation: 18363
Use the AVAudioSession
category AVAudioSessionCategoryPlayback
and your app will ignore the mute switch like the Youtube app.
For example (inspired by Ken Pletzer in the comments):
#import <AVFoundation/AVFoundation.h>
// note: you also need to add AVfoundation.framework to your project's
// list of linked frameworks
NSError *error = nil;
BOOL success = [[AVAudioSession sharedInstance]
setCategory:AVAudioSessionCategoryPlayback
error:&error];
if (!success) {
// Handle error here, as appropriate
}
Upvotes: 49
Reputation: 1889
After you import AVFoundation just put this in your delegate:
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: nil];
Upvotes: 1