特定の質問を申し訳ありませんが、私は非常に奇妙な問題を抱えています。なぜそれが起こっているのかわかりません。ノード要求ハンドラがストリームで再起動する
私は、YoutubeのvideoIDを取得して、リクエスタにオーディオをストリームするノードアプリケーションを作成しています。ここにコードがあります。
router.get('/video/:videoId', function(req, res, next) {
console.log('requested ' + req.params.videoId);
var filename = req.params.videoId + ".mp3";
youtubeDL.exec(req.params.videoId, ['-x', '--audio-format', 'mp3', '-o', filename], {}, function(err, output) {
if (err){
res.send("bad request");
return;
}else{
console.log("exec begin")
res.setHeader("content-type", "audio/mp3");
fs.createReadStream(filename).pipe(res);
fs.unlink(filename);
console.log("exec end")
}
});
console.log("router end");
});
問題は、要求が、私はそれを説明するだろうかと思い、「ループ」を開始し、要求が停止する前に3回起動されていることです。
例えば、ここではそれが停止した時点でhttp://localhost:3000/resources/video/JCHTX_pgw6A
requested JCHTX_pgw6A
router end
[Long pause here]
exec begin
exec end
GET /resources/video/JCHTX_pgw6A 200 17396.280 ms - -
requested JCHTX_pgw6A
router end
[Long pause here]
exec begin
exec end
GET /resources/video/JCHTX_pgw6A 200 17550.309 ms - -
requested JCHTX_pgw6A
router end
[Long pause here]
exec begin
exec end
GET /resources/video/JCHTX_pgw6A 200 1645.932 ms - -
用の出力です。なぜこれが起こっているのか、または追加情報を得る方法について誰かが考えていますか?私は完全に困惑しています。
リクエストはどのようにクライアントから行われますか? – mscdex
私はブラウザ(Chrome)でhttp:// localhost:3000/resources/video/JCHTX_pgw6Aにアクセスしています。結果はブラウザのメディアプレーヤーですが、矢印はロードされないためグレー表示されています。 –
Chromeデベロッパーコンソールにメッセージやビデオリクエストのネットワークタブのメッセージがありますか? – mscdex