在AVAudioPlayer上播放mp3数据(基于64编码的mp3字符串),并在不同时间进行回调?

问题描述 投票:-1回答:1

我必须播放base64编码的mp3字符串并在特定时间获取回调,以便我可以执行一些操作。

我尝试了AVAudioPlayer initWithData,并且能够播放该字符串,但AVAudioPlayer中没有回调方法。

[AVPlayer提供了定时状态观察,但是由于它没有initwithdata方法,因此它不允许我播放以64为基数的字符串。

ios avplayer avaudioplayer
1个回答
0
投票

根据您的目标,您可以按设置的时间间隔观察时间,并且在此回调中,可以根据特定的持续时间优化逻辑以采取行动。

仅实现addPeriodicTimeObserver(forInterval:queue:using:),它将在预定义的CMTime处触发并触发回调执行。

示例的完整详细信息在文档中

https://developer.apple.com/documentation/avfoundation/media_assets_playback_and_editing/observing_the_playback_time

但包括摘录供参考

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
}

请确保强烈引用任何观察者,否则它将被释放并且不会调用回调。

© www.soinside.com 2019 - 2024. All rights reserved.