I am trying to stream just audio from a youtube link straight to http with node.js.
My code looks like this, I am using express 4.0.
var express = require('express');
var router = express.Router();
var ytdl = require('ytdl');
var ffmpeg = require('fluent-ffmpeg');
var fs = require('fs');
router.get('/', function(req, res) {
var url = 'https://www.youtube.com/watch?v=GgcHlZsOgQo';
var video = ytdl(url)
res.set({
"Content-Type": "audio/mpeg"
})
new ffmpeg({source: video})
.toFormat('mp3')
.writeToStream(res, function(data, err) {
if (err) console.log(err)
})
});
module.exports = router;
Now, I'm able to stream the video's audio to the response if I save the file then pipe it to the response, but I'd rather try to figure out some way to go from downloading to ffmpeg to response.
Not sure if this is possible. The main goal is to keep it as light weight as possible, and not have to read from files.
I've seen this code which is essentially what I'd like to do minus the saving to a file part.