पर नहीं खेलता है मेरे पास एक एवीप्लेयर है जो एचएलएस वीडियो स्ट्रीम चला रहा है। मेरा यूजर इंटरफेस बटन की एक पंक्ति प्रदान करता है, वीडियो में प्रत्येक "अध्याय" के लिए एक (बटन को "1", "2", "3" लेबल किया जाता है)। ऐप किसी सर्वर से कुछ मेटा-डेटा डाउनलोड करता है जिसमें सेकंड में बताए गए अध्याय कट-इन पॉइंट्स की सूची होती है। उदाहरण के लिए, एक वीडियो लंबाई में 12 मिनट है - अध्याय कट-इन पॉइंट्स की सूची 0, 58, 71, 230, 530, इत्यादि हैंAVPlayer seekToTime सही स्थिति
जब उपयोगकर्ता "अध्याय बटन" में से किसी एक को टैप करता है बटन हैंडलर कोड करता है:
[self.avPlayer pause];
[self.avPlayer seekToTime: CMTimeMakeWithSeconds(seekTime, 600)
toleranceBefore: kCMTimeZero
toleranceAfter: kCMTimeZero
completionHandler: ^(BOOL finished)
{
[self.avPlayer play];
}];
कहाँ "seekTime" एक स्थानीय वर जो (जैसा ऊपर वर्णित) कट में बिंदु होता है।
समस्या यह है कि वीडियो हमेशा सही बिंदु पर शुरू नहीं होता है। कभी-कभी यह करता है। लेकिन कभी-कभी अनुरोध किए गए खोज समय से पहले यह एक सेकंड के दसवें से 2 सेकंड तक कहीं भी होता है। अनुरोधित खोज के बाद यह कभी शुरू नहीं होता है।
एनकोडर: handbrakeCLI कोडेक:
यहाँ वीडियो एन्कोडिंग पर कुछ आँकड़े हैं h.264 फ्रेम दर: 24 (वास्तव में, 23.976 - यह कैसे गोली मार दी थी के रूप में ही) वीडियो बिटरेट: एकाधिक बिटरेट (64/150/300/500/800/1200) ऑडियो बिटरेट: 128k कीफ़्रेम: 23.976 (1 प्रति सेकंड)
मैं एप्पल mediafilesegmenter उपकरण, ज़ाहिर है, और variantplaylistcreator प्लेलिस्ट उत्पन्न करने के लिए उपयोग कर रहा हूँ।
फ़ाइलों को अमेज़ॅन क्लाउड/एस 3 बाल्टी से परोसा जा रहा है।
एक क्षेत्र जिसे मैं अस्पष्ट मानता हूं वह है CMTimeMakeWithSeconds - मैंने पढ़े विभिन्न लेख/दस्तावेज़ों के आधार पर कई भिन्नताओं की कोशिश की है। उदाहरण के लिए, ऊपर अंश में मैं उपयोग कर रहा हूँ:
CMTimeMakeWithSeconds (seekTime, 600)
मैं भी कोशिश की है:
CMTimeMakeWithSeconds (seekTime, 1)
मैं नहीं बता सकता जो सही है, हालांकि दोनों एक ही असंगत परिणाम उत्पन्न करने लगते हैं!
मैं भी कोशिश की है:
CMTimeMakeWithSeconds (seekTime, 23.967)
कुछ लेख का दावा है कि यह एक अंश/denomenator की तरह काम करता है, तो n/1 सही जहां 'एन' होना सेकंड की संख्या (है चाहिए जैसा कि सीएमटाइममेकविथसेकंड्स (एन, 1) में)। लेकिन, कोड मूल रूप से एक अलग प्रोग्रामर द्वारा बनाया गया था (जो अब चला गया है) और उसने पसंदीदा टाइम्सस्केल (यानी सीएमटाइममेकविथसेकंड्स (एन, 600) के लिए 600 नंबर का उपयोग किया था।
क्या कोई भी गलत क्या कर रहा है, या यहां तक कि यदि सटीकता की मैं कोशिश करने की कोशिश कर रहा हूं, तो कोई भी संकेत दे सकता है?
और यदि कोई व्यक्ति "वैकल्पिक" समाधान प्रदान करने का लुत्फ उठाता है, तो हम पहले से ही अलग-अलग धाराओं में वीडियो को तोड़ने पर विचार कर रहे हैं, एक प्रति अध्याय, लेकिन हमें विश्वास नहीं है कि यह हमें इस अर्थ में समान प्रदर्शन देगा अध्यायों को एक नया एवीप्लेयर इटिम के रूप में लंबे समय तक लेना होगा, इसे बनाना और लोड करना, इत्यादि इत्यादि बनाना होगा।इसलिए यदि आपको लगता है कि यह एकमात्र समाधान है जो काम करेगा (और हम उम्मीद करते हैं कि यह परिणाम हमें प्राप्त होगा - यानी प्रत्येक अध्याय ठीक से शुरू होगा जहां हम इसे चाहते हैं) ऐसा कहने में संकोच न करें।
अग्रिम धन्यवाद!
मुझे खेद है, लेकिन यह सवाल का जवाब कैसे देता है? –
गलत। 1 का टाइमकेल का मतलब है कि आप केवल पूरे सेकेंड को निर्दिष्ट करने के लिए निर्दिष्ट कर सकते हैं। टाइमकेल प्रति सेकंड भागों की संख्या है। वीडियो के लिए 600 का उपयोग करें, जैसा कि ऐप्पल अनुशंसा करता है, क्योंकि यह प्रति वीडियो 50, 60, 25 और 24 फ्रेम जैसे सामान्य वीडियो फ्रेम दरों का एक उत्पाद है। –