2012-05-09 14 views
6

पृष्ठभूमि:

मैं एक वेब-आधारित शिक्षण कार्यक्रम (ड्रूपल 7 का उपयोग करके, यदि यह मायने रखता है) का विकास कर रहा है जिसके लिए उपयोगकर्ताओं को अनुक्रमिक रूप से शैक्षणिक वीडियो देखने की आवश्यकता है। मैं यह सुनिश्चित करना चाहता हूं कि वे अगले वीडियो तक पहुंच प्राप्त करने से पहले प्रत्येक वीडियो को पूरी तरह से देखें। मैं यूट्यूब एपीआई से बहुत अपरिचित हूं लेकिन मैंने PHP डेवलपर की मार्गदर्शिका के माध्यम से काम किया है और इसे कैसे किया जाए इसके बारे में कोई जानकारी नहीं मिली।मैं कैसे उपयोगकर्ताओं को पूरे वीडियो देखने के लिए सुनिश्चित कर सकते हैं?

मैं इसे पूरा करने के किसी भी उचित तरीके से खुला हूं। मैं सोच रहा था कि एक या दो यादृच्छिक टाइमकोड मारा गया था, साथ ही साथ फिल्म चलने के बाद भी, वीडियो देखने के बिना आगे बढ़ना मुश्किल हो जाएगा।

  1. सर्वर पता है जब वीडियो में देखा जा रहा चयनित timecodes को प्रभावित किया है यह बताने के लिए कैसे, और
  2. कैसे सर्वर पता है जब जाने के लिए:

    तो यह मैं दो बातें पता लगाने की जरूरत है पूरा करने के लिए वीडियो का अंत तक पहुंच गया है।

अगर कोई मुझे सही दिशा में इंगित कर सकता है तो मैं बहुत सराहना करता हूं।

+7

यह आपके उपयोगकर्ताओं के साथ एक क्रूरतापूर्ण भयानक बात है, लेकिन मुझे लगता है कि आप अगले वीडियो के लिंक को प्रत्येक वीडियो के अंत में उन भयानक क्लिक करने योग्य एनोटेशन में से एक के रूप में शामिल कर सकते हैं? – meagar

+0

मैंने वास्तव में ऑडियो फ़ाइलों के लिए कुछ लिखा था। आपको कस्टम जावास्क्रिप्ट एचटीएमएल वीडियो प्लेयर या फ्लैश वीडियो प्लेयर लिखना चाहिए। –

+0

@ मीगर - मुझे वीडियो देखने के आधार पर भूमिका निभाने की ज़रूरत है, इसलिए मुझे ईवेंट के बारे में बताया जाने वाला सर्वर स्वयं ही चाहिए। – beth

उत्तर

1
YouTube API से आप

function onPlayerStateChange(evt) {  
     if (evt.data == 0){ 
     alert (player.getDuration()) 
    } 
} 

'सर्वर को पिंग' कर सकते हैं इसके बाद आप क्लिप की अवधि प्राप्त कर सकते हैं के साथ

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

https://developers.google.com/youtube/js_api_reference

3

वीडियो प्लेयर के अंत में (या अंत में) वीडियो प्लेयर पहुंचने पर आपको बस अपने सर्वर को पिंग करना होगा।

आप या तो अपना खुद का (जावास्क्रिप्ट या फ़्लैश) वीडियो प्लेयर लिख सकते हैं या मौजूदा में से किसी एक को संशोधित कर सकते हैं। यह तकनीक HTML5 <video> टैग के साथ काम नहीं करेगी।

+0

कैसे? मुझे लगता है कि आप इसे यूट्यूब एपीआई –

+0

धन्यवाद के साथ कर सकते हैं! क्या आपके पास पिंग ट्रिगर करने के बारे में कोई जानकारी है? क्या मैं एपीआई/देव गाइड में कुछ चूक गया हूं, या इसके बारे में कहीं और दस्तावेज है? साथ ही, यह ऐसा कुछ है जो केवल वीडियो के अंत में किया जा सकता है, या प्री-चयनित टाइमकोड भी पिंग ट्रिगर कर सकता है? – beth

+0

यदि आप पूरे वीडियो को देख चुके हैं तो सत्यापित करने के लिए आप अंत में/करीब पिंग करते हैं, तो कोई भी अंत तक कूद जाएगा। नहीं? –

0

वीडियो के अंत में एक प्रमाणीकरण लिंक डालें; यह लिंक सत्यापित करने के लिए लिंक का उपयोग करें कि उन्होंने टोकन एकत्र किया है। यह चेक-पॉइंट की समस्या का समाधान नहीं करेगा, और दर्शक खेल सकते हैं और चले जा सकते हैं, लेकिन यह चेकपॉइंट्स के साथ हो सकता है।

यूट्यूब वीडियो अपलोडर इंटरफ़ेस में एनोटेशन सुविधा का उपयोग करके पाठ्यक्रम के दौरान सम्मिलित लिंक हो सकते हैं। पिछले पंद्रह सेकंड के दौरान एक एनोटेशन में कोडित लिंक को संयोजित करें या इसलिए सर्वर-साइड क्रेडेंशियल बनाने के लिए अपनी साइट के उपयोगकर्ता प्रमाणीकरण के साथ।

+1

मैं देख सकता हूं कि समाधान का हिस्सा होने पर यह अभी भी अंत तक छोड़ने से नहीं रोकता है। मुझे यह भी नहीं लगता कि वेबसाइट से वेबसाइट को पता चल रहा है कि वह लिंक प्रदर्शित किया गया है या नहीं, एपीआई कॉल का उपयोग करने से काफी आसान या अधिक प्रभावी होगा। – beth

1

फ्लैश और जावास्क्रिप्ट प्लेयर API संदर्भ Playback Status हो रही, विशेष रूप से के लिए कार्यों में शामिल हैं:

player.getCurrentTime():Number 
Returns the elapsed time in seconds since the video started playing. 

मैं गलत API संदर्भ के माध्यम से देख रहा था, लेकिन अंत में यह पाया। वाह।

0

मैं काफी कुछ इसी तरह पर काम कर रहा है, और मैं आइफ्रेम एपीआई https://developers.google.com/youtube/iframe_api_reference उपयोग कर एक कस्टम खिलाड़ी के साथ जाने के लिए और डिफ़ॉल्ट क्रोम, जो उन्हें आगे लंघन से रहता है दूर करने के लिए तय कर लिया है।

// api has been loaded 
function onYouTubeIframeAPIReady(){ 
    var player = new YT.Player(el, { 
     videoId: video_id, 
     width: 700, 
     playerVars: { 
      controls: 0, 
      modestbranding: 1, 
      rel: 0    
     }, 
     events: { 
      onStateChange: function(d){ 
       switch(d.data){ 
        case YT.PlayerState.ENDED: 
         // send notification of video ended 
       } 
      } 
     } 
    }); 
} 

    // async load of api 
var tag = document.createElement('script'); 
tag.src = "//www.youtube.com/iframe_api"; 
var firstScriptTag = document.getElementsByTagName('script')[0]; 
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); 

समारोह कहा जाता है जब YouTube API पूरी तरह लोड हो और iframe खिलाड़ी स्थापित कर रही है। el वह डोम ऑब्जेक्ट है जिसे आप वीडियो के साथ प्रतिस्थापित करना चाहते हैं, और video_id वह वीडियो है जिसे आप लोड करना चाहते हैं। controls: 0 जादू बिट है जो प्लेयर क्रोम को छुपाता है। फिर onStateChange फ़ंक्शन में आप एक AJAX अनुरोध भेज सकते हैं, या अपना लेआउट बदल सकते हैं या जो भी आपको वीडियो के अंत में करना है।

1

यदि आप एचटीएमएल 5 और जावास्क्रिप्ट का उपयोग करते हैं, तो आप मूल रूप से यह देखने के लिए जांच सकते हैं कि पूरा वीडियो या कुछ भाग खेला गया है या नहीं।

एचटीएमएल 5 का वीडियो एपीआई खेला गया है कि हर समय श्रृंखला का ट्रैक रखता है। <video>.played विशेषता और TimeRanges कक्षा के लिए दस्तावेज़ों पर एक नज़र डालें।