【RecordRTC Web端屏幕录制(VUE)方法】
完整代码如下:
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)方法】相关推荐
- iOS端屏幕录制ReplayKit
ReplayKit是苹果在iOS9上面提供的一个框架. 库的特性说明 目前这个库只支持真机允许,不支持模拟器. 系统版本必须高于iOS9. 不支持录avplayer播放的视频,这个可能是为了保护视频的 ...
- bim 模型web页面展示_一种基于BIM模型的Web端轻量化展示方法与流程
本发明涉及基坑结构模型技术领域,尤其涉及一种基于bim模型的web端轻量化展示方法. 背景技术: 建筑信息模型(buildinginformationmodeling,bim)技术在土木工程领域快速推 ...
- app内录屏开发 ios_iOS端屏幕录制Replaykit项目实践
上一篇阐述了调研结果,而我们常用的应用场景就是录制屏幕内容,然后将内容分享给他人(直播或录播).流程如下: 1.被录制端host app需引入 ReplayKit,以便可以使用其api选择一个app的 ...
- python web Android屏幕录制
执行测试用例时,自动触发屏幕录制,单用例单录制 录制方式采用多线程,主线程开始,另开一个线程,跑录制脚本 web端 录制检测的是电脑页面,录制电脑页面展示的数据. from datetime impo ...
- iphone屏幕录制_无需第三方APP,苹果iPhone手机屏幕录制的方法
有些小伙伴在使用iPhone手机玩游戏的时候,很想把自己玩的游戏录个高清视频,再添加自己的原声解说,做个教程,分享到网上或发送给朋友,或者看到喜欢的直播需要录制下来,以后欣赏或分享给他人,但不知道怎么 ...
- 仿iphone顶部状态栏_无需第三方APP,苹果iPhone手机屏幕录制的方法
有些小伙伴在使用iPhone手机玩游戏的时候,很想把自己玩的游戏录个高清视频,再添加自己的原声解说,做个教程,分享到网上或发送给朋友,或者看到喜欢的直播需要录制下来,以后欣赏或分享给他人,但不知道怎么 ...
- iOS端屏幕录制开发指南
一. 概述 实现直播过程中共享屏幕分为两个步骤:屏幕数据采集和流媒体数据推送.前对于 iOS 来说,屏幕采集需要系统的权限,受制于iOS系统的限制,第三方 app 并没有直接录制屏幕的权限,必须通过系 ...
- WEB端自适应尺寸的方法
移动端页面开发通常用的是rem单位来做不同分辨率屏幕的自适应,那我们怎么从UI设计稿的PX像素单位自动转换到rem呢? 我们写了一个方法来解决,只要输入设计稿的元素尺寸,就可以自动转换过来. //宽度 ...
- 免费好用的PC端屏幕录制软件
链接:https://pan.baidu.com/s/125bcbo_795zoRnOVoTxm2g 提取码:335f
最新文章
- Linux服务器下的HTTP抓包分析
- spring 的jar包解释
- Spring Integration Java DSL示例
- [RN] React Native 自定义导航栏随滚动渐变
- C++ C# 中作用域限定符
- github.com/oschwald/maxminddb-golang 安装报错
- linux复制内容的快捷键,Linux复制粘贴快捷键
- Leetcode每日一题:463.island-perimeter(岛屿的周长)
- 三大运营商的物联网卡如何收费
- EnterpriseDb公司的Postgres Enterprise Manager 安装图解
- Canu FAQ常见问题
- 万能地图下载器X3版本终止升级维护
- Linux的mysql主从配置
- Mac解决Error: No such file or directory @ rb_sysopen报错问题
- 路由器和三层交换机区别
- 8086CPU寄存器全称
- 【全栈开发实战小草看书之Web端(一)开发环境】
- 大白话5分钟带你走进人工智能-第33节神经网络和神经元概念(1)
- MOOC《Python语言程序设计》(第15次)Python计算生态概览(第九周)
- 上海财经大学计算机课程表,WakeUp课程表
热门文章
- 采集数据发布到易优CMS的指定栏目
- python提取视频字幕_荐利用Python提取视频中的字幕(文字识别)
- 【Unity】虚拟现实 VRTK插件使用教程(六)VR UI (UGUI和VRTK的事件处理机制)
- ReduceLROnPlateau pytorch动态修改学习率
- 计算H时M分S秒以后是_地暖循环水泵选型方法和计算
- 压滤机入料泵的安装以及试运行要领
- 【githubgirl】GitHub 上一款可在终端运行的色彩查询工具,提供了不少简洁优雅的色系供选择
- 【小程序】快递100智能获取物流公司和物流信息
- 梦龙_C语言作业11
- MEF在.net中实现插件功能