const express = require('express') const fs = require('fs') const app = express() const cors = require("cors"); const videoFileMap={ 'cdn':'videos/v1.mp4', 'generate-pass':'videos/v2.mp4', 'get-post':'videos/v3.mp4', } console.log("Finding File"); var corsOptions = { origin: 'http://127.0.0.1:3000/', optionsSuccessStatus: 200 // some legacy browsers (IE11, various SmartTVs) choke on 204 } app.use(cors(corsOptions)); // ,cors(corsOptions) app.get('/videos/:filename', (req, res)=>{ const fileName = req.params.filename; const filePath = videoFileMap[fileName] if(!filePath){ console.log("Finding File Not Found ", filePath); return res.status(404).send('File not found') } console.log("Finding File Found ", filePath); const stat = fs.statSync(filePath); const fileSize = stat.size; const range = req.headers.range; if(range){ const parts = range.replace(/bytes=/, '').split('-') const start = parseInt(parts[0], 10); const end = parts[1] ? parseInt(parts[1], 10) : fileSize - 1; const chunksize = end - start + 1; const file = fs.createReadStream(filePath, {start, end}); const head = { 'Content-Range': `bytes ${start}-${end}/${fileSize}`, 'Accept-Ranges': 'bytes', 'Content-Length': chunksize, 'Content-Type': 'video/mp4' }; res.writeHead(206, head); file.pipe(res); } else{ const head = { 'Content-Length': fileSize, 'Content-Type': 'video/mp4' }; res.writeHead(200, head); fs.createReadStream(filePath).pipe(res) } }) app.listen(3036, ()=>{ console.log('server is listening on post 3036') })