Потоковая передача mp3 ffmpeg через узел js

var fs = require('fs');
var child = require('child_process');
var http=require('http')
var input_file = fs.createReadStream('./remo.mp3');
http.createServer(function (req,res) {
var args = ['-ss',120,
'-i', 'remo.mp3',
'-f','mp3',
'pipe:1' // Output on stdout
];
var trans_proc = child.spawn('ffmpeg', args);
res.writeHead(200, {
      'Content-Type': 'audio/mpeg'
  });

trans_proc.stdout.pipe(res)
trans_proc.stderr.on('data',function (err) {
console.log(err.toString());
})
}).listen(2000)

я пытаюсь вырезать mp3 и транслировать в браузер, но в браузере отображается поврежденный файл


person school boy    schedule 15.08.2016    source источник


Ответы (1)


Я не могу сказать, спрашиваете ли вы о загрузке видео с YouTube в формате mp3 с помощью узла, но эта тема появилась в Google, когда я изучал именно это. Так что, если нет, возможно, это может указать вам правильное направление или помочь кому-то в будущем... Моды - извините, если я делаю это неправильно.

Дополнительный справочник по StackOverflow

Но я использую следующий код, чтобы загрузить видео с YouTube в формате mp3 (загрузить видео с YouTube/преобразовать в mp3/загрузить):

module.exports.toMp3 = function(req, res, next){
var id = req.params.id; // extra param from front end
var title = req.params.title; // extra param from front end
var url = 'https://www.youtube.com/watch?v=' + id;
var stream = youtubedl(url); //include youtbedl ... var youtubedl = require('ytdl');

//set response headers
res.setHeader('Content-disposition', 'attachment; filename=' + title + '.mp3');
res.setHeader('Content-type', 'audio/mpeg');

//set stream for conversion
var proc = new ffmpeg({source: stream});

//currently have ffmpeg stored directly on the server, and ffmpegLocation is the path to its location... perhaps not ideal, but what I'm currently settled on. And then sending output directly to response.
proc.setFfmpegPath(ffmpegLocation);
proc.withAudioCodec('libmp3lame')
    .toFormat('mp3')
    .output(res)
    .run();
proc.on('end', function() {
    console.log('finished');
});

};

person lance fallon    schedule 21.08.2016