使用 AVPlayer 时防止背景音频静音

Posted

技术标签:

【中文标题】使用 AVPlayer 时防止背景音频静音【英文标题】:Prevent muting of background audio when using AVPlayer 【发布时间】:2016-02-19 01:15:37 【问题描述】:

我正在使用 AVPlayer 的实例播放视频,我希望能够在播放视频时继续听背景音乐。

如果任何后台应用程序正在播放音乐,那么每当我在 AVPlayer 上调用 play 时,音乐都会静音。如何防止背景音频被静音?

以下是我创建和启动 AVPlayer 的方法:

AVURLAsset *asset = [AVURLAsset URLAssetWithURL:videoURL options:nil];
AVPlayerItem *playerItem = [AVPlayerItem playerItemWithAsset:asset];
AVPlayer *player = [AVPlayer playerWithPlayerItem:playerItem];

playerLayer = [AVPlayerLayer playerLayerWithPlayer:player];
[self.layer addSublayer:playerLayer];

// mutes all background audio
[player play];

【问题讨论】:

***.com/a/14122449/4475605 那行得通。如果问题与 AVPlayer 无关,则很难找到 我很清楚该去哪里,因为我遇到了同样的问题。很高兴你被摆平了。 【参考方案1】:

我能够通过在 AppDelegate.swift 类中执行以下操作来解决此问题:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool 
    // Override point for customization after application launch.
    do 
        try AVAudiosession.sharedInstance().setCategory(AVAudioSessionCategorySoloAmbient)
        try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
     catch 

    
    return true

我还证实,如果我开始通过 iTunes 播放另一首歌曲,它会中断我的后台播放,这是我想要的行为。

【讨论】:

这是我一直在寻找的答案。我可以在我的应用程序中播放带有视频和音频的 Spotify 音乐。但是我更喜欢使用 AVAudioSessionCategoryOptionDuckOthers 而不是 AVAudioSessionCategoryPlayback。【参考方案2】:

不幸的是,Ron Allan 的回答对我不起作用,但它为我指明了正确的方向。我需要使用的是AVAudioSessionCategoryAmbient 类别。

这对我有用(在 AppDelegate.swift 中):

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool 
    // Don't mute the audio playback
    do 
        try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryAmbient)
     catch 
    return true

【讨论】:

以上是关于使用 AVPlayer 时防止背景音频静音的主要内容,如果未能解决你的问题,请参考以下文章

防止 AVPlayer 取消背景音频

当铃声静音时,如何防止我的应用程序(使用 AVPlayer)静音?

AVAudioPlayer 在播放视频时无法识别设备静音按钮

iOS: ios视频播放(MPMediaPlayerController,AVPlayer,AVPlayerViewcontrollerffmpeg-AVPlayer)

当用户将手机切换为静音时,如何防止我的 iOS VoIP 应用播放音频?

AVPlayer 和背景音频流