2013-04-04 10 views
5

मेरे पास एक HTML5 वीडियो प्लेयर (वीडियो -टैग) है। जब पृष्ठ लोड होता है तो यह वीडियो फ़ाइल के लिए अनुरोध भेज देगा।एचटीएमएल 5 वीडियो: http रेंज अनुरोध हेडर संशोधित करें

क्या http अनुरोध शीर्षलेख श्रेणी फ़ील्ड को संशोधित करना संभव है? (स्क्रीनशॉट देखें, 2 लाल लाइनों के बीच)

रेंज: बाइट्स = 0- पूरा वीडियो डाउनलोड करेगा और मैं सीमित करने के लिए यह करना चाहते हैं: उदाहरण के लिए "रेंज = बाइट्स 0-1,000,000"

Screenshot

वीडियो फ़ाइल सीडीएन पर होस्ट की जाती है, इसलिए मैं सर्वरसाइड पर कुछ भी नहीं कर सकता।

+0

मुझे लगता है कि वर्तमान ब्राउज़र कार्यान्वयन इस बारे में काफी स्मार्ट हैं। जब वीडियो टैग पहले बाहर आया, मुझे याद है कि एक टैग पूरी फ़ाइल को जितनी जल्दी हो सके डाउनलोड करने का प्रयास करेगा। हाल के संस्करणों में केवल कुछ सेकंड पहले ही बफर लगते हैं। क्या आप एक ब्राउज़र देख रहे हैं जो पूरी फ़ाइल को पेज लोड पर डाउनलोड करने का प्रयास कर रहा है? –

+0

समस्या तब होती है जब आप वीडियो को रोकते हैं। फिर ब्राउज़र जितनी जल्दी संभव हो सके फ़ाइल डाउनलोड करना शुरू कर देंगे – Hese

+0

ब्राउज़र को स्वचालित रूप से कनेक्शन (स्थानांतरण को निरस्त करना) को रीसेट करना चाहिए, जब यह प्लेबैक की आवश्यकता से काफी दूर है, और उसके बाद प्राप्त होने पर अंतिम बाइट प्राप्त करने के लिए और अधिक अनुरोध करने के लिए अनुरोध करें अधिक। – mark4o

उत्तर

1

आप XMLHttpRequest के साथ एक रेंज अनुरोध भेज सकते हैं! और window.URL.createObjectURL पर एक ब्लॉब फ़ाइल प्राप्त करें, यदि सर्वर 'स्वीकार्य-रेंज: बाइट्स' है। वीडियो टैग आपको कई घटनाओं और गुणों के साथ प्रदान करता है, इसलिए आप हमेशा जानते हैं कि buffered क्या है और आप कहां हैं। भले ही उपयोगकर्ता ने प्रगति पट्टी पर क्लिक किया, रोकें या बंद करें बटन। चूंकि वीडियो गुण बाइट रेंज की तुलना में समय आधारित होते हैं, इसलिए आपको वीडियो मेटाडेटा नामक वीडियो फ़ाइल से कुछ अतिरिक्त जानकारी चाहिए। मैं Yamdi के साथ खेले जाने के लिए समय की एक एक्सएमएल फ़ाइल प्राप्त करने के लिए खेला गया था और एक .flv के लिए शुरुआत में मेटाडेटा सेट करने के लिए खेला था।

सर्वर पक्ष पर श्रेणी शीर्षलेख (बाइट्स = संख्या 1-संख्या 2 ...) पढ़ें, वीडियो फ़ाइल खोलें, नंबर 1 की तलाश करें, प्रिंट करें (संख्या 2-संख्या 1 + 1) बाइट्स और कुछ विशिष्ट शीर्षलेख भेजें: सामग्री-प्रकार, सामग्री-विस्थापन, HTTP/1.1 206 आंशिक सामग्री, सामग्री-रेंज।

आपको तलाश की स्थिति का पालन करना चाहिए। लंबाई आप पर निर्भर है।

+0

पूरे वीडियो को ब्लॉब में लोड किया गया, blob पर video.src सेट करें। क्रोम/एंड्रॉइड अभी भी इसे नहीं चलाता है। ब्लॉब को एक gzip भेजने का भी प्रयास किया क्योंकि क्रोम/एंड्रॉइड अनुरोध हेडर gzip के लिए अनुरोध भेजते हैं – matthewbaskey

संबंधित मुद्दे