2010-12-02 20 views
6

Videoda önceden tanımlı zamana sahip bir video ekran görüntüsü almaya çalışıyorum. Bu yüzden tuval elemanı ile denedim. Mesele, videonun görüntüsünü çizdiğinizde videonun oynatılması gerektiğidir, ancak yine de duraklatılmak üzere resme ihtiyacım var. Yani bu çalıştı:HTML5 video ekran görüntüsü

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

Ama muhtemelen tahmin edebileceğiniz gibi video tuval hiçbir ekran görüntüsünde sonuçlanan çizim yapılmadan önce duraklar. Yani drawImage için bir geri çağırma işlevi var mı? Benim durumumda, çekme işlemi, yaklaşık 50ms alır, ama bunu yapmak güvenli hissetmez: elle kullanarak bu ne sonra konum olduğundan emin değilim ama ekran görüntüsü alarak denedik var

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

+1 bir yanıt bekliyor :) –

+0

hehe, bu kanvas ve video sorularım – tbleckert

+0

numaralı telefona bir cevap bulmakta zor görünüyor, bu makalenin yararlı olduğunu ve HTML5 kanvasına sahip bir video ekran görüntüsü demosu olduğunu doğrulayın: http://techslides.com/create-youtube-screenshots-with-html5-and-canvas/ – iwek

cevap

1

Hm ... sanki duraklatılmış bir videodan resim çizmek mümkün gibi görünüyor. Sadece aralığın başlangıcından itibaren devam etmesini sağlayın.

+0

Şaşkınım, kabul edilen cevabı alamıyor musun? – RobertPitt

+0

O iyi bir cevap olabilirdi, ama meselem işe yaramadı. Testlere dayanarak, videoyu yavaşlatmadan yapılabileceğini öğrendim. – tbleckert

+2

Birisi, bunun nasıl yapılacağı hakkında ayrıntılı bilgi verebilir. Bunun üzerine sıkıştım – Yalamber

1

MWSnap? Ekran görüntüsünü alırken ekranı donduruyor, bu yüzden sizin için işe yarayabileceğini tahmin ediyorum.

2

Aksine çok düşük bir şeye videonun playbackrate ayarlamayı deneyebilirsiniz sizi duraklatma daha (ya da sıfır eğer inşaat?):

video.playbackRate = 0.0001; // or 0 

Bu etkin sizin için video duraklar. Geçen yöntemi kullanırken

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); 

videonun aynı olmalıdır:

Ayrıca olmayan bir siyah piksel için zaman aşımı ile sonuçlanan görüntüyü taramak ardından siyah, tranparency 0.99 için tuval ayarlayabilir ve olabilir komut dosyası olarak etki alanı ve güvenlik kısıtlamaları nedeniyle yerel dosyalarda çalışmaz.

+0

Tatlı, aslında işe yaramalı. Cevap için +1 ve denediğimde buraya geri döneceğim! – tbleckert