我在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的开头修剪?
答案 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中录制。