2013-01-05 22 views
10

में दो सेकंड के विपरीत, सटीक रूप से खोजना, मैं कोको ऐप में AVPlayer का उपयोग कर रहा हूं, और मैंने एक आदेश लागू किया है जो वीडियो के अंत तक कूदता है।AVPlayer

समस्या यह है कि AVPlayer जहां मैंने इसे बताया था, वहां नहीं ढूंढता है।

उदाहरण के लिए, मेरे पास एक वीडियो 4 मिनट और 14 सेकंड लंबा है। जब मैं अंत की तलाश करता हूं, AVPlayer 4 मिनट और 12 सेकंड की तलाश करता है-दो सेकंड छोटा होता है। यदि मैं फिर खेलता हूं, तो खिलाड़ी दो सेकंड के लिए खेलेंगे, फिर अंत तक पहुंच जाएगा।

[self.player seekToTime:self.player.currentItem.duration]; 

मैं इसे इस पर स्विच कर लेने:

[self.player seekToTime:self.player.currentItem.duration 
     toleranceBefore:kCMTimePositiveInfinity 
     toleranceAfter:kCMTimeZero]; 

न तो एक अन्य की तुलना में किसी भी बेहतर काम करता है

मेरा पहला प्रयास यह किया गया था।

मैंने kCMTimePositiveInfinity की तलाश करने का भी प्रयास किया। यह सिर्फ मुझे नजरअंदाज कर दिया।

यह कोई फर्क नहीं पड़ता कि खिलाड़ी ने अभी तक वीडियो के उस हिस्से को लोड किया है या नहीं। मैं भी अंत तक नहीं देख सकता, सही अंत तक खेल सकता हूं, फिर अंत तक खोजने की कोशिश कर सकता हूं, और यह वापस-अंत तक वापस कूद जाएगा।

कमी हमेशा दो सेकंड नहीं होती है। मेरे कुछ वीडियो पर, यह वास्तव में सही ढंग से सही नहीं होता है, अगर सही नहीं है तो यह वास्तव में सही नहीं है। कम से कम एक पर, यह तीन सेकंड कम हो जाता है। लंबाई एक कारक प्रतीत नहीं होता है; ये सभी एक ही लंबाई के बारे में हैं, एक को छोड़कर, जो एक घंटे से अधिक लंबा होता है और दो सेकंड तक छोटा होता है।

तो, एवीप्लेयर ने जहां से कहा था, उससे तीन सेकंड जितना छोटा कूद रहा है, और मैं इसे किस क्षण के लिए पूछने के लिए इसे मनाने के लिए मनाता हूं?

उत्तर

20

मैंने सहनशीलता को गलत समझा और उन्हें पीछे की तरफ देखा।

प्रत्येक सहनशीलता यह है कि उस दिशा में AVPlayer को अनुरोधित समय से दूर जाने की अनुमति है। इसलिए, toleranceBefore के लिए सकारात्मक अनंतता गुजर रही है, "आप जितनी जल्दी हो सके हो सकते हैं" कह रहे हैं, और toleranceAfter के लिए शून्य पास कर रहा है "बस देर से मत हो" (जो अंत तक खोजते समय एक साफ चाल होगी) कह रहा है।

+0

सेटिंग केसीएमटाइम पॉजिटिव इंफिनिटी ने मुझे खोजते समय स्लाइडर के इस छोटे पिछड़े कदम से बचने में भी मदद की। –

+0

बस आश्चर्यजनक! –

1

"जल्दी मत बनो, लेकिन आप के रूप में देर से आप चाहते हैं के रूप में हो सकता है।" यहाँ एक है: अंग्रेजी में

[self.player seekToTime:self.player.currentItem.duration 
     toleranceBefore:kCMTimeZero 
     toleranceAfter:kCMTimePositiveInfinity]; 

या,:

इस प्रकार, समाधान मूल्यों स्विच करने के लिए है @ पीटर होसे द्वारा उत्तर का तेज़ संस्करण:

self.player.seekToTime(self.player.currentItem.duration, 
      toleranceBefore: kCMTimeZero, 
      toleranceAfter: kCMTimePositiveInfinity) 
संबंधित मुद्दे