2017-02-16 9 views
0

私のアプリでは、オーディオのライブストリーミングを再生し、遅延が非常に重要です。私はAVPlayerを使用していますが、開始には5〜6秒かかるので、3秒間の遅延が必要です。どのようにすれば、より早く再生を開始し、遅延を減らすことができますか? 小さいバッファを設定するとジョブが実行されますか?どのようにAVPlayerでそれを設定するには?私はあなたのネットワークが3秒遅れのために必要なバッファをロードするために十分に高速であると仮定していラジオストリーミングAVPlayerの待ち時間(遅延)が速いです3

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

これは私のRadioPlayerクラスです。あなたがAVPlayer-prerollAtRate:で見たい何

。正しく使用すると、演奏を押してから音が聞こえるまでの待ち時間が最小限に抑えられます。ただし、曲の一部がすでに処理のためにダウンロードされている必要があります。 AVAudioSessionについては

、それはあなたが探しているものではありません、AVPlayerはあなたのための正しいクラスです。

AVPlayerの速度が十分でない場合、私はBASSを調べることをお勧めします。これはAudioUnitsフレームワーク上に構築された低レベルのCのようなオーディオライブラリで、ストリームを正確かつ迅速に制御できます。

関連する問題