Создание клипа MP4 с Node js - PullRequest
0 голосов
/ 08 мая 2018

Могу ли я создать видеоклипы из видео mp4 с потоками узла js? Я уверен, что есть npms для этой задачи, но это то, что можно сделать только с потоками?

Когда я создаю сервер, я могу передать короткий клип с начала видео в поток HttpResponse и направить его в файл Stream с помощью следующего кода: ( Работает!)

const fs = require('fs');
const http= require('http');

http.createServer(async (req, res) => {

  // Creating clip from the beginning to 5% of the video
  var { size } = fs.statSync('./Fun.mp4');
  var start = 0
  var end = .05*size;

  var videoClip = fs.createReadStream('./Fun.mp4', { start, end })
  var fileCopy = fs.createWriteStream('./Fun-Copy.mp4')

  res.writeHead(200, {'Content-Type': 'video/mp4'})
  videoClip.pipe(res)
  videoClip.pipe(fileCopy)

}).listen(3000);

Однако, если я изменил начальную позицию на середину видео, это не сработает. Я не вижу клип в веб-браузере, и Qucktime не может воспроизвести созданную копию.

// Attempting to create a clip from 50% to 60% of the video
var { size } = fs.statSync('./Fun.mp4');
var start = 0.5*size;
var end = 0.6*size;

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

Обрабатывает ли узел js аудио таким же образом? Могу ли я создать аудиоклипы из файла большего размера с потоками узла js?

1 Ответ

0 голосов
/ 08 мая 2018

Не требуется определенного количества байтов. MP4 использует индексную структуру для организации файлов. Если вы вообще измените файл, индекс (называемый moov box) необходимо переписать полностью.

...