87,907
社区成员
发帖
与我相关
我的任务
分享
最后楼主使用的什么方案呢
const mediaStream = canvas.captureStream();
const options = {
mimeType: 'video/webm;codecs=vp9',
videoBitsPerSecond: 3000000,
};
const mediaRecord = new MediaRecorder(mediaStream, options);
3、挂接ondataavailable、stop事件:mediaRecord.ondataavailable = this.onDataAvailable;mediaRecord.onstop = this.onStop;
4、启动录制:mediaRecord.start(100); // 100毫秒触发一次ondataavailable事件
5、在ondataavailable事件中缓存视频数据:this.chunks.push(e.data);
6、录制结束后,将缓存的视频转成Blob:
const videoBlob = new Blob(this.chunks, { type: 'video/webm' });
const videoUrl = window.URL.createObjectURL(videoBlob);
this.download(owner.title, videoUrl);
private download = (name: string, url: string) => {
const a = document.createElement('a');
a.style.display = 'none';
a.href = url;
a.download = `${ name }.webm`;
document.body.appendChild(a);
a.click();
setTimeout(() => {
document.body.removeChild(a);
window.URL.revokeObjectURL(url);
}, 100);
};