完整代码如下:

button使用了element-ui;

<template>
<div class="record-page"><div style="margin-bottom: 15px;"><el-button @click="startRecording" :disabled="videoStart" size="small">start recording</el-button><el-button @click="stopRecording" :disabled="!videoStart" size="small" id="btn-stop-recording">stop recording</el-button></div><video controls autoplay playsinline ref="video" width="400" height="300"></video></div></template>

<script>import RecordRTC from 'recordrtc';export default {name: "screenRecord",data() {return {video: null,videoStart: false,recorder: null,}},created() {if (!navigator.getDisplayMedia && !navigator.mediaDevices.getDisplayMedia) {let error = 'Your browser does NOT support the getDisplayMedia API.';throw new Error(error);}},mounted() {this.video = document.querySelector('video');},methods: {invokeGetDisplayMedia(success, error) {let displaymediastreamconstraints = {video: {displaySurface: 'monitor', // monitor, window, application, browserlogicalSurface: true,cursor: 'always' // never, always, motion}};// above constraints are NOT supported YET// that's why overridnig themdisplaymediastreamconstraints = {video: 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);});},addStreamStopListener(stream, callback) {stream.addEventListener('ended', function () {callback();callback = function () { };}, false);stream.addEventListener('inactive', function () {callback();callback = function () { };}, false);stream.getTracks().forEach(function (track) {track.addEventListener('ended', function () {callback();callback = function () { };}, false);track.addEventListener('inactive', function () {callback();callback = function () { };}, false);});},startRecording() {this.captureScreen(screen=>{this.video.srcObject = screen;this.recorder = RecordRTC(screen, {type: 'video'});this.recorder.startRecording();// release screen on stopRecordingthis.recorder.screen = screen;this.videoStart = true;});},stopRecordingCallback() {this.video.src = this.video.srcObject = null;this.video.src = URL.createObjectURL(this.recorder.getBlob());this.recorder.screen.stop();this.recorder.destroy();this.recorder = null;this.videoStart = false;},stopRecording() {this.recorder.stopRecording(this.stopRecordingCallback);}},}
</script>
<style scoped></style>

【RecordRTC Web端屏幕录制(VUE)方法】相关推荐

  1. iOS端屏幕录制ReplayKit

    ReplayKit是苹果在iOS9上面提供的一个框架. 库的特性说明 目前这个库只支持真机允许,不支持模拟器. 系统版本必须高于iOS9. 不支持录avplayer播放的视频,这个可能是为了保护视频的 ...

  2. bim 模型web页面展示_一种基于BIM模型的Web端轻量化展示方法与流程

    本发明涉及基坑结构模型技术领域,尤其涉及一种基于bim模型的web端轻量化展示方法. 背景技术: 建筑信息模型(buildinginformationmodeling,bim)技术在土木工程领域快速推 ...

  3. app内录屏开发 ios_iOS端屏幕录制Replaykit项目实践

    上一篇阐述了调研结果,而我们常用的应用场景就是录制屏幕内容,然后将内容分享给他人(直播或录播).流程如下: 1.被录制端host app需引入 ReplayKit,以便可以使用其api选择一个app的 ...

  4. python web Android屏幕录制

    执行测试用例时,自动触发屏幕录制,单用例单录制 录制方式采用多线程,主线程开始,另开一个线程,跑录制脚本 web端 录制检测的是电脑页面,录制电脑页面展示的数据. from datetime impo ...

  5. iphone屏幕录制_无需第三方APP,苹果iPhone手机屏幕录制的方法

    有些小伙伴在使用iPhone手机玩游戏的时候,很想把自己玩的游戏录个高清视频,再添加自己的原声解说,做个教程,分享到网上或发送给朋友,或者看到喜欢的直播需要录制下来,以后欣赏或分享给他人,但不知道怎么 ...

  6. 仿iphone顶部状态栏_无需第三方APP,苹果iPhone手机屏幕录制的方法

    有些小伙伴在使用iPhone手机玩游戏的时候,很想把自己玩的游戏录个高清视频,再添加自己的原声解说,做个教程,分享到网上或发送给朋友,或者看到喜欢的直播需要录制下来,以后欣赏或分享给他人,但不知道怎么 ...

  7. iOS端屏幕录制开发指南

    一. 概述 实现直播过程中共享屏幕分为两个步骤:屏幕数据采集和流媒体数据推送.前对于 iOS 来说,屏幕采集需要系统的权限,受制于iOS系统的限制,第三方 app 并没有直接录制屏幕的权限,必须通过系 ...

  8. WEB端自适应尺寸的方法

    移动端页面开发通常用的是rem单位来做不同分辨率屏幕的自适应,那我们怎么从UI设计稿的PX像素单位自动转换到rem呢? 我们写了一个方法来解决,只要输入设计稿的元素尺寸,就可以自动转换过来. //宽度 ...

  9. 免费好用的PC端屏幕录制软件

    链接:https://pan.baidu.com/s/125bcbo_795zoRnOVoTxm2g  提取码:335f

最新文章

  1. Linux服务器下的HTTP抓包分析
  2. spring 的jar包解释
  3. Spring Integration Java DSL示例
  4. [RN] React Native 自定义导航栏随滚动渐变
  5. C++ C# 中作用域限定符
  6. github.com/oschwald/maxminddb-golang 安装报错
  7. linux复制内容的快捷键,Linux复制粘贴快捷键
  8. Leetcode每日一题:463.island-perimeter(岛屿的周长)
  9. 三大运营商的物联网卡如何收费
  10. EnterpriseDb公司的Postgres Enterprise Manager 安装图解
  11. Canu FAQ常见问题
  12. 万能地图下载器X3版本终止升级维护
  13. Linux的mysql主从配置
  14. Mac解决Error: No such file or directory @ rb_sysopen报错问题
  15. 路由器和三层交换机区别
  16. 8086CPU寄存器全称
  17. 【全栈开发实战小草看书之Web端(一)开发环境】
  18. 大白话5分钟带你走进人工智能-第33节神经网络和神经元概念(1)
  19. MOOC《Python语言程序设计》(第15次)Python计算生态概览(第九周)
  20. 上海财经大学计算机课程表,WakeUp课程表

热门文章

  1. 采集数据发布到易优CMS的指定栏目
  2. python提取视频字幕_荐利用Python提取视频中的字幕(文字识别)
  3. 【Unity】虚拟现实 VRTK插件使用教程(六)VR UI (UGUI和VRTK的事件处理机制)
  4. ReduceLROnPlateau pytorch动态修改学习率
  5. 计算H时M分S秒以后是_地暖循环水泵选型方法和计算
  6. 压滤机入料泵的安装以及试运行要领
  7. 【githubgirl】GitHub 上一款可在终端运行的色彩查询工具,提供了不少简洁优雅的色系供选择
  8. 【小程序】快递100智能获取物流公司和物流信息
  9. 梦龙_C语言作业11
  10. MEF在.net中实现插件功能