Swift3 在swift 3中播放我的应用程序视频时背景音乐如何暂停和播放

Swift3 在swift 3中播放我的应用程序视频时背景音乐如何暂停和播放,swift3,avplayer,avaudiosession,Swift3,Avplayer,Avaudiosession,我创建了一个小型视频应用程序,但当我播放视频时,背景音乐会暂停。但我想在视频暂停时再次播放音乐,当我再次播放视频时,音乐播放器将恢复 我对大多数链接进行了分层,但没有得到结果 var audioPlayer = AVAudioPlayer() try! AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, with: [.duckOthers]) try! AVAudioSession.share

我创建了一个小型视频应用程序,但当我播放视频时,背景音乐会暂停。但我想在视频暂停时再次播放音乐,当我再次播放视频时,音乐播放器将恢复

我对大多数链接进行了分层,但没有得到结果

var audioPlayer = AVAudioPlayer()

try! AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, with: [.duckOthers])
try! AVAudioSession.sharedInstance().setActive(true) 
当我使用它时,两者都在播放,但我想在视频播放时暂停音乐,如果视频暂停,则播放背景音乐。与Whatsapp相同

非常感谢您对可能方式的任何想法或反馈

var audioPlayer = AVAudioPlayer()

try! AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, with: [.duckOthers])
try! AVAudioSession.sharedInstance().setActive(true) 
看起来您每次都创建了实例, 它是否每次都初始化,如果是,那么它每次都会从第一个开始播放音乐


因此,尝试使其全球化。

最终获得解决方案,但其仅适用于默认系统音乐播放器

首先允许音乐播放器…

<key>NSAppleMusicUsageDescription</key>
<string>My description about why I need this capability</string>

这是最新的swift3代码

您可以使用AvPlayServiceWController,它可以是默认的暂停和播放所有设置。因此,您可以只向项目添加两个框架。这些框架是

1) 影音套件框架 2)AV基础框架 将这些框架导入到您的类中,并为播放器创建对象,然后将mp3文件或mp4文件添加到项目导航或其他url中

      import UIKit
      import AVFoundation
      import AVKit



class ViewController: UIViewController {
var player = AVAudioPlayer()
let avPlayer = AVPlayer()

var avPlayerLayer: AVPlayerLayer!

@IBOutlet var vedioPlayer: UIView!
override func viewDidLoad() {
    super.viewDidLoad()




        }
使用此代码播放歌曲

         func playButton(_ sender: AnyObject) {
    let url = Bundle.main.url(forResource: "01 O Rangula Chilaka", withExtension: "mp3")!
    let player = AVPlayer(url: url as URL)
    let playerViewController = AVPlayerViewController()
    playerViewController.player = player
    self.present(playerViewController, animated: true) {




        playerViewController.player!.play()

    }


}
播放视频此代码用于mp4文件添加到您的项目或url,也用于播放视频

    let videoURL = NSURL(string: "https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4")
    let player = AVPlayer(url: videoURL! as URL)
    let playerLayer = AVPlayerLayer(player: player)
    playerLayer.frame = vedioPlayer.bounds
    vedioPlayer.layer.addSublayer(playerLayer)
    player.play()
此代码用于项目中的mp4文件

      let url = Bundle.main.url(forResource: "Shakthi - Premadesam Yuvarani", withExtension: "mp4")!
    avPlayerLayer = AVPlayerLayer(player: avPlayer)
    videoPlayer.layer.insertSublayer(avPlayerLayer, at: 0)//videoPlayer is the uiview  the vide0plays only that view.
   let playerViewController = AVPlayerViewController()
    playerViewController.player = player
    self.present(playerViewController, animated: true) {




        playerViewController.player!.play()

    }

应用程序中的Swift 4代表:

func applicationDidBecomeActive(application: UIApplication) {
    do {
        try AVAudioSession.sharedInstance().setCategory(.ambient, mode: .default)
        try AVAudioSession.sharedInstance().setActive(true)
    } catch {
        print(error)
    }
        // ...
}

感谢您的回答,但这不是解决方案,因为我在ViewDidAspect()上触发了此实例。此代码正在工作,但并行播放背景音频和视频。我尝试了此代码,但根本不工作。。。当我从应用程序启动视频后从saavan的mp3播放mp3时,背景音乐暂停,但当我从应用程序暂停视频时,音乐未启动…因此您的代码不起作用。
func applicationDidBecomeActive(application: UIApplication) {
    do {
        try AVAudioSession.sharedInstance().setCategory(.ambient, mode: .default)
        try AVAudioSession.sharedInstance().setActive(true)
    } catch {
        print(error)
    }
        // ...
}