Radio Streaming AVPlayer 延迟(延迟)很高 swift 3

Posted

技术标签:

【中文标题】Radio Streaming AVPlayer 延迟(延迟)很高 swift 3【英文标题】:Radio Streaming AVPlayer latency (delay) is to high swift 3 【发布时间】:2017-07-05 20:15:37 【问题描述】:

在我的应用中,我播放音频直播,延迟非常重要。我正在使用 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
        
    
 

【问题讨论】:

我想实现 AVAudiosession 但我看不懂 【参考方案1】:

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

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

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

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

【讨论】:

以上是关于Radio Streaming AVPlayer 延迟(延迟)很高 swift 3的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 中为 Radio Live Streaming 服务实现 HLS

静音播放 Http Live Streaming 视频的 AVPlayer

我的 AVPlayer 不应该从 LIVE Streaming 的最后一点恢复

AVPlayer - 如何以编程方式打开/关闭来自 HTTP Live Streaming 视频的 CC?

AVPlayer 无法在 iOS 9 上播放

AvPlayer 正在下载 mp3 而不是流式传输