【发布时间】:2011-05-22 06:54:53
【问题描述】:
我想使用MPMoviePlayerController 播放视频,但我希望它忽略静音开关,类似于 Youtube 视频播放器的行为。
有什么想法吗?
【问题讨论】:
-
这个问题应该受到社区的保护。
标签: ios iphone mpmovieplayercontroller avaudiosession
我想使用MPMoviePlayerController 播放视频,但我希望它忽略静音开关,类似于 Youtube 视频播放器的行为。
有什么想法吗?
【问题讨论】:
标签: ios iphone mpmovieplayercontroller avaudiosession
使用AVAudioSession 类别AVAudioSessionCategoryPlayback,您的应用将像 Youtube 应用一样忽略静音开关。
例如(受 cmets 中的 Ken Pletzer 启发):
#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
}
【讨论】:
NSError* 错误; [[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: &error]; if( 错误 ) { }
_player.useApplicationAudioSession = NO;
【讨论】:
在 Swift 中:在播放声音/视频之前执行一次(例如在应用程序开始时)
do{
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
} catch {
//Didn't work
}
【讨论】:
对于将来的任何人,我知道这个问题已经得到解答,但是我在我的应用中播放视频时遇到了问题,导致像 spotify、youtube 等应用停止播放它的音频,所以我最终使用了这个:
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.
}
【讨论】:
导入 AVFoundation 后,只需将其放入您的委托中:
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: nil];
【讨论】: