Как исправить 'Не удалось загрузить ресурс: операция не может быть завершена.Ошибка протокола "в iOS 12 видео? - PullRequest
0 голосов
/ 25 марта 2019

Я работаю над компонентом потокового видео, и видео, кажется, работает нормально на всех платформах, кроме iOS 12. Видео работает для предыдущих версий iOS (10.3 и 11.0).Когда я проверяю сетевые запросы, я получаю следующее error .Я пытался просмотреть изменения, внесенные в iOS 12, связанные с потоковым видео, но не смог найти ничего конкретного.Любая помощь будет оценена!Я также прикрепил код для конечной точки потока ниже.Спасибо!

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);
    }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...