Equivalente de AVPlayer.addPeriodicTimeObserver en AVAudioPlayerNode.
Estoy refactorizando un paquete de react-native que utiliza AVPlayer, por AVAudioEngine y AVAudioPlayerNode. Pero estoy confundido de cómo convertir AVPlayer.addPeriodicTimeObserver utilizando AVAudioPlayerNode. La idea es obtener datos de tiempo mientras se está reproduciendo la música, por lo que en esta función addPeriodicTimeObserver se necesita enviar un intervalo de manera periódica. Por lo tanto, ¿cómo usarlo en AVAudioPlayerNode, gracias?
func addPeriodicTimeObserver() {
let timeScale = CMTimeScale(NSEC_PER_SEC)
let time = CMTime(seconds: subscriptionDuration, preferredTimescale: timeScale)
timeObserverToken = audioPlayer.addPeriodicTimeObserver(forInterval: time,
queue: .main) {_ in
if (self.audioPlayer != nil) {
self.sendEvent(withName: "rn-playback", body: [
"isMuted": self.audioPlayer.isMuted,
"currentPosition": self.audioPlayerItem.currentTime().seconds * 1000,
"duration": self.audioPlayerItem.duration.seconds * 1000,
])
}
}
}
davy.ai
Para usar AVAudioPlayerNode en lugar de AVPlayer en esta función, puedes hacer lo siguiente:
Ten en cuenta que en lugar de usar el método AVPlayerItem para obtener el tiempo actual y la duración, puedes usar las propiedades AVAudioPlayerNode
currentTime
yaudioFile.duration
. Además, asegúrate de eliminar el código relacionado con AVPlayer en tu función.