I am trying to use canvas's drawImage
method with video source, but it's not working in Android 4.4.2, tested with Chrome browser.
Here's my code:
$(function() {
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
var video = document.getElementById('video');
var videoWidth;
var videoHeight;
var paused = false;
canvas.addEventListener('click', function() {
if (paused) {
video.play();
} else {
video.pause();
}
paused = !paused;
});
video.addEventListener("loadedmetadata", function() {
videoWidth = this.videoWidth || this.width;
videoHeight = this.videoHeight || this.height;
canvas.width = videoWidth;
canvas.height = videoHeight;
}, false);
video.addEventListener('play', function() {
var $this = this; // cache
(function loop() {
if ( ! $this.paused && ! $this.ended ) {
drawImage($this);
requestAnimationFrame(loop);
// setTimeout(loop, 1000 / 25); // drawing at 25 fps
}
})();
}, 0);
function drawImage(frame) {
ctx.drawImage(frame, 0, 0);
// ctx.clearRect ( 0 , 0 , canvas.width, canvas.height );
}
});
Fiddle: http://jsfiddle.net/h1hjp0Lp/
Is there a way to make it works with Android and iOS devices as well?
It seems to be an issue with that specific file format (mp4
).
Substituting a webm
file and it works fine.
Unfortunate, but that's been the way of <video>
for a while (to really require webm/ogg and not just mp4, regardless of what browsers claim to support).
(I bet its a bug relating to anti-drm screenshot stuff? who knows)
for example use the source http://video.webmfiles.org/big-buck-bunny_trailer.webm
and it will work: http://jsfiddle.net/h1hjp0Lp/15/
I'm running Chrome 43.0.2357.93 on Android 5.0.1, and drawImage isn't working for mp4 or webm.
It looks like Chrome isn't properly capturing frame data from the video tag. When I call getImageData and inspect the resulting imageData object, the RGBA values are all set to 0.
For HUAWEI GRA-TL00 with Android 5.0.1, drawImage
isn't working for mp4 or webm.
Refer to crestejs video Bitmap.
Related Links:
来源:https://stackoverflow.com/questions/30436576/html5-canvas-drawimage-with-video-source-not-working-on-android