2011-08-12 8 views
17

उसी पृष्ठ में दो बार एक ही वीडियो का उपयोग करना एक अनावश्यक मीडिया रीलोड को मजबूर करता है।एक ही पृष्ठ में एचटीएमएल वीडियो की दोबारा रीलोडिंग से कैसे बचें?

एक छवि लोड हो रहा है के लिए एक वीडियो लोड हो रहा है की तुलना करें:

<img src="image.png"/> 
<img src="image.png"/> 
<video src="video.webm"></video> 
<video src="video.webm"></video> 

फ़ायरफ़ॉक्स 5 वेब कंसोल के अनुसार, इस एक बार छवि लोड है, लेकिन वीडियो में दो बार।

मैं http://www.w3.org/TR/html5/video.html#dom-media-mediagroup से समझता हूं कि spec के लेखकों को दोनों मामलों में एक एकल रीलोड की उम्मीद है ("एक ही मीडिया संसाधन का संदर्भ देने वाले एकाधिक मीडिया तत्व एक नेटवर्क अनुरोध साझा करेंगे"), लेकिन यह मेरे साथ नहीं हो रहा है।

मैं, सर्वर कैश मानकों (मैं वेनिला web.py उपयोग कर रहा हूँ) के साथ चारों ओर खेलने के लिए कोई फायदा नहीं हुआ है, और मुझे लगता है कि गलत पेड़ पर भौंकने है। क्या मुझे कुछ विशिष्ट दिखाना चाहिए? एचटीएमएल मेटा तत्व?

नोट यह एक ही वीडियो के लिए कई स्रोतों होने के साथ आम मुद्दों के विपरीत है कि। यहां मैं एक ही स्रोत के साथ कई वीडियो तत्वों के साथ-साथ साइड खेल रहा हूं (उदाहरण के लिए अलग-अलग बिंदुओं पर)।

+1

दिलचस्प समस्या। क्या आप दोनों वीडियो तत्वों को नियंत्रित करने के लिए जावास्क्रिप्ट का उपयोग करेंगे? मुझे यह जानकर उत्सुकता होगी कि क्या होता है यदि पहले वीडियो लोड होने के बाद आप द्वितीय वीडियो तत्व को गतिशील रूप से जोड़ते हैं। – BumbleB2na

+0

@ BumbleB2na मैंने कोशिश की, '$ ("# हुक")। संलग्न करें (video_html) .append (video_html) '(जहां वीडियो_एचटीएमएल एक वीडियो तत्व है) वास्तव में चार जीईटी अनुरोध करता है, उनमें से दो महत्वपूर्ण समय लेते हैं। –

+0

4 अनुरोध प्राप्त करें .. yikes। हाँ

उत्तर

1

यदि आप डाउनलोड किए गए वीडियो का आकार चेक करते हैं, तो क्या वे दोनों पूर्ण वीडियो डाउनलोड कर रहे हैं?

मेरे परीक्षणों में, अधिकांश ब्राउज़र एक छोटे से हिस्से को डाउनलोड करते हैं (अंगूठे को प्रदर्शित करने के लिए पर्याप्त) और फिर आवश्यक वीडियो जब आवश्यक हो - तो मुझे आश्चर्य है कि क्या आप दो पूर्ण डाउनलोड के रूप में गिन रहे हैं, जब यह वास्तव में केवल एक है पूर्ण डाउनलोड और एक आंशिक।

मैं ब्रूस लॉसन की मदद से जून में कुछ परीक्षण किया था और हमने पाया कि कुछ ब्राउज़रों और भी अधिक भार दो की तुलना में मैं ऊपर वर्णित किया है प्रदर्शन करते हैं।

HTML 5 Video In Real Life (Tests)

0

आप निश्चित रूप से थंबनेल में वीडियो डाल सकता है और उन्हें लोड जब कोई उन पर क्लिक करता है, यह अगर आप कुछ और नहीं मिल सकता है मदद कर सकता है। क्योंकि यह जाहिरा तौर पर W3C एचटीएमएल 5 विनिर्देश का पालन नहीं कर रहा है

0

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

1

यदि आप एचटीएमएल 5 का उपयोग कर रहे हैं, तो बेहतर आप कैनवास के साथ जा सकते हैं। यह एक बार वीडियो लोड करेगा।

1

इस काम:

<video id="video" class="videohtml5" width="720" height="500" controls="controls" preload="auto" poster=""> 
     <source src="path(1)" /> 
     <source src="path(2)" /> 
     <source src="path(3)" /> 
</video> 
+0

कोड के लिए कोड स्वरूपण का उपयोग करें (Ctrl + के) :) –

1

मुझे लगता है कि लोगों को यहां कल्पना ग़लत व्याख्या कर रहे हैं।

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

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

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

कल्पना करें कि दोनों तत्वों के अलग-अलग नियंत्रण थे या नहीं। आप पहले वीडियो को रोकें और दूसरा वीडियो चलाएं। 30 मिनट तक जाएं, और आप पहले वीडियो को पुनरारंभ करें। ब्राउजर को कैश नहीं किया जा रहा है जो सर्वर से सौ मेगाबाइट सामग्री से अधिक हो सकता है ताकि सर्वर पर नया अनुरोध किए बिना इसे पहला वीडियो चलाने की अनुमति मिल सके।

यदि आप HTTP का उपयोग कर एक कनेक्शन पर स्ट्रीमिंग सामग्री के दो अलग-अलग टुकड़े भेजने की अपेक्षा करते हैं, तो मुझे विश्वास नहीं है कि यह संभव है (ठीक है, वर्तमान में कार्यान्वित)। यह मल्टीप्लेक्सिंग होगा, और आखिरी बार मैंने जांच की है, HTTP सर्वरों को मल्टीप्लेक्सिंग के लिए कोई समर्थन नहीं है। ध्यान दें कि यह जीवित कनेक्शन रखने से अलग है जहां सामग्री के कई टुकड़े क्रमशः परोसे जाते हैं, जो मल्टीप्लेक्सिंग वर्णन कर रहा है वह समानांतर में सामग्री के कई टुकड़े परोसा जाता है। इसे प्राप्त करने का सामान्य तरीका केवल दो सॉकेट खोलने के लिए है, जो क्लाइंट और सर्वर दोनों के लिए एक एकल स्ट्रीम को डिमक्स करने की कोशिश करने से निपटने के लिए बहुत आसान है।

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