在javascript中修剪视频Blob(webm)的开头

时间:2017-07-28 22:51:01

标签: javascript webm

我在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的开头修剪?

2 个答案:

答案 0 :(得分:0)

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

您可以通过丢弃blob块来修剪末尾来简化此操作,但是正如@Nuthinking所说,您会失去精度(尽管视频播放器的精度也不是100%,我相信firefox的精度为2ms )。

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

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

答案 1 :(得分:0)

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

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