Add timelapse frame creation check

- runs 10 seconds after next expected frame creation
audio-only-out-and-refactor-monitor-settings
Moe 2023-01-21 17:10:21 -08:00
parent d08b04af8a
commit 0b8facffeb
2 changed files with 26 additions and 1 deletions

View File

@ -760,9 +760,10 @@ module.exports = (s,config,lang) => {
const videoFlags = []
const inputMap = buildInputMap(e,e.details.input_map_choices.record_timelapse)
const { videoWidth, videoHeight } = validateDimensions(e.details.record_timelapse_scale_x,e.details.record_timelapse_scale_y)
const creationFps = (1 / (!isNaN(parseFloat(e.details.record_timelapse_fps)) ? parseFloat(e.details.record_timelapse_fps) : 900)).toFixed(3);
if(videoWidth && videoHeight)videoFlags.push(`-s ${videoWidth}x${videoHeight}`)
if(inputMap)videoFlags.push(inputMap)
videoFilters.push(`fps=${(1 / (!isNaN(parseFloat(e.details.record_timelapse_fps)) ? parseFloat(e.details.record_timelapse_fps) : 900)).toFixed(3)}`)
videoFilters.push(`fps=${creationFps}`)
if(e.details.record_timelapse_vf)videoFilters.push(e.details.record_timelapse_vf)
if(e.details.record_timelapse_watermark === "1" && e.details.record_timelapse_watermark_location){
videoFilters.push(buildWatermarkFiltersFromConfiguration('record_timelapse_',e))

View File

@ -136,6 +136,8 @@ module.exports = (s,config,lang) => {
delete(activeMonitor.recordingChecker);
clearTimeout(activeMonitor.streamChecker);
delete(activeMonitor.streamChecker);
clearTimeout(activeMonitor.timelapseFramesChecker);
delete(activeMonitor.timelapseFramesChecker);
clearTimeout(activeMonitor.checkSnap);
delete(activeMonitor.checkSnap);
clearTimeout(activeMonitor.watchdog_stop);
@ -956,6 +958,27 @@ module.exports = (s,config,lang) => {
}
},60000*1);
}
function resetTimelapseFramesCheck(e){
const groupKey = e.ke
const monitorId = e.mid || e.id
const activeMonitor = getActiveMonitor(groupKey,monitorId)
const monitorConfig = s.group[groupKey].rawMonitorConfigurations[monitorId]
const creationInterval = parseFloat(monitorConfig.details.record_timelapse_fps) || 900;
clearTimeout(activeMonitor.timelapseFramesChecker)
activeMonitor.timelapseFramesChecker = setTimeout(function(){
if(activeMonitor && activeMonitor.isStarted === true){
forceMonitorRestart({
ke: groupKey,
mid: monitorId,
},{
type: lang['Camera is not recording'],
msg: {
msg: lang['Restarting Process']
}
})
}
}, (1000 * creationInterval) + 10000);
}
function onDetectorJpegOutputAlone(e,d){
if(s.isAtleatOneDetectorPluginConnected){
const groupKey = e.ke
@ -1109,6 +1132,7 @@ module.exports = (s,config,lang) => {
fileStream.on('close', function () {
activeMonitor.recordTimelapseWriter = null
s.createTimelapseFrameAndInsert(e,location,filename)
resetTimelapseFramesCheck(e)
})
activeMonitor.recordTimelapseWriter = fileStream
}