2017-07-31 6 views
1

私はJukeboxライブラリを使用してリモート音楽をストリーミングしています。私が流すミュージカルは60分です。私がそれらを探し出そうとすると、30〜40秒かかるでしょう。ライブラリーの一部のコードを変更して、最初にすぐに再生できるようにしました。それは働いたが、それは追求をスピードアップしない。長い音楽をストリーミングするときのAVPlayerのシーク時間が短くなります

public func seek(toSecond second: Int, shouldPlay: Bool = false) { 
    guard let player = player, let item = currentItem else {return} 

    player.seek(to: CMTimeMake(Int64(second), 1)) 
    item.update() 
    if shouldPlay { 
     if #available(iOS 10.0, *) { 
      player.playImmediately(atRate: 1.0) 
     } else { 
      player.play() 
     } 
     if state != .playing { 
      state = .playing 
     } 
    } 
    delegate?.jukeboxPlaybackProgressDidChange(self) 
} 
+0

30〜40秒はかなり長いです。それは私に何かがリソースや接続性に関連するように感じさせます。異なる再生可能な資産とネットワークを試してみませんか? URLを取得してサファリから再生して、違いを比較することもできます。 – Breek

+0

はい。サファリでは5秒、イン・vlcで1-2秒かかります。 avplayerはシークする前にすべての曲をダウンロードする必要がありますか? – eonr

+0

私は100%ではありませんが、リソースがライブストリーミングをサポートしている場合、 'AVPlayer'はリソースの一部をバッファし、利用可能なものから再生します。サファリが5秒しかかからない場合は、独自の 'AVPlayer'インスタンスを作成するようにしてください。 – Breek

答えて

0

あなたのコメントから、スライダをスライドするたびに関数が呼び出されることがわかりました。たとえば、スライダを0から50に移動すると50回呼び出されます。したがって、イベントハンドラを作成する必要があります。

How to detect the end of slider drag回答から回答を得ることができます。

関連する問題