我正在编写一个在firefox中处理相机流视频的软件。
我正在生成一个带有MediaRecorder API记录的视频类型的Blob。
我正在做什么来保存blob作为本地存储中的视频使用FileSaver库:
FileSaver.saveAs(BlobVideo,"video.mp4");
看起来视频没有任何最大持续时间,因此我无法在我在VLC中新生成的视频中的时间轴中导航。
有没有办法在blob视频上设置持续时间元数据?
这个问题几乎与this other one重复。 (但由于有奖金,我们不能投票结束)
这是一个已知的chrome bug。
您可以通过加载视频,将currentTime
设置为某个额外值,然后读取持续时间,从浏览器本身获得此持续时间,但是您不会将其附加到文件本身,至少在错误修复之前不会。
直到Kaiido提到的铬虫得到修复,这对我有用:
while(video.duration === Infinity) {
await new Promise(r => setTimeout(r, 1000));
video.currentTime = 10000000*Math.random();
}
let duration = video.duration;
听一下“durationchange”事件可能是一个更好的主意,而不是任意1秒的暂停。