A naive streaming API will choke under load. Here is how to optimize.
const stream = fs.createReadStream(videoPath, start, end ); res.writeHead(206, 'Content-Range': `bytes $start-$end/$size`, 'Accept-Ranges': 'bytes', 'Content-Length': chunksize, 'Content-Type': 'video/mp4', 'Cache-Control': 'public, max-age=86400', // 1 day cache ); stream.pipe(res); video streaming api nodejs
npm install fluent-ffmpeg
This means, "Please send me the file starting from byte 0." The server responds with a status code 206 Partial Content , along with the requested chunk of data. A naive streaming API will choke under load
const ext = path.extname(videoPath); const contentType = mimeTypes[ext] || 'application/octet-stream'; 'Content-Range': `bytes $start-$end/$size`
npm install multer multer-s3