我正在尝试找到一种方法来保存从 AR-Drone 流式传输视频时产生的 .png 图像。以下代码使用 felixge 的 ar-drone 模块成功地将视频流式传输到浏览器,但我想截取此提要的屏幕截图并将其保存到我的驱动器以进行实时图像分析。
当我连接到主机时,我正在尝试使用屏幕截图模块保存浏览器中显示的内容,但这所做的只是保存我指定大小的空白白色图像(参见下面的代码)。有没有更好的方法来保存 AR-Drone 视频中的静止帧(不保存 .h264 视频源)?
谢谢你。
// Run this to receive a png image stream from your drone.
var arDrone = require('ar-drone'); //Call AR-drone module
var http = require('http'); //Allows video to be displayed to browser
var client = arDrone.createClient(); //Create AR-drone client--->IP address, video frame rate, image sizing
var pngStream = client.getPngStream(); //Fetch real-time video feed from quad
var fs = require('fs');
var screenshot = require('node-webkit-screenshot');
client.config('general:navdata_options', 777060865); //turn on GPS
client.config('video:video_channel',3); //Switch feed to downward-facing camera
var lastPng;
pngStream
.on('error', console.log)
.on('data', function(pngBuffer) {
lastPng = pngBuffer; //Store latest png still frame
});
var server = http.createServer(function(req, res) {
if (!lastPng) {
res.writeHead(503);
res.end('Did not receive any png data yet.');
return;
}
res.writeHead(200, {'Content-Type': 'image/png'});
res.end(lastPng);
});
server.listen(8080, function() {
console.log('Serving latest png on port 8080 ...');
})
screenshot({
url : 'http://localhost:8080',
width : 640,
height : 360
})
.then(function(buffer){
fs.writeFile('Drone.png', buffer, function(){
console.log('Screenshot saved') ;
screenshot.close();
});
});