首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用RecordRTC录制screen+audio+microphone

如何用RecordRTC录制screen+audio+microphone
EN

Stack Overflow用户
提问于 2021-05-15 19:30:15
回答 1查看 385关注 1票数 4

我在一个项目上工作,我需要用户能够记录屏幕,音频和麦克风。当时我只能让它识别屏幕和音频。

首先,我捕获屏幕和其中的音频,并将其保存到一个变量中。然后我捕获这个变量来显示视频组件。

代码语言:javascript
复制
invokeGetDisplayMedia(success, error) {
        let displaymediastreamconstraints = {
          video: {
            displaySurface: 'monitor', // monitor, window, application, browser
            logicalSurface: true,
            cursor: 'always' // never, always, motion
          }
        };
        // above constraints are NOT supported YET
        // that's why overridnig them
        displaymediastreamconstraints = {
          video: true,
          audio:true
        };
        if (navigator.mediaDevices.getDisplayMedia) {
          navigator.mediaDevices.getDisplayMedia(displaymediastreamconstraints).then(success).catch(error);
        }
        else {
          navigator.getDisplayMedia(displaymediastreamconstraints).then(success).catch(error);
        }
      },
      captureScreen(callback) {
        this.invokeGetDisplayMedia((screen) => {
          this.addStreamStopListener(screen, () => {
            //
          });
          callback(screen);
        }, function (error) {
          console.error(error);
          alert('Unable to capture your screen. Please check console logs.\n' + error);
        });
      },
       startRecording() {
     
    this.captureScreen(screen=>{
        this.audioStream = audio
        console.log(audio)
      this.video=this.$refs.videoScreen
      this.video.srcObject = screen;
      this.recorder = RecordRTC(screen, {
        type: 'video'
      });
      this.recorder.startRecording();
      // release screen on stopRecording
      this.recorder.screen = screen;
      this.videoStart = true;
    });
     
  },

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-24 10:11:54

我通过增加一个从麦克风捕获音频的功能修复了这个问题

代码语言:javascript
复制
captureAudio(success, error) {
           let displayuserstreamconstraints = {
          audio:true
        };
        if (navigator.mediaDevices.getUserMedia) {
          navigator.mediaDevices.getUserMedia(displayuserstreamconstraints).then(success).catch(error);
         
        }
        else {
          navigator.getUserMedia(displayuserstreamconstraints).then(success).catch(error);
       
        }
        },

并在startRecording方法中添加一个函数

代码语言:javascript
复制
startRecording() {
        this.captureAudio((audio) => {
        this.captureScreen(screen=>{
          this.video=this.$refs.videoScreen
          this.audioStream=audio
          this.video.srcObject = screen;
          this.recorder = RecordRTC(screen, {
            type: 'video'
          });
          this.recorder.startRecording();
          // release screen on stopRecording
          this.recorder.screen = screen;
          this.videoStart = true;
        });
        })
      },

并在stopRecording方法中添加一个函数

代码语言:javascript
复制
   stopRecordingCallback() {
    this.video.src = this.video.srcObject = null;
    this.video=this.$refs.videoScreen
    this.video.src = URL.createObjectURL(this.recorder.getBlob());
    this.recorder.screen.stop();
    this.audioStream.stop();
    this.recorder.destroy();
    this.recorder = null;
    
  },
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67546247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档