javascript - 在使用 JavaScript/HTML5 保存/上传之前在浏览器/客户端调整视频大小

标签 javascript html html5-video webassembly video-conversion

我正在寻找一种方法/最佳实践来调整大小,并可能在保存到文件系统之前在所有实际浏览器中使用 Javascript、HTML5 或 Webassambly trim 视频。

在浏览器中操作视频的“最佳”方式是什么?我在寻找不同的可能性概念:

  • JS 框架
  • Webassembly 库
  • WebGL
  • RTP Stream 到本地 Websoket 并保存在 Storage 中
  • 使用像 getUserMedia() 这样的 WebAPI

目标是通过 IPFS 分散共享视频,因此无法在服务器端调整大小。 调整大小后可以保存结果。

作为流程示意图,它看起来像:

  1. 从文件系统中打开/选择一个视频 <input type='file' />
  2. 根据给定的属性调整视频大小并可能 trim 视频
  3. 可能临时保存在“localStorage”或通过 FilesystemAPI
  4. 做其他工作,比如出版等。

我的实际想法是将视频流式传输到文档本身并捕获流。但我不确定是否有更快速有效的方法来完成这项工作。也没有必要在调整大小时播放视频。

希望你能帮我找到一个好的解决方案,并告诉我你的经验。

最佳答案

唯一合理的方法是将视频帧绘制到 Canvas 上(不需要 WebGL,只需 .drawImage()),然后使用 CanvasCaptureMediaStream 并使用媒体记录器 API。

虽然这很奇怪...不能保证正确的帧时序,大多数浏览器在选项卡未激活时都有错误,等等。

另一种方法是为 JavaScript 构建 FFmpeg,它最终变得庞大而缓慢。

如果可能的话,你最好做一个浏览器扩展来处理这个问题,直到 Web Codecs API 实现。

关于javascript - 在使用 JavaScript/HTML5 保存/上传之前在浏览器/客户端调整视频大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59556278/

相关文章:

javascript、循环引用和内存泄漏

javascript - 进入循环时解析 Int 不执行

javascript - 如何在canvas html5中使用图像填充样式

底部有单个单元格的 HTML 表格

javascript - 无法从 <content> 元素调用 View 模型中的函数

javascript - 你如何判断 HTML5 视频是实时流还是来自 Javascript 的视频?

javascript - React.js 和 HTML5 电子邮件验证

javascript - 为什么 jquery .text() 总是返回一个空字符串?

css - 从 html5 视频中删除黑色背景。出现一秒

android - 在 stagewebview 中发布阅读视频(Adobe AIR for Android)