提问:使用koa写了一个视频流播放接口,这个接口在pc端浏览器可以播放,但在安卓手机确无法播放,请问这个问题如何解决?
以下是服务端的接口代码,这段代码是否有问题?
let KoaRouter = require('@koa/router');
let { resolve } = require('path');
let fs = require('fs');
// 访问视频
router.get('/serverVideo', async (ctx) => {
let { fileName } = ctx.request.query;
let realFilePath = resolve(__dirname, `../static/videos/${fileName}`);
let { range } = ctx.request.headers;
let fileSize = fs.statSync(realFilePath).size;
ctx.response.set({
'Content-Type': 'video/mp4',
'Accept-Ranges': 'bytes',
});
if (range) {
let reg = /bytes=(\d*?)-(\d*?)/ig.exec(range);
let start = parseInt(reg[1]);
let end = parseInt(reg[2]);
end = end ? end : start + 1 * 1024 * 1024;
end = end <= fileSize - 1 ? end : fileSize - 1;
ctx.status = 206;
ctx.response.set({
'Content-Range': `bytes ${start}-${end}/${fileSize}`,
'Content-Length': end - start + 1
});
let rs = fs.createReadStream(realFilePath, { start, end });
ctx.body = rs;
} else {
ctx.response.set({
'Content-Length': fileSize
});
let rs = fs.createReadStream(realFilePath, { start: 0, end: fileSize - 1 });
ctx.body = rs;
}
});
在pc端谷歌浏览器能播放。
在安卓手机浏览器确无法播放。