vue2录制桌面视频音频

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;
            },

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值