2012-11-08 18 views
7

के माध्यम से शुरू होने पर हमेशा के लिए बफर, मुझे काम करने के लिए YouTube एम्बेड करने में कुछ समस्याएं आ रही हैं।आईपैड पर यूट्यूब एम्बेड: जावास्क्रिप्ट एपीआई

मैं वीडियो लोड करने के लिए यूट्यूब एपीआई का उपयोग कर रहा हूं। लोड किए गए वीडियो के शीर्ष पर मेरे पास केवल एक प्ले बटन (<img>) के साथ कस्टम नियंत्रण <div> (पारदर्शी) है। यह साइट पर शेष डिज़ाइन के साथ चलने वाले प्ले बटन के पीछे डिफ़ॉल्ट YouTube प्लेयर को छिपाने के लिए किया जाता है।

<div> पूरे लोड iFrame overlays है, इसलिए खिलाड़ी ही क्लिक करने योग्य नहीं है - मैं <div> पर एक क्लिक घटना का उपयोग करने के बजाय वीडियो शुरू करने के लिए: iPhone पर

// Inside onYouTubePlayerAPIReady(): 
var player = new YT.Player(playerId, { 
    height: height, 
    width: '100%', 
    videoId: videoId, 
    playerVars: { 
    html5: '1', 
    controls: '0', 
    rel: '0', 
    showinfo: '0', 
    modestbranding: '1', 
    theme: 'light', 
    color: 'white', 
    wmode: 'transparent', 
    suggestedQuality: "large" 
    } 
}); 

$(".youtube-player-controls").bind("click", function(e){ 
    if (!player || !player.getPlayerState) return false; 
    if (player.getPlayerState() == YT.PlayerState.PLAYING) player.pauseVideo(); 
    else player.playVideo(); 
    return false; 
}); 

वर्क्स ठीक है, लेकिन आईपैड (पर और एंड्रॉइड भी ऐसा लगता है) वीडियो वीडियो के पहले फ्रेम पर स्विच करता है, लेकिन फिर बफरिंग स्थिति पर स्टाल करता है (player.getPlayerState() के माध्यम से चेक किया गया)।

मैंने player.loadVideoById() के साथ वीडियो शुरू करने का प्रयास किया जो या तो (समान त्रुटि) काम नहीं करता है।

यदि मैं ओवरलेइंग नियंत्रण <div> हटाता हूं और इस प्रकार उपयोगकर्ता को वास्तव में वीडियो पर क्लिक करने की अनुमति देता है तो यह ठीक काम करता है।

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

संपादित करें:

मैं एम्बेड कोड एक छोटा सा बदल गया है, अर्थात मैं Force HTML5 youtube video में वर्णित के रूप html5=1 गयी। यह एचटीएमएल 5 प्लेयर का उपयोग करने के लिए एम्बेडेड आईफ्रेम की सामग्री को बदलता है, लेकिन समस्या का समाधान नहीं करता है।

मैंने यह देखने की कोशिश की कि यह http://developer.apple.com/library/safari/#documentation/AudioVideo/Conceptual/Using_HTML5_Audio_Video/Device-SpecificConsiderations/Device-SpecificConsiderations.html में वर्णित अनुसार काम कर सकता है या नहीं।

+1

मैं भी रूप में अच्छी तरह इस समस्या का सामना करने लगते हैं। वीडियो हमेशा के लिए आईपैड और आईफोन 4 पर लोड हो रहा है। – mr1031011

+0

मेरे लिए यह वास्तव में आईफोन 4 के इरादे से काम करता है। आईफोन 5 का परीक्षण करने में सक्षम नहीं है। – Woodgnome

+0

मुझे एक ही समस्या है। मेरे मामले में यह नियंत्रण पर ओवरले से संबंधित प्रतीत नहीं होता है, क्योंकि मेरा बटन वीडियो के पीछे है। वीडियो लोड, ब्लैक स्क्रीन पर बफर और चिपकने लगते हैं। –

उत्तर

0

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

आपको उपयोगकर्ता को पहले वीडियो पर क्लिक करके वीडियो शुरू करना होगा - इसके बाद आप एपीआई के माध्यम से डेस्कटॉप डिवाइस पर वीडियो को नियंत्रित करने में सक्षम होंगे।

+0

यह केवल http://developer.apple में वर्णित प्रीलोड/ऑटोप्ले पर लागू होता है।कॉम/लाइब्रेरी/सफारी/# प्रलेखन/ऑडियोविडियो/संकल्पनात्मक/प्रयोगात्मक 5_Audio_Video/डिवाइस-विशिष्ट कॉन्फ़िगरेशन/डिवाइस-विशिष्ट कॉन्फ़िगरेशन.html और जावास्क्रिप्ट ऑनक्लिक ईवेंट का उपयोग करके बाधित किया जा सकता है। हालांकि, यह एचटीएमएल 5 ऑडियो/वीडियो एम्बेड के लिए वर्णित है, इसलिए यह पूरी तरह से YouTube एम्बेड पर लागू नहीं हो सकता है (भूलें, कस्टम प्ले बटन क्लिक होने पर कुछ * होता है)। – Woodgnome

+0

एक ही डोम में एचटीएमएल 5

-1

वर्तमान में हम प्लेयर में भेजने से पहले सिर्फ एक जांच कर रहे हैं .playVideo(); समारोह। यह आदर्श नहीं है लेकिन यह तब तक काम करता है जब तक कि हम Google से बेहतर API स्तर तय नहीं करते। आप का उपयोग क्लिक समारोह में फिर

var isiPad = navigator.userAgent.match(/iPad/i) != null; 

:

एम्बेड स्क्रिप्ट के शीर्ष पर आप अपने वर सेट

if (!isiPad) { 
player.playVideo(); 
} 
+1

वीडियो नहीं चला रहा एक समाधान का अधिक नहीं है। – mikemaccana

+0

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

+0

@jabberlope मैं उपकरणों का पता लगाने का एक बड़ा प्रशंसक नहीं हूं। इसके अलावा मैं इसे कई अलग-अलग मोबाइल उपकरणों (आईपैड 3 जी जनरल, आईपॉड 5 वें जनरल, मोटो एक्स) पर देख रहा हूं। क्या playVideo() फ़ंक्शन या उस हिस्से को गीला करने का कोई तरीका है जो सही तरीके से काम नहीं कर रहा है? 'if (! CanPlayViaJS) { player.playVideo(); } ' –