Sto provando a scrivere un server nodejs che richiederà un input temporale (probabilmente parte del percorso url) e quindi fornirà una foto del frame video in quel momento come immagine jpeg.Come si ottiene lo snapshot di un video in nodejs?
Posso farlo facilmente in semplice Javascript, ma non riesco a vedere un modo per farlo in nodejs. So che probabilmente avrò bisogno di usare un plugin canvas come node-canvas per fare lo snapshot.
Tutte le idee sono benvenute.
Quello che segue è come lo faccio in Javascript in questo momento:
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 non ha lo strumento di elaborazione video e non è consigliabile elaborare video tramite applicazione web. Se si desidera elaborare il video sul lato server, è necessario uno strumento appropriato per questo e qualche realizzazione della coda (forse sul nodo) per esso. –