diff --git a/src/video.js b/src/video.js index a2361dd..7d2047f 100644 --- a/src/video.js +++ b/src/video.js @@ -527,25 +527,24 @@ function video( channelService, fillerDB, db, programmingService, activeChannelS var data = "#EXTM3U\n" - data += `#EXT-X-VERSION:3 - #EXT-X-MEDIA-SEQUENCE:0 - #EXT-X-ALLOW-CACHE:YES - #EXT-X-TARGETDURATION:60 - #EXT-X-PLAYLIST-TYPE:VOD\n`; + data += `#EXT-X-VERSION:3\n#EXT-X-MEDIA-SEQUENCE:0\n#EXT-X-ALLOW-CACHE:YES\n#EXT-X-TARGETDURATION:60\n#EXT-X-PLAYLIST-TYPE:VOD\n`; let ffmpegSettings = db['ffmpeg-settings'].find()[0] - cur ="59.0"; + // Duration to advertise for each pseudo-segment (seconds). Keep slightly + // below TARGETDURATION to avoid premature reloads. + let cur = "59.0"; + + function addSegment(url) { + data += `#EXTINF:${cur},\n${url}\n`; + } if ( ffmpegSettings.enableFFMPEGTranscoding === true) { - //data += `#EXTINF:${cur},\n`; - data += `${req.protocol}://${req.get('host')}/stream?channel=${channelNum}&first=0&m3u8=1&session=${sessionId}\n`; + addSegment(`${req.protocol}://${req.get('host')}/stream?channel=${channelNum}&first=0&m3u8=1&session=${sessionId}`) } - //data += `#EXTINF:${cur},\n`; - data += `${req.protocol}://${req.get('host')}/stream?channel=${channelNum}&first=1&m3u8=1&session=${sessionId}\n` + addSegment(`${req.protocol}://${req.get('host')}/stream?channel=${channelNum}&first=1&m3u8=1&session=${sessionId}`) for (var i = 0; i < maxStreamsToPlayInARow - 1; i++) { - //data += `#EXTINF:${cur},\n`; - data += `${req.protocol}://${req.get('host')}/stream?channel=${channelNum}&m3u8=1&session=${sessionId}\n` + addSegment(`${req.protocol}://${req.get('host')}/stream?channel=${channelNum}&m3u8=1&session=${sessionId}`) } res.send(data)