2013-10-30 14 views
6

पृष्ठ पर एक साधारण Ctrl + s पर पूर्ण डाउनलोड से बचने के लिए ब्लॉब्स पर URL के साथ क्लासिक <video src="http://myserver/video.mp4"> का उपयोग करने से मेरा वीडियो स्ट्रीमिंग वेब एप्लिकेशन स्विच करने का प्रयास कर रहा है।जावास्क्रिप्ट वीडियो ब्लॉब और प्रगतिशील डाउनलोड

XMLHttpRequest का उपयोग दूरस्थ वीडियो फ़ाइल से ब्लॉब बनाने की अनुमति देने के लिए अनिवार्य लगता है।

समस्या XMLHttpRequest पूरी फ़ाइल डाउनलोड करती है, जो प्रगतिशील डाउनलोड उपयोग के लिए उपयोग योग्य नहीं है।

निम्नलिखित कोड एक दूरस्थ फ़ाइल से ब्लॉब लोड करने के लिए सबसे आसान उदाहरण है।

var r = new XMLHttpRequest(); 
r.onload = function() // Triggered only when all video is downloaded 
{ 
    video.prop("src", URL.createObjectURL(r.response)); 
}; 

r.open("GET", "http://myserver/video.mp4"); 
r.responseType = "blob"; 
r.send(); 

के रूप में आवेदन वीडियो स्ट्रीम के लिए है, इस विधि प्रयोग करने योग्य नहीं है (जब तक हम एक्स मिनट तक प्रतीक्षा करने के लिए उपयोगकर्ता पूरी फ़ाइल है, जो सभी पर स्ट्रीमिंग नहीं है डाउनलोड करने के लिए चाहते हैं)।

क्या प्रगतिशील डाउनलोड के साथ ब्लॉब को गठबंधन करने का कोई तरीका है?

उत्तर

0

केवल src = "foo.mp4" विधि का उपयोग करते समय, प्रगतिशील डाउनलोड ब्राउज़र में डिफ़ॉल्ट व्यवहार होना चाहिए। हालांकि, प्लेबैक अनुभव फ़ाइल के वास्तविक प्रारूप पर निर्भर है।

"सामान्य" एमपी 4 फ़ाइलें स्ट्रीमिंग के लिए डिज़ाइन नहीं की गई हैं। वे इस तरह संरचित हैं कि प्लेबैक शुरू करने के लिए आवश्यक डेटा को फ़ाइल के प्रारंभ और अंत के बीच विभाजित किया जा सकता है। एक खिलाड़ी को इस खेल को शुरू करने के लिए आवश्यक डेटा प्राप्त करने के लिए पूरी चीज को बफर करने की आवश्यकता हो सकती है।

आप जैसे टूल का उपयोग करके सामान्य एमपी 4 को एक खंडित एमपी 4 में परिवर्तित करने का प्रयास कर सकते हैं, जो "-फ्रैग" विकल्प निर्दिष्ट करते हैं। यह फ़ाइल में डेटा को पुनर्व्यवस्थित करता है ताकि सभी प्रारंभिक डेटा सामने हों और शेष फ़ाइल को टुकड़ों में विभाजित कर दिया जाए।

एमपीईजी-डीएएसएच जैसे कुछ का उपयोग करने के लिए एक और जटिल विकल्प है। MP4Box और dash.js का लाभ उठाकर, आप एक पूर्णतः अनुकूल अनुकूली स्ट्रीमिंग मीडिया प्लेयर सेट कर सकते हैं।

+0

प्रारूप प्रश्न के लिए ठीक है, लेकिन ब्लॉब के विषय में? – Baart

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