Estoy tratando de escribir un servidor nodejs que tomará una entrada de tiempo (posiblemente parte de la ruta url) y luego proporciono una imagen fija del fotograma de video en ese momento como una imagen JPEG.¿Cómo obtengo una instantánea de un video en nodejs?
Puedo hacer esto fácilmente en Javascript, pero no veo la manera de hacerlo en nodejs. Sé que probablemente necesite usar un complemento de canvas como node-canvas para hacer la instantánea.
Cualquier idea bienvenida.
El siguiente es cómo lo hago en Javascript en la actualidad
myjavascript.js
function capture(video, scaleFactor) {
if(scaleFactor == null){
scaleFactor = 1;
}
var w = video.videoWidth * scaleFactor;
var h = video.videoHeight * scaleFactor;
stdout("<br/> w: "+ w+ "<br/> h: "+ h);
var canvas = document.createElement('canvas');
canvas.width = w;
canvas.height = h;
var ctx = canvas.getContext('2d');
ctx.drawImage(video, 0, 0, w, h);
return canvas;
}
function shoot(){
var video = document.getElementById("videoTag");
var output = document.getElementById("output");
var canvas = capture(video, 1);
output.innerHTML = '';
output.appendChild(canvas);
}
index.html
<html>
<head>
<title>video snap</title>
<script type="text/javascript" src="myjavascript.js"></script>
</head>
<body>
<div id="video_container" >
<video id="videoTag" width="640" height="360" autobuffer="" controls="true">
<source src="frozenplanet.mp4" type="video/mp4">
<source src="frozenplanet.ogv" type="video/ogg">
</video>
</div>
<div id="output"></div>
</body>
</html>
Node.js no tiene herramienta de procesamiento de video y no se recomienda procesar video por aplicación web. Si desea procesar el video en el lado del servidor, necesita una herramienta adecuada para eso y cierta realización de cola (tal vez en el nodo) para ello. –