clean up ONVIF Scanner Snapshot error handling

fix-non-showing-inputs
Moe Alam 2020-10-29 22:26:47 -07:00
parent fd4d228046
commit d78b17169f
3 changed files with 36 additions and 34 deletions

View File

@ -95,6 +95,19 @@ module.exports = (s,config,lang) => {
resolve(null);
return
}
const completeRequest = () => {
fs.readFile(temporaryImageFile,(err,imageBuffer) => {
fs.unlink(temporaryImageFile,(err) => {
if(err){
s.debugLog(err)
}
})
if(err){
s.debugLog(err)
}
resolve(imageBuffer)
})
}
const temporaryImageFile = streamDir + s.gid(5) + '.jpg'
const ffmpegCmd = s.splitForFFPMEG(`-loglevel warning -re -probesize 100000 -analyzeduration 100000 ${inputOptions.join(' ')} -i "${url}" ${outputOptions.join(' ')} -f image2 -an -vf "fps=1" -vframes 1 "${temporaryImageFile}"`)
const snapProcess = spawn('ffmpeg',ffmpegCmd,{detached: true})
@ -103,17 +116,7 @@ module.exports = (s,config,lang) => {
})
snapProcess.on('close',async function(data){
clearTimeout(snapProcessTimeout)
fs.readFile(temporaryImageFile,(err,imageBuffer) => {
try{
s.file('delete',temporaryImageFile)
}catch(err){
}
if(err){
s.debugLog(err)
}
resolve(imageBuffer)
})
completeRequest()
})
var snapProcessTimeout = setTimeout(function(){
var pid = snapProcess.pid
@ -128,17 +131,7 @@ module.exports = (s,config,lang) => {
}else{
snapProcess.kill()
}
fs.readFile(temporaryImageFile,(err,imageBuffer) => {
try{
s.file('delete',temporaryImageFile)
}catch(err){
}
if(err){
s.debugLog(err)
}
resolve(imageBuffer)
})
completeRequest()
},10000)
},30000)
})

View File

@ -118,14 +118,21 @@ module.exports = function(s,config,lang,app,io){
uri: stream.data.GetStreamUriResponse.MediaUri.Uri
}
responseList.push(cameraResponse)
const imageSnap = (await createSnapshot({
output: ['-s 400x400'],
url: addCredentialsToStreamLink({
username: onvifUsername,
password: onvifPassword,
url: stream.data.GetStreamUriResponse.MediaUri.Uri
}),
})).toString('base64');
var imageSnap
if(cameraResponse.uri){
try{
imageSnap = (await createSnapshot({
output: ['-s 400x400'],
url: addCredentialsToStreamLink({
username: onvifUsername,
password: onvifPassword,
url: cameraResponse.uri
}),
})).toString('base64');
}catch(err){
// s.debugLog(err)
}
}
if(foundCameraCallback)foundCameraCallback(Object.assign(cameraResponse,{f: 'onvif', snapShot: imageSnap}))
}catch(err){
const searchError = (find) => {
@ -156,7 +163,7 @@ module.exports = function(s,config,lang,app,io){
port: camera.port,
error: errorMessage
});
s.debugLog(err)
// s.debugLog(err)
}
})
return responseList

View File

@ -5,9 +5,11 @@
<a href="#" class="btn btn-default" restart="system">
<i class="fa fa-retweet"></i> <%- lang['Restart Core'] %>
</a>
<a href="#" class="btn btn-default" system="update">
<i class="fa fa-retweet"></i> <%- lang['Update'] %>
</a>
<% if(!config.thisIsDocker){ %>
<a href="#" class="btn btn-default" system="update">
<i class="fa fa-retweet"></i> <%- lang['Update'] %>
</a>
<% } %>
<a href="#" class="btn btn-default" restart="cron">
<i class="fa fa-retweet"></i> <%- lang['Restart CRON'] %>
</a>