0
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 をカットしてブラウザにストリーミングしようとしていますが、ブラウザで破損したファイルが表示されます

4

1 に答える 1

0

ノードを使用してYouTubeビデオをmp3としてダウンロードすることについて尋ねているかどうかはわかりませんが、私がそれを調査していたときに、このスレッドがGoogleの上にポップアップしました. そうでない場合は、おそらく正しい方向に向けたり、将来誰かを助けることができます. 改造 - 私がこれを正しく行っていない場合は申し訳ありません.

追加の StackOverflow リファレンス

しかし、私は次のコードを使用して、YouTube vid を mp3 としてダウンロードしています(YouTube vid をダウンロード/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');
});

};

于 2016-08-21T04:24:30.913 に答える