2017-02-16 3 views
0

에 있으며 지연은 매우 중요하다. AVPlayer를 사용하고 있지만 시작하는 데 5-6 초가 걸리므로 3 초의 지연이 필요합니다. 지연을 줄이기 위해 어떻게해야합니까? 작은 버퍼가 일을 할 것입니다 설정? AVPlayer로 설정하는 방법은 무엇입니까? 내가 네트워크가 삼초 지연에 필요한 버퍼를로드 할 정도로 빠른 있으리라 믿고있어라디오 스트리밍 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가 빠르지 않다면 스트림을 정확하고 신속하게 제어 할 수있는 AudioUnits 프레임 워크를 기반으로 제작 된 오디오 라이브러리와 같은 하위 레벨 C 인 BASS을 살펴 보시기 바랍니다.