M
Size: a a a
M
Л
a
ДП
ДП
ДП
AF
АК
ДП
ДП
ДП
АК
ДП
A
A
var spawn = require('child_process').spawn;
var gm = require('gm');
function getCameraVideo(url, extcmd, tmpfile, callback) {
/*
url - адрес rtsp-потока камеры
extcmd - дополнительный код в команде ffmpeg
filename - имя файла для формирования
callback - функция, вызываемая после получения видео
*/
var time = 3, // длина записи
fps = 15, // частота кадров потока
codec = 'libx264', // h264_omx для Raspberry Pi
size = '720:480'; // результирующий размер видео
// выполняем команду ffmpeg чтобы сделать запись с потока
var ffmpegCommand = '-y -i ' + url + extcmd + ' -t ' + time +
' -f mp4 -vcodec ' + codec +
' -pix_fmt yuv420p -s ' + size + ' -b:v 1500k -vsync vfr -an -r ' + fps + ' ' + tmpfile;
var ffmpeg = spawn('ffmpeg', (ffmpegCommand).split(' '), {});
ffmpeg.stderr.on('data', function(data){
//console.error(data.toString());
});
ffmpeg.on('close', function(code) {
callback(tmpfile);
});
}
function writeText4Video(callback) {
// callback - функция, вызываемая после формирования картинки
var tmpfile = "C:/iobroker/SmartHome/iobroker-data/files/camera/tmp/blankwithtext.png";
gm(1280, 720, "#000000") // размера картики и черный цвет фона
.transparent('#000000') // прозрачность
.stroke("#000000", 1)
.fill("#ffffff")
.font("Helvetica.ttf", 32)
//.font("/home/pi/11102.ttf", 58)
.drawText(30, 60, "Главный вход")
.stroke("#000000", 1)
.fill("#ffff00")
//.font("/home/pi/11068.ttf", 32)
.drawText(30, 100, "Температура на улице: "+getState('weatherunderground.0.current.temp_c').val)
.write(tmpfile, function (err) {
if (err) {
console.error(err);
} else {
callback(tmpfile);
}
});
}
// получение 4 сек видео с камеры
getCameraVideo('rtsp://admin:pass@192.168.137.215/rtsph264480p', '', 'C:/iobroker/SmartHome/iobroker-data/files/camera/tmp/video1.mp4', function(filename){
sendTo('telegram.0', {
user: params['Anzor'],
text: filename,
caption: params['name']
});
});
ИК
var spawn = require('child_process').spawn;
var gm = require('gm');
function getCameraVideo(url, extcmd, tmpfile, callback) {
/*
url - адрес rtsp-потока камеры
extcmd - дополнительный код в команде ffmpeg
filename - имя файла для формирования
callback - функция, вызываемая после получения видео
*/
var time = 3, // длина записи
fps = 15, // частота кадров потока
codec = 'libx264', // h264_omx для Raspberry Pi
size = '720:480'; // результирующий размер видео
// выполняем команду ffmpeg чтобы сделать запись с потока
var ffmpegCommand = '-y -i ' + url + extcmd + ' -t ' + time +
' -f mp4 -vcodec ' + codec +
' -pix_fmt yuv420p -s ' + size + ' -b:v 1500k -vsync vfr -an -r ' + fps + ' ' + tmpfile;
var ffmpeg = spawn('ffmpeg', (ffmpegCommand).split(' '), {});
ffmpeg.stderr.on('data', function(data){
//console.error(data.toString());
});
ffmpeg.on('close', function(code) {
callback(tmpfile);
});
}
function writeText4Video(callback) {
// callback - функция, вызываемая после формирования картинки
var tmpfile = "C:/iobroker/SmartHome/iobroker-data/files/camera/tmp/blankwithtext.png";
gm(1280, 720, "#000000") // размера картики и черный цвет фона
.transparent('#000000') // прозрачность
.stroke("#000000", 1)
.fill("#ffffff")
.font("Helvetica.ttf", 32)
//.font("/home/pi/11102.ttf", 58)
.drawText(30, 60, "Главный вход")
.stroke("#000000", 1)
.fill("#ffff00")
//.font("/home/pi/11068.ttf", 32)
.drawText(30, 100, "Температура на улице: "+getState('weatherunderground.0.current.temp_c').val)
.write(tmpfile, function (err) {
if (err) {
console.error(err);
} else {
callback(tmpfile);
}
});
}
// получение 4 сек видео с камеры
getCameraVideo('rtsp://admin:pass@192.168.137.215/rtsph264480p', '', 'C:/iobroker/SmartHome/iobroker-data/files/camera/tmp/video1.mp4', function(filename){
sendTo('telegram.0', {
user: params['Anzor'],
text: filename,
caption: params['name']
});
});
A
ИК
M
AK