2014-07-18 19 views
10

में फ्रेम संख्याएं प्राप्त करें मैं वीडियो के प्रत्येक फ्रेम नंबर को कैप्चर करने की कोशिश कर रहा हूं, हालांकि ऐसा लगता है कि इसे प्राप्त करने का कोई तरीका नहीं है। इसलिए मैंने वीडियो की फ्रेम संख्याओं से मेल खाने के लिए अपनी घड़ी शुरू की लेकिन वे कभी मेल नहीं खाते और वीडियो प्रगति के रूप में अंतर बढ़ता रहता है।एचटीएमएल 5 वीडियो

कृपया मेरे बिन पर एक नज़र डालें। http://jsbin.com/dopuvo/4/edit

मैंने प्रभाव के बाद एडोब से वीडियो के प्रत्येक फ्रेम में फ्रेम संख्या जोड़ दी है, इसलिए मेरे पास अंतर की अधिक सटीक जानकारी है। वीडियो 29.9 7 एफपीएस पर चल रहा है और अनुरोधएनीमेशन फ्रेम उसी दर पर संख्या बढ़ाने के लिए भी सेट है, हालांकि मुझे यकीन नहीं है कि यह अंतर कहां से आ रहा है।

कभी-कभी वे मेल खाते हैं और कभी-कभी वे नहीं करते हैं। मैंने इसे ऑफ़लाइन करने का भी प्रयास किया लेकिन मुझे एक ही परिणाम मिलते हैं। कोई मदद।

+0

संभावित डुप्लिकेट [क्या मुझे HTML5 वीडियो में वर्तमान फ्रेम की संख्या मिल सकती है?] (Http://stackoverflow.com/questions/7177073/can-i-get-the-number-of-the-current -फ्रेम-इन-ए-एचटीएमएल 5-वीडियो) –

+0

धन्यवाद सैमुअल, और हां, वास्तव में यह मेरा समाधान है, लेकिन मुझे फ्रेम संख्याएं प्राप्त करने की आवश्यकता है क्योंकि वीडियो आगे बढ़ता है। इसके अलावा मैंने कुल फ्रेम को गोल किए बिना कोशिश की लेकिन कोई किस्मत नहीं। – SayedTaqui

+0

यह संभव हो सकता है (अगर आप वहां कैनवास को नियंत्रित कर रहे हैं) वहां काउंटर रखने के लिए: http: //www.kaizou।संगठन/2012/09/फ्रेम-दर-फ्रेम-वीडियो-प्रभाव-एचटीएमएल 5-और/हालांकि यह मेरे परिप्रेक्ष्य से अंधेरे जादू की तरह दिखता है LOL भी देखें http://stackoverflow.com/questions/17044567/get-frame -change-in-video-html5 – rogerdpack

उत्तर

10

मुझे इसके लिए जिथब पर कुछ मिला। https://github.com/allensarkisyan/VideoFrame

मैं इस बेला में यह लागू किया है: http://jsfiddle.net/Ck6Zq/184/

var currentFrame = $('#currentFrame'); 
var video = VideoFrame({ 
    id : 'video', 
    frameRate: 29.97, 
    callback : function(frame) { 
     currentFrame.html(frame); 
    } 
}); 

$('#play-pause').click(function(){ 
    if(video.video.paused){ 
     video.video.play(); 
     video.listen('frame'); 
     $(this).html('Pause'); 
    }else{ 
     video.video.pause(); 
     video.stopListen(); 
     $(this).html('Play'); 
    } 
}); 

संपादित करें: अद्यतन बेला नए वीडियो के लिए तो यह फिर से काम करता है।

+0

कभी-कभी वीडियो बंद होने पर 1 फ्रेम बंद होता है, लेकिन जब वीडियो रोक दिया जाता है/रोका जाता है तो इसे फिर से फ्रेम संख्या एचटीएमएल सेट करके तय किया जा सकता है – 2pha

+0

दिखाता है कि वह लाइब्रेरी फ़्रेमेट ट्रैकिंग को पूरा करती है एक टाइमर सेट करना जो इसे अनुयायियों के लिए "दो बार अपेक्षित फ़्रेमेट" का चुनाव करता है :) – rogerdpack

+0

'फ्रेमरेट' को वीडियो से वास्तविक एक से मेल खाना चाहिए। इसे 100 पर सेट करना प्लेबैक गति को प्रभावित नहीं करता है, हालांकि यह फ्रेम गिनती को प्रभावित करता है। –

4

समस्या यह है कि setTimeout वास्तव में अनुमानित नहीं है, इसलिए आप सुनिश्चित नहीं हो सकते कि आपका कार्य हर बार एक नया फ्रेम प्रदर्शित होता है। जब भी आप अपना फ्रेम डिस्प्ले अपडेट करते हैं और फ्रेम दर से गुणा करते हैं, तो आपको वीडियो के currentTime वीडियो की जांच करने की आवश्यकता होती है।

यहां एक कामकाजी उदाहरण है: http://jsbin.com/xarekice/1/edit यह एक फ्रेम से बंद है, लेकिन ऐसा लगता है कि शुरुआत में आपको "000000" चिह्नित दो फ्रेम हो सकते हैं।

वीडियो तत्व है कि आप के बारे में पता होने के लिए चाहते हो सकता है के बारे में कुछ बातें:

  1. आप की खोज की है लगते हैं, वहाँ फ्रेम दर निर्धारित करने के लिए कोई विश्वसनीय तरीका नहीं है, तो आप इसे खोजने के लिए है कहीं और हार्ड कोड। video metrics के साथ कुछ दिलचस्प चीजें चल रही हैं, लेकिन वे गैर-मानक हैं, व्यापक रूप से समर्थित नहीं हैं और, मेरे अनुभव में, वास्तविक फ्रेम दर निर्धारित करने के लिए पूरी तरह से अप्रभावी हैं।

  2. currentTime हमेशा स्क्रीन पर क्या है इसका बिल्कुल प्रतिनिधि नहीं है। कभी-कभी यह थोड़ी देर आगे बढ़ता है, खासकर जब मांगना (यही कारण है कि मेरे जेएसबीन में, जब आप चाहें तो फ्रेम को अपडेट नहीं करते हैं)।

मैं वास्तविक वीडियो ड्रा से एक अलग थ्रेड पर currentTime अपडेट विश्वास करते हैं, तो यह एक तरह से अपने आप घड़ी है कि बस के लिए जा रहा रखता है की तरह काम करता है। यह वह जगह है जहां वीडियो होना चाहता है, जरूरी नहीं कि यह कहां है। तो आप करीब आ सकते हैं, लेकिन आपको फ्रेम गणना के परिणामों को गोल करने की आवश्यकता है, और थोड़ी देर में, आप एक फ्रेम से दूर हो सकते हैं।

+0

धन्यवाद कि बहुत ही कुशल है। – SayedTaqui

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