2011-08-17 10 views
15

फ्लोप्लेयर एपीआई का उपयोग करना, क्या वीडियो प्रगति पर कब्जा करने का कोई तरीका है? मैं वीडियो की प्रगति पर कब्जा कर रहा हूं ताकि मैं वीडियो में कुछ बिंदुओं पर पेज पर घटनाओं को आग लगा सकूं। फ्लैश में, प्रोग्रेस इवेंट है जो हर फ्रेम को फायर करता है, और मैं उम्मीद कर रहा था कि फ्लोप्लेयर फ्लैश होने के बाद, प्रगति कार्यक्रम भी सामने आएगा। मुझे FlowPlayer दस्तावेज़ों में सीधे-आगे के रूप में कुछ भी नहीं मिल रहा है।फ़्लोप्लेयर वीडियो प्रगति ट्रैकिंग?

एक प्रगति घटना मौजूद नहीं है। क्या जेएस सेट इंटरवल और मौजूदा फ़्लोप्लेयर एपीआई विधियों का उपयोग करके ऐसी कोई चीज़ बनाने के बारे में कोई सुझाव है?

+0

मैं cuepoints का उपयोग कर एक विधि तैयार करने में सक्षम था। मेरी विशेष समस्या यह थी कि मुझे गतिशील रूप से यह निर्धारित करने की आवश्यकता थी कि वीडियो 25, 50 के माध्यम से 75% खेला गया था। सबसे पुराना मैंने पाया कि प्लेयर की अवधि प्लेयर को ज्ञात है, मेटाडेटा ईवेंट में है। यह मेरे लिए काम करता है: – Lounge9

+0

यह मेरे लिए * काम करता है: https://gist.github.com/1161365 * यह एफपी आईपैड प्लगइन का उपयोग करते समय आईओएस पर काम नहीं करता है। लेकिन ऐसा लगता है कि यह एक बड़ा फ्लोप्लेयर मुद्दा है। – Lounge9

उत्तर

7

मैंने जावास्क्रिप्ट का त्वरित स्निपेट हैक किया है जो वीडियो प्रगति को निर्धारित करने के लिए फ्लोप्लेयर Player और Clip ऑब्जेक्ट्स के साथ इंटरैक्ट करता है।

var videoProgressInterval; 

flowplayer("player", "http://releases.flowplayer.org/swf/flowplayer-3.2.15.swf"); 
flowplayer("player").onStart(startVideoProgressChecking); 
flowplayer("player").onResume(startVideoProgressChecking); 
flowplayer("player").onStop(stopVideoProgressChecking); 
flowplayer("player").onPause(stopVideoProgressChecking); 
flowplayer("player").onFinish(stopVideoProgressChecking); 

function startVideoProgressChecking() { 
    videoProgressInterval = setInterval(checkVideoProgress, 1000); 
    videoProgressInterval(); 
} 

function stopVideoProgressChecking() { 
    clearInterval(videoProgressInterval); 
} 

function checkVideoProgress() { 
    var time_completed = flowplayer("player").getTime(); 
    var total_time = flowplayer("player").getClip().fullDuration; 
    var percent_done = Math.floor((time_completed/total_time) * 100); 

    console.log(percent_done + "% of video done"); 
} 

आप JSFiddle पर डेमो देख सकते हैं।

यह start और resume प्लेयर की घटनाओं के लिए ईवेंट हैंडल करता है। एक बार वीडियो प्लेबैक शुरू हो जाने के बाद, यह एक अंतराल पंजीकृत करता है जो हर सेकेंड चलाता है (अधिक बार चलाने के लिए इसे संशोधित करने के लिए स्वतंत्र महसूस करें)। अंतराल checkVideoProgress() को हर बार निष्पादित होने पर कॉल करता है, जिसके बाद वर्तमान प्लेबैक समय और प्रगति की गणना करने के लिए Clip ऑब्जेक्ट से कुल अवधि प्राप्त होती है।

इसके अतिरिक्त, एक ईवेंट हैंडलर भी अंतराल स्पष्ट करने के लिए एक बार वीडियो रोक दी गई है stop, pause और finish घटनाओं के लिए पंजीकृत किया गया है/बंद कर दिया।

1

शायद तुम Flowplayers उपयोग कर सकते हैं Cuepoints

cuepoints (एक ऋण के साथ अंत से या तो सेकंड, या सेकंड) डेटा संपत्ति में जोड़े

<div class="flowplayer" data-cuepoints="[1.5, 2, 3, -1]"><!-- video here --></div> 

फिर एक घटना बाँध:

flowplayer(function (api, root) { 
    api.bind("cuepoint", function (e, api, cuepoint) { 
     console.log(cuepoint); 
    }); 
}); 
संबंधित मुद्दे