【问题标题】:Trim the beginning of a video Blob (webm) in javascript在 javascript 中修剪视频 Blob (webm) 的开头
【发布时间】:2018-01-05 02:37:30
【问题描述】:

我有一个 Javascript 中的视频 Blob 数组;数组被分割成 1 秒的间隔。我想从视频的开头和结尾剪掉。

我发现这篇文章 (how-to-edit-trim-a-video-in-the-browser) 描述了如何修剪我的 blob,但它只适用于视频的结尾。

我怀疑删除 blob 的开头会删除标头信息并使 webm 无效。

这可行:
// remove 2 seconds from the end of the video const trimmedVideo = blobArray.slice(0, blobArray.length - 2);

这不起作用:
// remove 1 second from the start of the video const trimmedVideo = blobArray.slice(1, blobArray.length);

如何从视频 blob 的开头修剪?

【问题讨论】:

  • 如果有一个可以精确修剪的解决方案也很好。即使将块大小设置为 1 秒也不能保证它们会完全一样。
  • @jj。你能解决这个问题吗?
  • 嗨@rbansal - 这是一个(javascript)chromeos应用程序,所以我能够通过将ffmpeg合并到应用程序构建中来解决它。现在是很多年前的事了,所以也许存在一个当时没有的纯 js 解决方案?

标签: javascript webm


【解决方案1】:

一个 hacky 和次优的解决方案,您可以将您的 blob 设置为视频元素的来源,然后寻找您想要开始修剪的时间戳(甚至可以使用 #t=[starttime][,endtime] 语法通过 uri 执行此操作),将该视频元素流式传输到新的记录器,然后播放到您要修剪的时间戳。

您可以通过丢弃 blob 块来修剪末端来简化这一点,但正如@Nuthinking 所说,您会失去精度(即使视频播放器也不会 100% 精确,我相信 Firefox 以 2ms 精度工作)。

虽然我相信这会起作用,并且视频不需要在 DOM 中,但您会以 1:1 的时间进行编码。

我不知道任何其他仅涉及 HTML5 的答案。这个问题很棘手,因为MediaRecorder API 明确表示生成的 blob 块不需要自己播放。

【讨论】:

    【解决方案2】:

    原始解决方案使用的mediarecorder 对象有一个名为requestData() 的方法,它显然在被调用后会继续记录在新的Blob 中。

    也许您可以在找到已编辑素材的起点后使用它继续在新的 Blob 中录制。

    【讨论】:

      猜你喜欢
      • 2021-02-10
      • 2014-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-17
      • 1970-01-01
      • 1970-01-01
      • 2017-03-20
      相关资源
      最近更新 更多