首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无线流AVPlayer延迟(延迟)为高swift 3

无线流AVPlayer延迟(延迟)为高swift 3
EN

Stack Overflow用户
提问于 2017-02-16 23:52:57
回答 1查看 467关注 0票数 0

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

这是我的RadioPlayer类:

代码语言:javascript
运行
复制
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
        }
    }
} 
EN

回答 1

Stack Overflow用户

发布于 2017-06-20 21:34:20

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

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

至于AVAudioSession,它不是你想要的,AVPlayer是适合你的类。

如果AVPlayer还不够快,我建议你看看BASS,这是一个建立在AudioUnits框架之上的类似于C语言的低级音频库,它可以精确而快速地控制你的音频流。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42278692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档