我有这个音频流代码,当用户在浏览器上与视频流进行交互时,我试图在其中获取范围值,但是在这种情况下,这种行为不会加在一起;初始页面加载后,请求中不再存在该范围,甚至在随后的刷新中也是如此。
const { createServer } = require('http');
const { createReadStream, stat } = require('fs');
const path = require('path');
const { promisify } = require('util');
const fileInfo = promisify(stat);
const audiofile = path.join(__dirname, 'myfile.mp3');
createServer(async (req, res) => {
const { size } = await fileInfo(audiofile);
let range = req.headers.range;
if(range) {
console.log(range);
let [start, end] = range.replace(/bytes=/, '').split('-');
start = parseInt(start, 10);
end = end ? parseInt(end, 10) : size - 1;
res.writeHead(206, {
'Content-Range': `bytes ${start}-${end}/${size}`,
'Accept-Ranges': 'bytes',
'Content-Type': 'audio/mpeg',
'Content-Length': (end-start) + 1,
});
createReadStream(audiofile, { start, end }).pipe(res);
}
else {
console.log(range);
res.writeHead(200, {'Content-Length': size,'Content-Type':'audio/mpeg'});
createReadStream(audiofile).pipe(res);
}
}).listen(3000);
我缺少什么,标题顺序是否错误,或者如何保持范围值?有人告诉我这将是代码重写,因为我认为处理视频是一回事,而音频是另一回事。