Как передать видео файл в браузер, используя Express? - PullRequest
0 голосов
/ 25 февраля 2020

Мне нужно передать видеофайл с другого URL через мой сервер и в браузер пользователя. Я видел этот код, но он написан на PHP:

$fp = fopen('http://example.com/video.mp4', "rb");
while (!feof($fp)) {
    echo fread($fp, 1024 * 1024 * 2);
    flush();
    ob_flush();
}
fclose($fp);

Используя узел, я достиг чего-то вроде этого:

app.get('/proxy', async (req, res) => {
let _headers = {};
if (req.headers['range']) {
    headers['Range'] = req.headers['range'];
}
const response = await axios.get('http://example.com/video.mp4', {
            responseType: 'stream',
            headers: _headers
        });

const stream = response.data;

stream.on('data', chunk => {
    res.status(response.status).write(chunk);
});

stream.on('end', () => {
    res.end();
});

res.on('close', () => {
    stream.destroy();
});
});

Есть ли лучший способ сделать это? Прямо сейчас я думаю, что файл полностью загружается на сервер, даже если пользователь закрывает свой браузер.

Пользователь, который загружает видео в браузер и изменяет временную шкалу видео, снова запускает ax ios .get и другой поток создано. Я не думаю, что это эффективно, но я не уверен.

Кроме того, я хотел бы ограничить количество отправляемых / скачиваемых байтов, как в PHP коде, он читает 2 МБ на чтение только.

По сути, мой вопрос заключается в том, какой самый эффективный способ передачи видео через прокси через мой сервер из другого источника пользователю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...