AVPlayer没有播放音频

时间:2018-12-11 15:42:42

标签: swift avplayer

我正在尝试播放用MPMediaPickerController选择的url音频文件,并将观察者附加到player对象上。我不知道播放器为什么不播放音频文件,设备上没有声音输出,也没有显示错误。

var timeObserverToken: Any?

 func addPeriodicTimeObserver(url: URL) {

    let playerItem = AVPlayerItem(url: url)
    let player = AVPlayer(playerItem: playerItem)
        player.play()


    // Invoke callback every half second
    let interval = CMTime(seconds: 0.5,
                          preferredTimescale: CMTimeScale(NSEC_PER_SEC))

    let mainQueue = DispatchQueue.main
    timeObserverToken = player.addPeriodicTimeObserver(forInterval: interval, queue: mainQueue) { [weak self] time in

            //it is never called
            print("time is \(time)") 
     }
   }//end addPeriodicTimeObserver

1 个答案:

答案 0 :(得分:1)

您应该将AVPlayer声明为类/结构内的 global 变量。因此,请从player函数中删除addPeriodicTimeObserver并进行全局声明。

其背后的原因是:

局部变量(在函数内部声明的变量)一旦函数返回就被释放;在这种情况下,player在玩前 被释放。

实例变量(在类范围内声明的变量)在类实例被释放后(除非有保留周期)被释放。

如果使用真实的设备进行测试,请确保其不在静音模式下