我必须播放base64编码的mp3字符串并在特定时间获取回调,以便我可以执行一些操作。
我尝试了AVAudioPlayer initWithData,并且能够播放该字符串,但AVAudioPlayer中没有回调方法。
[AVPlayer提供了定时状态观察,但是由于它没有initwithdata方法,因此它不允许我播放以64为基数的字符串。
根据您的目标,您可以按设置的时间间隔观察时间,并且在此回调中,可以根据特定的持续时间优化逻辑以采取行动。
仅实现addPeriodicTimeObserver(forInterval:queue:using:)
,它将在预定义的CMTime
处触发并触发回调执行。
示例的完整详细信息在文档中
但包括摘录供参考
var player: AVPlayer!
var playerItem: AVPlayerItem!
var timeObserverToken: Any?
// Notify every half second
let timeScale = CMTimeScale(NSEC_PER_SEC)
let time = CMTime(seconds: 0.5, preferredTimescale: timeScale)
timeObserverToken = player.addPeriodicTimeObserver(forInterval: time,
queue: .main) {
[weak self] time in
// implement your logic based on your required timings
}
请确保强烈引用任何观察者,否则它将被释放并且不会调用回调。