You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何将Onvif摄像头成像设置输出保存为JSON文件?

解决方法:将ONVIF摄像头设置保存为JSON文件

嘿,作为新手不用慌,其实在Node.js里把控制台输出的内容保存成JSON文件非常简单,只需要用到Node.js自带的fs(文件系统)模块就行,不用额外装包。下面一步步来改你的代码:

步骤1:引入fs模块

首先在你的代码顶部加上fs模块的引入,它是Node.js核心模块,直接用就行:

var fs = require('fs');

步骤2:修改回调函数,写入JSON文件

把原来的console.log(stream)替换成写入文件的代码。这里给你两种选择:异步写入(不会阻塞程序)或者同步写入(代码更直观,适合新手)。

完整修改后的代码(推荐异步写法):

var CAMERA_HOST = 'IP', USERNAME = 'USER', PASSWORD = 'PASSWORD', PORT = 'PORT'; 
var http = require('http'), 
    Cam = require('./onvif').Cam,
    fs = require('fs'); // 新增引入fs模块

new Cam({ 
    hostname: CAMERA_HOST, 
    username: USERNAME, 
    password: PASSWORD, 
    port: PORT 
}, function(err) { 
    if (err) { 
        console.log('Connection Failed for ' + CAMERA_HOST + ' Port: ' + PORT + ' Username: ' + USERNAME + ' Password: ' + PASSWORD); 
        return; 
    } 
    console.log('CONNECTED'); 
    this.getImagingSettings({VideoSourceToken:'000'},function(err, stream) { 
        if (err) { // 别忘了处理可能的错误
            console.error('获取成像设置失败:', err);
            return;
        }
        // 把stream对象转成格式化的JSON字符串,缩进2空格方便阅读
        const jsonContent = JSON.stringify(stream, null, 2);
        
        // 异步写入文件到当前目录的camera-settings.json
        fs.writeFile('./camera-settings.json', jsonContent, (writeErr) => {
            if (writeErr) {
                console.error('写入JSON文件失败:', writeErr);
            } else {
                console.log('摄像头设置已成功保存到camera-settings.json!');
                console.log(stream); // 保留控制台输出方便查看
            }
        });
    }); 
});

如果你更偏爱同步写法(代码更简洁):

可以把上面的fs.writeFile部分替换成下面的代码:

// 同步写入文件
try {
    fs.writeFileSync('./camera-settings.json', jsonContent);
    console.log('摄像头设置已成功保存到camera-settings.json!');
    console.log(stream);
} catch (writeErr) {
    console.error('写入JSON文件失败:', writeErr);
}

关键细节说明:

  • JSON.stringify(stream, null, 2):把JavaScript对象stream转换成标准JSON字符串,第三个参数2是缩进空格数,让生成的JSON文件格式工整,方便你后续分析阅读。
  • 生成的camera-settings.json会保存在你运行Node.js程序的当前目录下,你可以修改路径和文件名,比如改成./data/camera-config.json(注意要确保data目录存在,否则会报错)。

运行修改后的代码,你就能在指定位置看到生成的JSON文件啦,打开它就能看到和控制台输出完全一致的摄像头设置内容!

内容的提问来源于stack exchange,提问作者Jules Lecoustre

火山引擎 最新活动