2010-12-02 19 views
6

मैं फिल्म में पूर्वनिर्धारित समय के साथ वीडियो का एक स्क्रीनशॉट लेने की कोशिश कर रहा हूं। तो मैंने इसे कैनवास तत्व के साथ कोशिश की। बात यह है कि जब आप वीडियो की छवि खींचते हैं तो वीडियो चलाना चाहिए, लेकिन मुझे छवि को अभी भी रोके जाने की आवश्यकता है। तो मैं इस कोशिश की:एचटीएमएल 5 वीडियो स्क्रीनशॉट

video.play(); 
context.drawImage(video,0,0,canvas.width,canvas.height); 
video.pause(); 

लेकिन जैसा कि आप शायद कल्पना कर सकते हैं, वीडियो कैनवास ड्राइंग किया जाता है से पहले, कोई स्क्रीनशॉट में जिसके परिणामस्वरूप रुक जाता है। तो drawImage के लिए एक कॉलबैक फ़ंक्शन है? मेरे मामले में, ड्राइंग प्रक्रिया के बारे में 50ms लेता है, लेकिन यह करने के लिए सुरक्षित महसूस नहीं करता: मैन्युअल रूप से का उपयोग कर

setTimeout(function() { video.pause(); }, 50); 
+0

+1 एक जवाब :) –

+0

hehe, इन कैनवास और वीडियो सवालों की तरह लगता है के लिए इंतज़ार कर – tbleckert

+0

इस लेख की जांच के लिए एक जवाब, सहायक होना चाहिए पाना कठिन है और एचटीएमएल 5 कैनवास के साथ एक वीडियो स्क्रीनशॉट डेमो है: http://techslides.com/create-youtube-creenshots-with-html5-and-canvas/ – iwek

उत्तर

1

एचएम ... ऐसा लगता है कि वास्तव में एक विरामित वीडियो से एक छवि खींचना संभव है। बस शुरुआत से अंतराल चलते रहो।

+0

मैं उलझन में हूं, क्या आपको स्वीकार किए गए उत्तर को नहीं प्राप्त करना चाहिए? – RobertPitt

+0

वह कर सकता था और यह एक अच्छा जवाब था, लेकिन यह मेरी समस्या का काम नहीं था। परीक्षण के आधार पर मुझे पता चला कि यह वीडियो को धीमा किए बिना किया जा सकता है। – tbleckert

+2

क्या कोई इसे करने के तरीके पर पूरा विवरण प्रदान कर सकता है। मैं इस पर अटक गया हूँ – Yalamber

1

मुझे यकीन है कि यह है कि क्या आप के बाद कर रहे हैं है नहीं कर रहा हूँ, लेकिन आप स्क्रीनशॉट लेने की कोशिश की है MWSnap? जब आप स्क्रीनशॉट ले रहे हों तो यह स्क्रीन को फ्रीज करता है, इसलिए मुझे लगता है कि यह आपके लिए काम कर सकता है।

2

बल्कि आप रोक बहुत कम कुछ करने के लिए वीडियो के playbackrate को सेट कर सकें से (या शून्य है कि अगर काम करता है?):

video.playbackRate = 0.0001; // or 0 

यह प्रभावी रूप से आप के लिए वीडियो थम जाएगा।

तुम भी काले, tranparency 0.99 करने के लिए कैनवास सेट कर सकते हैं और फिर एक गैर काला पिक्सेल के लिए अपनी टाइमआउट में जिसके परिणामस्वरूप छवि को स्कैन:

setTimeout(function() { 
    pixel = context.getImageData(image.width/2, image.height/2, 1, 1); 
    // do something with the pixel, kick off another timeout if it is still has transparency 
}, 50); 

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

+0

मीठा, वास्तव में यह काम करना चाहिए। उत्तर के लिए +1 और जब मैंने कोशिश की है तो मैं यहां वापस आऊंगा! – tbleckert

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