Teo*_*Teo 2 mpmovieplayercontroller ios avaudiosession avplayer
MPMoviePlayerController我正在尝试使用 a或 .在我的应用程序中播放短视频AVPlayer。问题是(因为我的视频没有任何声音)我不想干扰后台其他应用程序播放的声音。我尝试玩AVAudioSession:
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory:AVAudioSessionCategoryAmbient withOptions:AVAudioSessionCategoryOptionMixWithOthers error:nil];
[audioSession setActive:YES error:nil];
Run Code Online (Sandbox Code Playgroud)
但我没有运气。视频开始播放后,背景音乐就会停止。我什至尝试将音频会话设置为非活动状态:
[[AVAudioSession sharedInstance] setActive:NO withOptions: AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation error:nil];
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,声音停止半秒,然后恢复,视频播放器停止播放。有什么方法可以实现我想要做的事情吗?谢谢。
我认为这对你来说不再相关,但对其他人可能相关。
没有什么可做的,但这里有一些解决方法。重点是,当您初始化视频播放器时,将音频会话类别设置为环境,在这种情况下,它不会中断其他应用程序中的音频会话。然后,如果您需要“取消静音”视频,您可以将音频会话类别设置为默认(独奏环境)。它将中断其他应用程序中的音频会话,并恢复播放有声视频。
例子:
- (void)initPlayer {
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient withOptions:0 error:nil];
// some init logic
// e.g:
//
// _playerItem = [AVPlayerItem playerItemWithAsset:[AVAsset assetWithURL:_URL]];
// _player = [AVPlayer playerWithPlayerItem:_playerItem];
// _playerLayer = [AVPlayerLayer playerLayerWithPlayer:_player];
//
// etc.
}
- (void)setMuted:(BOOL)muted {
if (!muted) {
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategorySoloAmbient withOptions:0 error:nil];
}
self.player.muted = muted;
}
Run Code Online (Sandbox Code Playgroud)
PS我认为,FB应用程序正在做类似的事情:当视频开始静音播放时,它不会中断其他应用程序的音频,但是当用户按下视频时,它将全屏显示声音,此时将有该活动的音频会话视频,所有其他应用程序将停止播放音频。
| 归档时间: |
|
| 查看次数: |
3040 次 |
| 最近记录: |