vuePC 录制桌面 并下载到本地

页面代码

<button @click="startRecording">开始录制桌面</button>
<button @click="stopRecording" :disabled="!isRecording">结束录制</button>

js代码

// 录制桌面 保存到本地
methods:{
		   async startRecording() {
				try {
					// 请求访问桌面屏幕
					const displayStream = await navigator.mediaDevices.getDisplayMedia({
						video: true,
						audio: true
					});

					// 初始化MediaRecorder
					this.mediaRecorder = new MediaRecorder(displayStream, {
						mimeType: 'video/webm; codecs=vp8'
					});

					// 数据可读取时的回调
					this.mediaRecorder.ondataavailable = (event) => {
						if (event.data && event.data.size > 0) {
							this.recordedChunks.push(event.data);
						}
					};

					// 开始录制
					this.mediaRecorder.start();
					this.isRecording = true;
					console.log('开始录制...');
				} catch (error) {
					console.error('无法开始录制:', error);
				}
			},
			async stopRecording() {
				if (this.mediaRecorder && this.mediaRecorder.state === 'recording') {
					this.mediaRecorder.stop();
					this.isRecording = false;
					console.log('录制结束');

					// 将录制的数据块转换为Blob
					const recordedBlob = new Blob(this.recordedChunks, {
						type: 'video/mp4'
					});

					// 保存到本地
					this.saveAsFile(recordedBlob, 'recorded-desktop-video.mp4');
				}
			},
			saveAsFile(blob, fileName) {
				// 创建隐藏的下载链接
				const url = window.URL.createObjectURL(blob);
				const a = document.createElement('a');
				a.style.display = 'none';
				a.href = url;
				a.download = fileName;

				// 触发点击下载
				document.body.appendChild(a);
				a.click();

				// 清理
				setTimeout(() => {
					document.body.removeChild(a);
					window.URL.revokeObjectURL(url);
				}, 100);
			},
}

最近更新

  1. TCP协议是安全的吗?

    2024-06-12 17:26:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-12 17:26:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-12 17:26:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-12 17:26:02       18 阅读

热门阅读

  1. Redis:原理、概念、用法与实例解析

    2024-06-12 17:26:02       6 阅读
  2. 探索FPGA技术:零成本入门指南

    2024-06-12 17:26:02       6 阅读
  3. Android shell 常用 debug 命令

    2024-06-12 17:26:02       7 阅读
  4. Spring Boot 面试热点(一)

    2024-06-12 17:26:02       8 阅读
  5. 初识Docker

    2024-06-12 17:26:02       5 阅读
  6. 记录一个apisix修改后台接口超时时间的方法

    2024-06-12 17:26:02       6 阅读