gpt4 book ai didi

swift - 广播流媒体 AVPlayer 延迟(延迟)太高 swift 3

转载 作者:行者123 更新时间:2023-11-30 12:40:34 29 4
gpt4 key购买 nike

在我的应用程序中,我播放音频直播,延迟非常重要。我正在使用 AVPlayer,但启动需要 5-6 秒,并且我需要最多 3 秒的延迟。我怎样才能更快地开始播放并减少延迟?设置一个小缓冲区就可以了?如何使用AVPlayer进行设置?

这是我的 RadioPlayer 类:

import Foundation
import AVFoundation

class RadioPlayer {
static let sharedInstance = RadioPlayer()
private var player = AVPlayer()

private var isPlaying = false
private var language: LanguageDOM?

func play() {
player.play()
isPlaying = true
}

func pause() {
player.pause()
isPlaying = false
}

func toggle() {
if isPlaying == true {
pause()
} else {
play()
}
}

func currentTimePlaying() -> CMTime {
return player.currentTime()
}

func changeLanguage(nlanguage: LanguageDOM){
self.pause()
self.language = nlanguage
player = AVPlayer(url: NSURL(string: nlanguage.url)! as URL)
self.play()
}

func currentlyPlaying() -> Bool {
return isPlaying
}

func currentLanguage() -> LanguageDOM {
return self.language!
}

func currentLanguageId() -> Int {
if self.language == nil {
return -1
}
else {
return language!.id
}
}
}

最佳答案

我假设您的网络足够快,可以加载 3 秒延迟所需的缓冲区。

你要查看的是AVPlayer-prerollAtRate:。如果使用得当,它将在您按下播放键和听到声音之间实现最小的延迟。然而,它要求已经下载歌曲的一部分进行处理。

至于 AVAudioSession,它不是您要找的,AVPlayer 才是适合您的类。

如果 AVPlayer 不够快,我建议查看 BASS这是一个基于 AudioUnits 框架构建的低级 C 音频库,可以精确、快速地控制您的流。

关于swift - 广播流媒体 AVPlayer 延迟(延迟)太高 swift 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42278692/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com