async startRecording() {
try {
this.recording = true;
// 获取屏幕视频流
const videoStream = await navigator.mediaDevices.getDisplayMedia({
video: true
});
// 获取音频流
const audioStreamPromise = navigator.mediaDevices.getUserMedia({
audio: true
});
// 当音频流获取成功后,合并视频和音频流
audioStreamPromise.then(audioStream => {
this.stream = new MediaStream([...videoStream.getTracks(), ...audioStream
.getTracks()]);
this.recorder = new MediaRecorder(this.stream, {
mimeType: 'video/webm;codecs=vp9,opus'
});
const recordedChunks = [];
this.recorder.ondataavailable = e => recordedChunks.push(e.data);
this.recorder.onstop = async () => {
const completeBlob = new Blob(recordedChunks, {
type: 'video/webm'
});
await this.saveToLocal(completeBlob);
};
this.recorder.start();
}).catch(error => {
console.error('获取音频流失败', error);
// 处理错误,可能需要停止视频流或通知用户
});
} catch (error) {
console.error('录制开始时出错', error);
this.recording = false;
}
},
async stopRecording() {
if (this.recorder && this.recorder.state === 'recording') {
this.recorder.stop();
this.recording = false;
}
},
async saveToLocal(blob) {
this.downloadUrl = URL.createObjectURL(blob);
let fileName =
`${this.params.name}${this.selectedCaseCategory.name}案第${this.params.num}询问笔录${this.$use.dateTimeInfoToo(new Date().getTime())}.webm`;
console.log("========》", fileName)
const link = document.createElement('a');
link.href = this.downloadUrl;
link.download = fileName;
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
URL.revokeObjectURL(this.downloadUrl);
this.downloadUrl = null;
},
vue2录制桌面视频音频
于 2024-06-19 10:22:34 首次发布