2010-07-21 19 views
12

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

हालांकि, मैं Firebug और क्रोम डिबगर के साथ यूट्यूब पर कुछ समय बिताया पता लगाना कैसे अपने स्ट्रीमिंग का काम किया है और मैं अपने वीडियो और गुणवत्ता के कुछ के बीच में कुछ दिलचस्प मतभेद की खोज की।

मेरे दो नमूना वीडियो एक और B हैं। ए 480 पी तक उपलब्ध है और बी 1080p तक उपलब्ध है। दोनों वीडियो के लिए, HTTP पर एच 2264 वीडियो और एएसी ऑडियो के साथ एक एफएलवी कंटेनर में 480 पी तक की सभी दरें प्रदान की जाती हैं। यहां दिलचस्प बात यह है कि यदि आपने अभी तक पूरे वीडियो को डाउनलोड नहीं किया है (कैश किया गया है), और आप वीडियो के एक अनिश्चित हिस्से में आगे बढ़ने का प्रयास करते हैं, तो लक्ष्य ऑफ़सेट के बराबर 'प्रारंभ' पैरामीटर के साथ एक नया अनुरोध किया जाएगा मिलीसेकेंड। 480p पर वीडियो एक से उदाहरण:

http://v11.lscache8.c.youtube.com/videoplayback?ip=0.0.0.0&sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Calgorithm%2Cburst%2Cfactor%2Coc%3AU0dWTldQVF9FSkNNNl9PSlhJ&fexp=904806%2C902906%2C903711&algorithm=throttle-factor&itag=35&ipbits=0&burst=40&sver=3&expire=1279756800&key=yt1&signature=D2D704D63C242CF187CAA5B5D5BAFB8DFACAC5FF.39180C01559C976717B651A7EB1D0C6249231EB7&factor=1.25&id=8568eb3135971f6f&begin=111863 

Response Headers: 
Cache-Control:public,max-age=23472 
Connection:close 
Content-Length:14320637 
Content-Type:video/x-flv 
Date:Wed, 21 Jul 2010 17:23:48 GMT 
Expires:Wed, 21 Jul 2010 23:55:00 GMT 
Last-Modified:Wed, 19 May 2010 12:31:41 GMT 
Server:gvs 1.0 
X-Content-Type-Options:nosniff 

फ़ाइल इस URL द्वारा लौटाए गए एक पूरी तरह से वैध वीडियो का केवल भाग युक्त के बाद ऑफसेट अनुरोध किया FLV है।

मैंने वीडियो बी के उच्च रिज़ॉल्यूशन संस्करणों पर 720 पी और 1080 पी पर एक ही तरह का परीक्षण किया, यूट्यूब एक एमपी 4 कंटेनर में एक वीडियो वापस करेगा, एच 2264 वीडियो और एएसी ऑडियो के साथ भी। मेरे लिए क्या प्रभावशाली है कि उनका सर्वर एमपी 4 वीडियो ('स्टार्ट' पैरामीटर के माध्यम से) के लिए एक ही प्रकार का ऑफ़सेट लेता है और एक वैध, स्ट्रीम करने योग्य एमपी 4 (सही ऑफसेट के साथ फ़ाइल के सामने मूव परमाणु) देता है जिसमें केवल इसमें शामिल होता है वीडियो के अनुरोधित हिस्से।

तो, यूट्यूब इस करता है? वे सही हेडर के साथ फ्लाई पर एफएलवी या एमपी 4 कंटेनर कैसे उत्पन्न करते हैं और केवल अनुरोधित वीडियो के वांछित सेगमेंट को कैसे उत्पन्न करते हैं? मुझे पता है कि यह वांछित प्रारंभ बिंदु और क्यूटी-फास्टस्टार्ट स्क्रिप्ट को स्ट्रीम के मोर्चे पर मूव परमाणु को स्थानांतरित करने के लिए एफएफएमपीईजी का उपयोग करके पूरा किया जा सकता है, लेकिन ऐसा लगता है कि लाखों लोगों के लिए मांग को संभालने में बहुत धीमी गति होगी यूट्यूब दर्शक

विचार?

अग्रिम धन्यवाद!

पाद-टिप्पणी: मैं इस बिंदु पर 1 से अधिक लिंक शामिल करने की अनुमति नहीं कर रहा हूँ, इसलिए यहाँ वीडियो एक का यूआरएल है: http: // www.youtube .com/घड़ी वी = hWjrMTWXH28 "वीडियो उपलब्ध 480p अप करने के लिए"

?
+0

एक साइड नोट के रूप में .. Vimeo किसी भी समान तकनीक का उपयोग नहीं करता है। जब आप Vimeo पर एक वीडियो देखते हैं, तो संपूर्ण एमपी 4 को क्रमशः डाउनलोड किया जाता है और आप पहले से ही बफर किए गए हिस्से के पीछे साफ़ नहीं कर सकते हैं। – bgentry

उत्तर

0

मुझे नहीं लगता कि YouTube स्ट्रीमिंग के लिए FFMPEG का उपयोग करता है। कंटेनर प्रारूप, या तो FLV या mp4, काफी सरल है और गणना गहन नहीं है। यह केवल begin टाइमस्टैम्प निर्दिष्ट करने के लिए निकटतम कुंजी-फ्रेम ढूंढना और इससे शुरू करना महत्वपूर्ण है।

3

एक simular सवाल इस मंच पर कहा गया है। http://www.flashforum.de/forum/video/flv-ab-beliebiger-position-streamen-248483.html

वहाँ दो समाधान तो उपलब्ध हैं:

  1. एक स्ट्रीमिंग सर्वर
  2. का प्रयोग करें एक फ़ाइल आवरण अपनी पसंद का एक प्रोग्रामिंग भाषा में लिखा का उपयोग करें (उदाहरण के लिए php में लिखा है)

दोनों समाधानों में आपको अपने सभी वीडियो फीड को संशोधित करने की आवश्यकता है FLV-Video में कुंजी-फ्रेम-सूचनाओं को जोड़ने के लिए flvmid का उपयोग करना।

दूसरा समाधान आप php-स्क्रिप्ट में अनुरोध आप ऊपर पोस्ट किया है recives और flv वीडियो को पार्स करता है जब तक यह स्थिति पैरामीटर द्वारा दिए गए शुरू तक पहुँचता है। उसके बाद यह वीडियो-सामग्री को पेज-विज़िटर पर धक्का देना शुरू कर देता है। अधिक जानकारी और एक PHP कोड-उदाहरण प्राप्त करने के लिए धागा पढ़ें।

मूल सूत्र में जर्मन लिखा है, लेकिन आप http://translate.google.com का उपयोग एक बुरा अंग्रेज़ी :) प्राप्त करने के लिए कर सकते हैं

HTTP-प्रतिक्रिया द्वारा पोस्ट की गई निम्न पंक्ति में शामिल हैं:

Server:gvs 

शायद GVS का मतलब है "Google वीडियो सर्वर" जैसे कुछ। मैंने gvs खोजा है लेकिन मुझे कुछ भी मूल्य नहीं मिला।

+0

जीवी का मतलब भी हो सकता है, ग्रैंड विटसे सिस्टम, मुझे लगता है कि वे वीडियो के लिए बनाए गए सामग्री नेटवर्क पर अपने वीडियो होस्ट कर रहे हैं, और सामग्री नेटवर्क में कुछ प्रकार के जीवी सर्वर हो सकते हैं। –

1

यूट्यूब स्ट्रीमिंग के लिए lighttpd सर्वर का उपयोग करता है। यह वास्तव में स्ट्रीमिंग नहीं छद्म स्ट्रीमिंग का उपयोग करता है। यह तंत्र दर्शकों को वीडियो के डाउनलोड किए गए हिस्सों को अभी तक डाउनलोड करने की अनुमति नहीं देता है

2

एनजीआईएनएक्स सर्वर पर नज़र डालें, इसमें मॉड्यूल को ठीक से करने के लिए है। लेखक ने सटीक आवश्यक ऑफ़सेट पर आउटपुट के लिए एफएलवी और एमपी 4 कंटेनर के सभी पार्सिंग और पुनर्लेखन किया। स्ट्रीमिंग भाग पर ffmpeg की कोई ज़रूरत नहीं है क्योंकि यह अधिक हो जाएगा।

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