diff --git a/server.js b/server.js index 84838ac..2e2be26 100644 --- a/server.js +++ b/server.js @@ -855,12 +855,18 @@ app.get('/api/hls/playlist.m3u8', async (req, res) => { let m3u8 = `#EXTM3U\n#EXT-X-VERSION:3\n#EXT-X-TARGETDURATION:${HLS_SEGMENT_TIME}\n#EXT-X-MEDIA-SEQUENCE:0\n#EXT-X-PLAYLIST-TYPE:VOD\n`; const subtitleParam = subtitleIndex !== undefined && subtitleIndex !== null && subtitleIndex !== '-1' ? `&subtitleIndex=${subtitleIndex}` : ''; + const sessionId = req.query.sessionId; + const username = req.query.username; + const password = req.query.password; + const authParam = sessionId ? `&sessionId=${encodeURIComponent(sessionId)}` : + (username && password ? `&username=${encodeURIComponent(username)}&password=${encodeURIComponent(password)}` : ''); + for (let i = 0; i < totalSegments; i++) { let segDur = HLS_SEGMENT_TIME; if (i === totalSegments - 1 && duration % HLS_SEGMENT_TIME !== 0) { segDur = (duration % HLS_SEGMENT_TIME) || HLS_SEGMENT_TIME; } - m3u8 += `#EXTINF:${segDur.toFixed(6)},\nsegment.ts?bucket=${encodeURIComponent(bucket)}&key=${encodeURIComponent(key)}&seg=${i}&encoder=${req.query.encoder || 'h264_rkmpp'}&decoder=${req.query.decoder || 'auto'}${subtitleParam}\n`; + m3u8 += `#EXTINF:${segDur.toFixed(6)},\nsegment.ts?bucket=${encodeURIComponent(bucket)}&key=${encodeURIComponent(key)}&seg=${i}&encoder=${req.query.encoder || 'h264_rkmpp'}&decoder=${req.query.decoder || 'auto'}${subtitleParam}${authParam}\n`; } m3u8 += `#EXT-X-ENDLIST\n`;