使用 Node js 创建 MP4 剪辑

Creating A MP4 clip with Node js

我可以使用节点 js 流从 mp4 视频创建视频剪辑吗?我确信这个任务有 npms,但这是可以只用流来完成的事情吗?

当我创建服务器时,我可以将视频开头的简短剪辑传输到 HttpResponse 流 并将其传输到 file 流 使用以下代码:(有效!)

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 文件的开头复制特定数量的字节?

node js 处理音频的方式相同吗?我可以使用节点 js 流从更大的文件构建音频剪辑吗?

所需的字节数不详。 MP4 使用类似索引的结构来组织文件。如果您完全修改文件,则需要整个重写索引(称为 moov 框)。