में सर्वर संगीत को चलाने और चलाने के लिए मैंने तेजी से भाषा के साथ remote url
ऑडियो बफर करने और तुरंत चलाने की कोशिश की।एवीप्लेयर बहुत लंबा और तैयार होने में देरी के साथ
लेकिन समस्या readyToPlay
केस और प्ले के लिए लंबे समय से है।
उदाहरण के लिए ध्वनि ध्वनि में चलाने के लिए लगभग 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)")
}
}
}
:
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)
कि इस (ExploringAVFoundation) documentation've done that
करने के लिए और है कि खिलाड़ी को संभालने के लिए अनुसार खिलाड़ी के लिए तैयार है मैं 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
ऊपर लॉग में
, 4 सेकंड ले readyToPlay 1
प्रकट करने के लिए तो ध्वनि
Sever गति अच्छा है खेलने के लिए 10 सेकंड लेने के लिए और मैं Android
और अधिकतम में सर्वर ध्वनि चलाने के लिए करने की कोशिश की बफर करने और ध्वनि चलाने का समय लगभग 3 सेकंड है। (Android
एप्लिकेशन में) लेकिन IOS
में बफरिंग और ध्वनि पूरी तरह से खेलते हैं, पूरी तरह से लगभग 15 सेकंड लेते हैं!
URL के साथ अपनी avPlayerItem
का दृष्टांत और उसके बाद वैश्विक सूत्र में अन्य परिसंपत्तियों को लाने के लिए आपका ध्यान के लिए धन्यवाद
क्या आपकी समस्या है कि आईओएस के लिए इसे चलाने योग्य बनाने के लिए पर्याप्त फ़ाइल डाउनलोड करने में बहुत लंबा समय लगता है? क्या आप उस फ़ाइल के लिंक को पोस्ट कर सकते हैं जिसके साथ आप परीक्षण कर रहे हैं ताकि हम कुछ तुलना कर सकें? –
@ डेववेस्टन, कोई लिंक नहीं है - मैंने कई लिंक की कोशिश की - लिंक भी 'एंड्रॉइड' में सही तरीके से काम करते हैं लेकिन 'आईओएस' – Saeid
में नहीं, कारण मैं पूछता हूं क्योंकि मेरे परीक्षणों में, ध्वनि लगभग तुरंत खेलना शुरू कर देती है। मैंने आपके प्रश्न से कोड लिया, और इस यूआरएल का इस्तेमाल किया: http://www.mfiles.co.uk/mp3-downloads/frederic-chopin-piano-sonata-2-op35-3-funeral-march.mp3 –