vue项目中的录屏插件recordrtc且带声音

vue项目中的录屏插件recordrtc且带声音

一、效果图

在这里插入图片描述在这里插入图片描述
其中窗口录屏不带声音,chrome标签和整个屏幕的录屏是带声音的

二、安装插件

npm i recordrtc

三、直接上代码

<template>
    <div class="record-page">
        <div style="margin-bottom: 15px">
            <el-button @click="startRecording" :disabled="videoStart" size="small">
                开始录制
            </el-button>
            <el-button
                @click="stopRecording"
                :disabled="!videoStart"
                size="small"
                id="btn-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, 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)
                }
            )
        },
        addStreamStopListener(stream, callback) {
            stream.addEventListener(
                'ended',
                function () {
                    callback()
                    callback = function () {}
                },
                false
            )
            stream.addEventListener(
                'inactive',
                function () {
                    callback()
                    callback = function () {}
                },
                false
            )
            stream.getTracks().forEach(track => {
                track.addEventListener(
                    'ended',
                    () => {
                        this.stopRecording()
                        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',
                    mimeType: 'video/webm',
                })
                this.recorder.startRecording()
                // release screen on stopRecording
                this.recorder.screen = screen
                this.videoStart = true
            })
        },
        stopRecordingCallback() {
            this.video.src = this.video.srcObject = null
            this.video.src = URL.createObjectURL(this.recorder.getBlob())
            // 如果需要下载录屏文件可加上下面代码
            let url = URL.createObjectURL(this.recorder.getBlob())
            const a = document.createElement('a')
            document.body.appendChild(a)
            a.style.display = 'none'
            a.href = url
            a.download = new Date() + '.mp4'
            a.click()
            window.URL.revokeObjectURL(url)
            //以上是下载所需代码
            this.recorder.screen.stop()
            this.recorder.destroy()
            this.recorder = null
            this.videoStart = false
        },
        stopRecording() {
            this.recorder.stopRecording(this.stopRecordingCallback)
        },
    },
}
</script>

<style scoped></style>

链接: https://blog.csdn.net/weixin_64141611/article/details/123873781
链接: https://blog.csdn.net/it_xushixiong/article/details/131224532

  • 8
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在使用 Vue 项目使用 CodeHighlighter 件,需要进行如下步骤: 1. 安装 CodeHighlighter 件: 使用 npm 或 yarn 安装 CodeHighlighter 件,例如: npm install vue-code-highlight 2. 引入 CodeHighlighter: 在 main.js 引入 CodeHighlighter 件,例如: import VueCodeHighlight from 'vue-code-highlight' 3. 注册 CodeHighlighter: 在 main.js 注册 CodeHighlighter 件,例如: Vue.use(VueCodeHighlight) 4. 使用 CodeHighlighter 组件: 在需要使用高亮的页面使用 CodeHighlighter 组件,例如: ``` <template> <code-highlight :code="code" :language="language"></code-highlight> </template> <script> export default { data() { return { code: '<div>Hello, World!</div>', language: 'html' } } } </script> ``` 5. 引入样式: 引入 CodeHighlighter 件的样式文件, 例如: import 'vue-code-highlight/themes/prism-okaidia.css' 这样就可以在Vue项目使用CodeHighlighter件了。 ### 回答2: 在Vue项目使用CodeHighlighter件可以按照以下步骤进行: 1. 首先,确保你已经安装了Vue.js和CodeHighlighter件。可以使用npm或者yarn进行安装。在终端执行下面的命令来安装CodeHighlighter件: ``` npm install vue-code-highlighter ``` 或者 ``` yarn add vue-code-highlighter ``` 2. 安装完成后,在你的Vue项目的入口文件(通常是main.js)导入和使用CodeHighlighter件: ```javascript import Vue from 'vue'; import VueCodeHighlighter from 'vue-code-highlighter'; Vue.use(VueCodeHighlighter); ``` 这个步骤是将CodeHighlighter件注册为Vue的全局组件,使得我们可以在任何Vue组件使用它。 3. 现在你可以在你的Vue组件使用CodeHighlighter件了。在需要高亮代码的地方,使用`<vue-code-highlighter></vue-code-highlighter>`标签将要高亮的代码包裹起来,并且通过`lang`属性指定代码的语言类型。例如,如果你的代码是JavaScript的,你可以这样写: ```html <vue-code-highlighter lang="javascript"> // your code here </vue-code-highlighter> ``` 使用这种方式,你可以将JavaScript、HTML、CSS以及其他语言的代码在你的Vue组件进行高亮显示。 4. 最后,你可以根据需要修改CodeHighlighter的样式和配置。在你的Vue项目的样式文件进行修改,可以参考CodeHighlighter件的文档来进行配置,例如支持更多的语言类型、修改颜色样式等。 这样,你就可以在Vue项目使用CodeHighlighter件来高亮代码了。记得在代码修改后编译运行项目以查看效果。 ### 回答3: 要在Vue项目使用CodeHighlighter件,可以按照以下步骤进行: 1. 首先,需要在Vue项目安装CodeHighlighter件。可以通过npm或者yarn来安装,比如在终端运行以下命令:`npm install code-highlighter`。 2. 然后,需要在Vue组件引入CodeHighlighter件。可以在要使用CodeHighlighter的组件,使用import语句引入件,例如:`import CodeHighlighter from 'code-highlighter'`。 3. 接下来,可以在Vue组件的`mounted`或者`created`生命周期钩子函数初始化CodeHighlighter件。例如,在`mounted`钩子函数,可以使用如下代码初始化件:`CodeHighlighter.init()`。 4. 然后,需要在Vue组件使用CodeHighlighter来高亮显示代码。可以在需要高亮显示代码的地方,使用CodeHighlighter的`highlightBlock`方法来实现。例如,如果要高亮显示一个HTML代码块,可以使用如下代码:`CodeHighlighter.highlightBlock(document.getElementById('code-block'))`(其,`'code-block'`为对应HTML代码块的id)。 5. 最后,可以根据自己的需求定制CodeHighlighter件的样式。可以在Vue组件的样式表,根据自己的需求来修改件的样式。 总的来说,使用CodeHighlighter件在Vue项目的步骤包括:安装件、引入件、初始化件、使用件高亮显示代码,以及定制样式。根据以上步骤,即可在Vue项目成功使用CodeHighlighter件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值