나는 즉시 버퍼링을 시도하여 신속한 언어로 remote url
오디오를 재생하려고했습니다.AVPlayer가 너무 길고 readyToPlay 지연 및 서버 음악 재생 속도가 느림
그러나 문제는 readyToPlay
사례와 오랜 시간입니다.
예를 들어 사운드 URL을 실행하는 데 약 12-15 초가 소요됩니다.
이
내 코드입니다 :override func observeValue(forKeyPath keyPath: String?,of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
guard context == &playerItemContext else {
super.observeValue(forKeyPath: keyPath, of: object, change: change, context: context)
return
}
if keyPath == #keyPath(AVPlayerItem.status) {
let status: AVPlayerItemStatus
if let statusNumber = change?[.newKey] as? NSNumber {
status = AVPlayerItemStatus(rawValue: statusNumber.intValue)!
} else {
status = .unknown
}
// Switch over status value
switch status {
case .readyToPlay:
print("readyToPlay \(status.rawValue)")
player.play() // here play remote sound
case .failed:
print("readyToPlay \(status.rawValue)")
case .unknown:
print("failed \(status.rawValue)")
}
}
}
이
(ExploringAVFoundation) documentation've done that
에 그 플레이어를 핸들에 따라 플레이어에 준비가
var asset: AVAsset!
var player: AVPlayer!
var playerItem: AVPlayerItem!
private var playerItemContext = 0
let requiredAssetKeys = [ "playable","hasProtectedContent"]
let url = URL(string: "http://sound_link.mp3")!
asset = AVAsset(url: url)
playerItem = AVPlayerItem(asset: asset,
automaticallyLoadedAssetKeys: requiredAssetKeys)
playerItem.addObserver(self,
forKeyPath: #keyPath(AVPlayerItem.status),
options: [.old, .new],
context: &playerItemContext)
player = AVPlayer(playerItem: playerItem)
내가 observeValue func
를 사용하여 재생
이 반환됩니다 로그 : 위의 로그에
2017-02-08 13:44:00.626036 [15144:3747850] [aqme] 255: AQDefaultDevice (1): skipping input stream 0 0 0x0
readyToPlay 1
2017-02-08 13:44:02.631182 [15144:3747850] [aqme] 255: AQDefaultDevice (173): skipping input stream 0 0 0x0
, readyToPlay 1
을 표시 4 초을 다음 사운드
단절 속도가 좋은 플레이 10 초를 가지고 내가 Android
및 최대의 서버 사운드를 재생하려고 버퍼링 및 사운드 재생 시간은 약 3 초 (Android
응용 프로그램)이지만 IOS
버퍼링 및 사운드 재생은 완전히 약 15 초입니다!
이 URL와
avPlayerItem
를 인스턴스화하고 글로벌 스레드에서 다른 자산을 가져 오기 위해 당신의 관심을 끌기 위해
iOS에서 재생하기에 충분한 파일을 다운로드하는 데 너무 오래 걸리는 문제가 있습니까? 테스트중인 파일에 대한 링크를 게시하여 비교할 수 있습니까? –
@DaveWeston, 어떤 링크와 상관없이 - 여러 링크를 시도해도 - 링크는 'Android'에서는 올바르게 작동하지만 IOS에서는 그렇지 않다. – Saeid
내가 테스트 한 결과 소리가 거의 즉시 재생되기 때문이다. 귀하의 질문에서 코드를 가져 와서이 URL을 사용했습니다 : http://www.mfiles.co.uk/mp3-downloads/frederic-chopin-piano-sonata-2-op35-3-funeral-march.mp3 –