iOS 在没有 Audio Session 的情况下播放视频

标签 ios mpmovieplayercontroller avplayer avaudiosession

我正在尝试使用 MPMoviePlayerControllerAVPlayer 在我的应用中播放短视频。问题是(因为我的视频没有任何声音)我不想干扰后台其他应用程序播放的声音。我尝试使用 AVAudioSession:

AVAudioSession *audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory:AVAudioSessionCategoryAmbient  withOptions:AVAudioSessionCategoryOptionMixWithOthers error:nil];
[audioSession setActive:YES error:nil];

但我没有运气。视频开始播放后,背景音乐就会停止。我什至尝试将 Audio Session 设置为非事件状态:

   [[AVAudioSession sharedInstance] setActive:NO withOptions: AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation error:nil];

但在这种情况下,声音停止半秒,然后恢复,视频播放器停止播放。有什么方法可以实现我想要做的事情吗?谢谢。

最佳答案

我认为这与您不再相关,但对其他人可能相关。

没有什么可做的,但这里有一些解决方法。 重点是,当您初始化视频播放器时,将 Audio Session 类别设置为环境,在这种情况下,它不会中断其他应用程序中的 Audio Session 。然后,如果您需要“取消静音”视频,您可以将 Audio Session 类别设置为默认(独奏环境)。它将中断其他应用程序中的 Audio Session ,并恢复播放有声视频。

示例:

- (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;
}

附注我认为 FB 应用程序正在做类似的事情:当视频开始静音播放时,它不会中断其他应用程序的音频,但是当用户按下视频时,它将全屏显示声音,此时该视频将有事件的 Audio Session ,所有其他应用程序将停止播放音频。

关于iOS 在没有 Audio Session 的情况下播放视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26475114/

相关文章:

ios - 添加 Watch Kit Target : com. apple.actool.errors "No such file or directory"with Image Assets 后

ios - 等同于 AVPlayer 中的 MPMovieScalingMode?

iphone - MPMoviePlayerController 播放 YouTube 视频

ios - AVPlayer 不立即在 iOS 10 上播放视频,而只播放音频

ios - UIButton的切换功能

ios - 如何在导航栏的 Controller 之间实现更好的过渡?

iphone - 从 map View 中获取 DetailView 中的 xml 数据(Iphone IOS)

iPhone MPMoviePlayerViewController : extract total duration

ios - 自定义 TableViewController 在 Swift 3 中播放声音和崩溃

ios - 我正在尝试在 ios 中流式传输以下 url,但它不会播放