2017-02-16 93 views
0

在我的應用程序中播放音頻直播流,延遲非常重要。我正在使用AVPlayer,但它需要5-6秒才能啓動,我需要延遲3秒。我該怎麼做才能更快開始播放並減少延遲? 設置一個小緩衝區將完成這項工作?如何使用AVPlayer進行設置?無線電流AVPlayer延遲(延遲)是高速3

這是我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 
     } 
    } 
} 
+0

我想實現AVAudioSession,但我無法理解它 – Jason

回答

0

我假設你的網絡速度不夠快,加載必要的緩衝3秒的延遲。

你想要看的是AVPlayer-prerollAtRate:。正確使用時,它可以在按下播放按鈕和聽到聲音時保持最小的延遲時間。然而,它需要下載歌曲的一部分以供處理。

至於AVAudioSession,它不是你要找的,AVPlayer是適合你的課堂。

如果AVPlayer速度不夠快,我建議您查看BASS這是一個低級C類音頻庫,它建立在AudioUnits框架之上,可以對您的流進行精確和快速的控制。