diff --git a/index.js b/index.js index 9c7b792..6298c71 100644 --- a/index.js +++ b/index.js @@ -66,15 +66,26 @@ app.get('/videos', (req, res) => { }); let process = null; +let mayRestart = false; if (fs.existsSync('/tmp/video')) { const initialVideo = fs.readFileSync('/tmp/video'); process = require('child_process').spawn('ffplay', ['-fs', '-loop', '2147483647', '-hide_banner', '-loglevel', 'error', initialVideo]); + + process.on("exit", () => { + if (!mayRestart) { + process = require('child_process').spawn('ffplay', ['-fs', '-loop', '2147483647', '-hide_banner', '-loglevel', 'error', initialVideo]); + } + }); } +fs.mkdirSync('/video', { recursive: true }); + app.post('/play', (req, res) => { if (process) { + mayRestart = true; process.kill(); + mayRestart = false; } let video = req.query.video; @@ -98,6 +109,12 @@ app.post('/play', (req, res) => { console.error(`stderr: ${data}`); }); + process.on("exit", () => { + if (!mayRestart) { + process = require('child_process').spawn('ffplay', ['-fs', '-loop', '2147483647', '-hide_banner', '-loglevel', 'error', video]); + } + }); + res.json({ status: 'ok' }); }); diff --git a/video-player.service b/video-player.service index 88751a7..74b3198 100644 --- a/video-player.service +++ b/video-player.service @@ -2,12 +2,17 @@ Description=Video Player After=multi-user.target +StartLimitIntervalSec=500 +StartLimitBurst=50 + [Service] WorkingDirectory=/home/steady/video-player ExecStart=node /home/steady/video-player/index.js Environment=DISPLAY=:0 User=1000 Group=1000 +Restart=on-failure +RestartSec=5s [Install] WantedBy=multi-user.target \ No newline at end of file