做网站前台开发学习,论坛类网站设计,外链代发平台,网站图片如何做缓存借助navigator#xff0c;需要注意的是navigator.mediaDevices.getDisplayMedia需要在https使用#xff0c;若部署环境为http,则会导致navigator.mediaDevices.getDisplayMedia为undefined 参数中的name为输出视频的文件名 time为录制的时长#xff0c;若时长为一秒则time值…借助navigator需要注意的是navigator.mediaDevices.getDisplayMedia需要在https使用若部署环境为http,则会导致navigator.mediaDevices.getDisplayMedia为undefined 参数中的name为输出视频的文件名 time为录制的时长若时长为一秒则time值为1000
async startScreenRecording (name, time) {// 根据漫游时长 结束录制const timer setTimeout(() {this.stopRecording()clearTimeout(timer)}, time)const self thisif (navigator.mediaDevices navigator.mediaDevices.getDisplayMedia) {await navigator.mediaDevices.getDisplayMedia({ video: true }).then((screenStream) {self.screenStream screenStreamconst canvasStream document.getElementsByTagName(canvas)[0].captureStream()self.combinedStream new MediaStream([...canvasStream.getVideoTracks(), ...screenStream.getAudioTracks()])self.mediaRecorder new MediaRecorder(self.combinedStream, { mimeType: video/webm })//// 获取录制的媒体资源const recordedChunks []self.mediaRecorder.ondataavailable (event) {if (event.data.size 0) {recordedChunks.push(event.data)}}self.mediaRecorder.onstop () {const videoBlob new Blob(recordedChunks, { type: video/mp4 })// video/mp4 video/webm 下载mp4类型const videoUrl URL.createObjectURL(videoBlob)// console.log(测试videoUrl, videoUrl)// self.$refs.video.src videoUrlconst a document.createElement(a)a.href videoUrla.download namea.click()a.remove()}self.mediaRecorder.start()self.recording true}).catch(err {this.$message({message: 无法访问屏幕内容,type: warning})console.error(无法访问屏幕内容, err)})} else {this.$message({message: 浏览器不支持捕获屏幕内容,type: warning})// this.imgToVideo()}// getDisplayMedia 获取屏幕媒体流},stopRecording () {this.mediaRecorder.stop()this.recording falsethis.screenStream.getTracks().forEach((track) track.stop())},在http中可使用的录屏
canvasToVideo (name, time) {const timer setTimeout(() {this.mediaRecorder1.stop()this.recording falseclearTimeout(timer)}, time)try {// 使用 html2canvas 将页面转换为画布// const stream html2canvas(document.body).then((canvas) {// canvas.id myCanvas // 为画布设置一个 ID以便稍后在 MediaRecorder API 中使用// document.body.appendChild(canvas) // 将画布添加到页面中// return canvas.captureStream() // 捕获画布的媒体内容// })const stream document.getElementsByTagName(canvas)[0].captureStream()this.recordedBlobs [] // 清空已录制的数据this.mediaRecorder1 new MediaRecorder(stream) // 创建 MediaRecorder 实例this.mediaRecorder1.ondataavailable (event) {if (event.data event.data.size 0) {this.recordedBlobs.push(event.data) // 将录制的数据添加到数组中}}this.mediaRecorder1.start() // 开始录制this.recording true// 当录制停止时生成并下载录屏文件this.mediaRecorder1.onstop () {//创建一个新的 Blob 对象包含所有录制的数据const videoBlob new Blob(this.recordedBlobs, { type: video/mp4 })// video/mp4 video/webm 下载mp4类型const videoUrl URL.createObjectURL(videoBlob)const a document.createElement(a)a.href videoUrla.download namea.click()a.remove()}} catch (error) {console.error(Error:, error) // 如果发生错误打印错误信息到控制台}},