Javascript 如何修复';加载资源失败:操作无法';不可能完成。协议错误“;在iOS 12视频中?
我正在开发一个视频流组件,除iOS 12外,所有平台上的视频都正常工作。该视频适用于以前的iOS版本(10.3和11.0)。当我检查网络请求时,我得到以下信息。我试过查看iOS 12中与视频流相关的更改,但找不到任何具体内容。任何帮助都将不胜感激!我还附上了下面流端点的代码。谢谢Javascript 如何修复';加载资源失败:操作无法';不可能完成。协议错误“;在iOS 12视频中?,javascript,ios,node.js,html,video,Javascript,Ios,Node.js,Html,Video,我正在开发一个视频流组件,除iOS 12外,所有平台上的视频都正常工作。该视频适用于以前的iOS版本(10.3和11.0)。当我检查网络请求时,我得到以下信息。我试过查看iOS 12中与视频流相关的更改,但找不到任何具体内容。任何帮助都将不胜感激!我还附上了下面流端点的代码。谢谢 exports.DECRYPT = async function(req, res, { content_id }) { let result = await FileFactory.Decrypt({
exports.DECRYPT = async function(req, res, {
content_id
}) {
let result = await FileFactory.Decrypt({
content_id
});
if (result.content_type.includes('video')) {
let fileSize = result.original_size;
const range = req.headers.range;
const parts = range ? range.replace(/bytes=/, "").split("-") : undefined;
const start = parts ? parseInt(parts[0], 10) : undefined;
const end = parts && parts[1] ? parseInt(parts[1], 10) : fileSize - 1;
res.setHeader('Accept-Ranges', 'bytes');
res.setHeader('Cache-Control', 'no-cache');
res.setHeader('Content-Type', result.content_type);
res.setHeader('Content-Length', end - start + 1);
res.setHeader('Content-Range', `bytes ${start}-${end}/${fileSize}`);
res.setHeader('Connection', 'Keep-Alive');
res.setHeader('Content-Encoding', 'identity');
if (start === 0 && !(parts[1])) {
res.statusCode = 200;
} else {
res.statusCode = 206;
}
let stream = request({
url: result.url
}).pipe(result.decipher);
let pointer = 0;
stream.on('data', (chunk) => {
pointer += chunk.length;
if (pointer > start) {
res.write(chunk.slice(start - pointer, end + 1));
}
if (pointer > end) {
stream.destroy("Chunk loaded");
res.end();
}
});
stream.on('error', function(e) {
});
stream.on('end', () => {
res.end();
});
} else {
res.setHeader('Content-Type', result.content_type);
res.setHeader('Accept-Ranges', 'bytes');
res.statusCode = 200;
request(result.url).pipe(result.decipher).pipe(res);
}
};
似乎safari在HTTP/2方面存在一些问题。经过一些研究,我最终从nginx中删除了HTTP/2配置。有什么解决方案可以用来避免这个问题吗?