Last active
July 21, 2018 22:00
-
-
Save t0rr3sp3dr0/6610d9ee1e61e3dcee7d2605b4792cba to your computer and use it in GitHub Desktop.
node ./dlna_streamer.js video.mp4
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env node | |
const fs = require('fs'); | |
const os = require('os'); | |
const path = require('path'); | |
const dlnacasts = require('dlnacasts')(); | |
const express = require('express'); | |
const mime = require('mime-types'); | |
const tmp = require('tmp'); | |
process.on('SIGINT', () => { | |
dlnacasts.players.forEach(player => player.stop()); | |
setTimeout(process.exit, 1000); | |
}); | |
if (['http', 'https'].indexOf(process.argv[2].split(':')[0]) !== -1) { | |
const filePath = process.argv[2]; | |
const basename = path.basename(filePath); | |
const extname = path.extname(filePath); | |
const mimeType = mime.contentType(extname); | |
dlnacasts.on('update', player => { | |
console.log(player); | |
player.play(filePath, { title: basename, type: mimeType }); | |
}); | |
} else { | |
const filePath = path.resolve(process.argv[2]); | |
const basename = path.basename(filePath); | |
const extname = path.extname(filePath); | |
const mimeType = mime.contentType(extname); | |
const tmpDir = tmp.dirSync().name; | |
fs.symlinkSync(filePath, path.join(tmpDir, `video${extname}`)); | |
const app = express(); | |
app.use(express.static(tmpDir)); | |
const listener = app.listen(0); | |
const address = [].concat.apply([], Object.values(os.networkInterfaces())).filter(details => details.family === 'IPv4' && details.internal === false)[0].address; | |
const port = listener.address().port; | |
dlnacasts.on('update', player => { | |
console.log(player); | |
player.play(`http://${address}:${port}/video${extname}`, { title: basename, type: mimeType }); | |
}); | |
} | |
setInterval(dlnacasts.update, 125); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment