как сделать видеоплеер с загруженным файлом в сети (multer, express) - PullRequest
0 голосов
/ 28 мая 2020

Я попытался создать веб-приложение, которое может загружать видеофайл и воспроизводить его в браузере. Я использовал express и multer.

- route

var storage = multer.memoryStorage({
    destination: function (req, file, cb) {
      cb(null, '')
    },
});
var upload = multer({ 
    storage: storage
});

//get video file from html input and pass to route
router.post('/', upload.single('video'), videoControl.uploadVideo_post);

- contorller

exports.uploadVideo_post = function(req, res, next) {

var data = JSON.stringify(req.file);

res.render('video', {data:data}); }

Теперь я могу передавать видеоданные как буфер (байт массив). Но я не знаю, как загрузить это на html

Также ... Было бы здорово, если бы вы могли сообщить мне, как объединить приведенный ниже код с этой структурой express.

const respondWithVideo = async (req, res) => {
  const { size } = await fileInfo(fileName);
  await console.log(fileInfo(fileName));
  const range = req.headers.range;
  if (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-Length': (end-start) + 1,
       'Content-Type': 'video/mp4'
    })
    createReadStream(fileName, { start, end }).pipe(res);
  } else {
    res.writeHead(200, {
      'Content-Length': size,
      'Content-Type': 'video/mp4'
    });
    createReadStream(fileName).pipe(res);
  }
}
...