Skip to content

Instantly share code, notes, and snippets.

@sergiors
Created July 22, 2014 16:24
Show Gist options
  • Save sergiors/c7e409b5512fda54cf73 to your computer and use it in GitHub Desktop.
Save sergiors/c7e409b5512fda54cf73 to your computer and use it in GitHub Desktop.
video streamer
var fs = require("fs");
module.exports = {
play: function(req, res) {
var path = "video.mp4";
var stat = fs.statSync(path);
var total = stat.size;
if (req.headers["range"]) {
var range = req.headers.range;
var parts = range.replace(/bytes=/, "").split("-");
var partialStart = parts[0];
var partialEnd = parts[1];
var start = parseInt(partialStart, 10);
var end = partialEnd ? parseInt(partialEnd, 10) : total - 1;
var chunksize = (end - start) + 1;
// console.log("range: " + start + " - " + end + " = " + chunksize);
res.writeHead(206, {
"Content-Range": "bytes " + start + "-" + end + "/" + total,
"Accept-Ranges": "bytes",
"Content-Length": chunksize,
"Content-Type": "video/mp4"
});
fs.createReadStream(path, {
start: start,
end: end
})
.pipe(res);
} else {
res.writeHead(200, {
"Content-Length": total,
"Content-Type": "video/mp4"
});
fs.createReadStream(path).pipe(res);
}
}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment