Skip to content

Instantly share code, notes, and snippets.

@leandrodaher
Forked from DingGGu/stream.js
Created December 6, 2023 19:49
Show Gist options
  • Save leandrodaher/b94c5de61b05a63efac8657892e5dbc6 to your computer and use it in GitHub Desktop.
Save leandrodaher/b94c5de61b05a63efac8657892e5dbc6 to your computer and use it in GitHub Desktop.
NodeJS Mp3 Streaming ExpressJS
var express = require('express');
var app = express();
var fs = require('fs');
app.listen(3000, function() {
console.log("[NodeJS] Application Listening on Port 3000");
});
app.get('/api/play/:key', function(req, res) {
var key = req.params.key;
var music = 'music/' + key + '.mp3';
var stat = fs.statSync(music);
range = req.headers.range;
console.log(req.headers);
var parts = range.replace(/bytes=/, "").split("-");
var partial_start = parts[0];
var partial_end = parts[1];
var start = parseInt(partial_start, 10);
var end = partial_end ? parseInt(partial_end, 10) : stat.size-1;
var content_length = (end-start)+1;
res.status(206).header({
'Content-Type': 'audio/mpeg',
'Content-Length': content_length,
'Content-Range': "bytes " + start + "-" + end + "/" + stat.size
});
var readStream = fs.createReadStream(music, {start: start, end: end});
readStream.pipe(res);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment