搭建超级小班课网课系统

简介: 本场景介绍使用视频云技术搭建超级小班课网课系统。

搭建超级小班课网课系统


1. 获取音视频通信应用AppKey

1. 使用您自己的阿里云账号登录到音视频通信RTC控制台。

2. 在左侧单击应用管理。

3. 在应用管理页面就可以看到您的默认应用的AppID。

4. 在默认应用的右侧操作列单击查询AppKey。

5. 在查询Appkey提示弹框中单击确定。

6. 在查询成功的弹框中就可以看到AppKey。

说明: 请将查询到的AppId和AppKey复制保存下来,下面的步骤将会用到。

2. 创建资源

必读: 本场景为您提供了一台ECS服务器,场景中涉及的音视频通信服务请使用自己的阿里云账号操作,音视频通信服务默认的计费方式为按量付费,具体请参见计费详情。

  1. 在页面左侧,单击 云产品资源 下拉列表,查看本次实验所需资源。
  2. 单击屏幕右侧 创建资源 ,免费创建当前实验所需云产品资源。

说明:

资源创建过程需要1~3分钟。完成实验资源的创建后,您可以在 云产品资源 列表查看已创建的资源信息,例如:IP地址、子用户名称和子用户密码等。

3. 连接ECS服务器

成功创建资源后默认会打开Web Terminal操作服务器终端操作界面,您也可以点击右侧按钮,切换到Web Terminal操作界面。

4. 安装Node.js环境

安装Node.js环境

1.  执行以下命令下载Node.js二进制包。

wget https://nodejs.org/dist/v14.15.0/node-v14.15.0-linux-x64.tar.xz

2.  执行以下命令将Node.js二进制包解压到路径/usr/local。

tar xf node-v14.15.0-linux-x64.tar.xz -C /usr/local/ --no-same-owner

3.  执行以下命令将Node.js二进制文件所在路径加入到环境变量PATH中。

echo "export PATH=/usr/local/node-v14.15.0-linux-x64/bin:$PATH" >> /etc/profile

4.  执行以下命令使修改的环境变量立即生效。

source /etc/profile

5.  执行以下命令验证是否安装配置成功。

node -v

如果安装成功将会有类似如下显示。

5. 修改配置

修改配置

本场景中的ECS服务器/root路径中内置了超级小班课的项目源码和运行环境,在项目源码中填入自己的AppKey即可运行项目。

1.  执行以下命令使用Vim打开config.js文件。

cd superclass_web/ && vim src/core/data/config.js

2.  按下i键进入编辑模式,将appId和appKey修改为步骤二中查询到的AppId和AppKey。

3.  修改完成后按下Esc键退出编辑模式,然后输入以下指令并按下回车键退出Vim编辑器。

:wq

6. 运行Demo

运行Demo

1.  执行以下命令安装项目依赖。

npm install

2.  执行以下命令安装RTC SDK。

npm install aliyun-webrtc-sdk -S

3.  执行以下命令运行项目。

npm run serve

运行成功之后,默认会在浏览器打开项目主页。如果没有自动打开,请在浏览器地址栏输入https://[ipaddress]:888,ipaddress请参见步骤三。

7. Demo源码解析

Demo源码解析

项目结构如下所示:

├── dist                               #打包文件
├── public                             #静态资源
├── src                                #项目文件目录
│   ├── assets                         #静态资源    
│   ├── components                     #公共组件
│   ├── core                           #js文件
│   │   ├── data
│   │   │   ├── config.js              #相关配置参数
│   │   ├── util
│   │   │   ├── utils.js               #一些公共方法
│   │   ├── rtc-engine.js              #单例
│   │   ├── rtc-clinet.js              #RTC实例文件
│   ├── plugins
│   ├── router                         #路由
│   ├── views                          #页面
│   │   ├── login                      
│   │   │   ├── login.vue              #登录页面
│   │   ├── student                   
│   │   │   ├── student.vue            #学生页面
│   │   ├── assistant                  
│   │   │   ├── assistant.vue          #助教页面
│   │   ├── teacher                  
│   │   │   ├── teacher.vue            #教师页面
│   ├── vuex
│   ├── App.vue                        #根组件
│   ├── main.js                        #入口文件
├── vue.config.js                      #vue配置文件

下面列出了一些关键性功能代码。

1.  检查浏览器是否支持。

RtcEngine.instance.getDevices().then(re => {})

2.  获取设备信息。

RtcEngine.instance.getDevices().then(re => {})

3.  指定摄像头。

RtcEngine.instance.currentCamera(deviceId)

4.  指定麦克风。

RtcEngine.instance.currentAudioCapture(deviceId)

5.  开启预览。

/**
 * 预览
 * @parame {HtmlVideoElement} video 播放预览画面的video标签
 */
RtcEngine.instance.startPreview(video).then(re=>{})

6.  停止预览。

RtcEngine.instance.stopPreview(video).then(re=>{})

7.  设置是否自动推流自动订阅,需要在加入频道之前设置,此接口是针对频道设置的。

/**
   * 设置是否自动推流和自动订阅 默认自动推流自动订阅
   * @param {*} channel 频道
   * @param { boolean } autoPub true表示自动推流
   * @param { boolean } autoSub true表示自动订阅
   */
RtcEngine.instance.setAutoPublishSubscribe(channel, autoPub, autoSub)

8.  注册回调,需要在加入频道之前设置,此接口是针对频道设置的。

/**
   * 注册回调
   * @param {*} channel 频道
   * @param {*} callback 
   */
RtcEngine.instance.registerCallBack(channel, callback)

9.  加入频道。

/**
   * 加入房间
   * @param {*} channel 频道
   * @param {*} userName 
   */
RtcEngine.instance.login(channel, userName).then(re=>{})

10.  开始推流。

/**
   * 开始推流
   * @param {*} channel 频道
   */
RtcEngine.instance.startPublish(channel).then(re=>{})

11.  停止推流。

/**
   * 停止推流
   * @param {*} channel 频道
   */
RtcEngine.instance.stopPublish(channel).then(re=>{})

12.  设置是否停止发布本地音频。

/**
   * 设置是否停止发布本地音频
   * @param {*} channel  频道
   * @param {*} enable 
   */
RtcEngine.instance.muteLocalMic(channel, enable)

13.  设置是否停止发布本地视频。

/**
   * 设置是否停止发布本地视频
   * @param {*} channel  频道
   * @param {*} enable 
   */
RtcEngine.instance.muteLocalCamera(channel, enable)

14.  切换开启和停止屏幕流。

/**
   * 切换开启和停止屏幕流
   * @param {*} channel  频道
   * @param {*} enable 
   */
RtcEngine.instance.switchPublishScreen(channel, enable)

15.  订阅音视频。

/**
   * 设置远端渲染 默认订阅音频 + 视频(小流)
   * @param {*} channel  频道
   * @param {*} userId 
   */
RtcEngine.instance.subscribe(channel, userId).then(re=>{})

16.  取消订阅。

/**
   * 取消订阅
   * @param {*} channel  频道
   * @param {*} userId 
   */
RtcEngine.instance.unSubScribe(channel, userId).then(re=>{})

17.  设置远端渲染。

/**
   * 设置远端渲染
   * @param {*} channel  频道
   * @param {*} userId 
   * @param {*} video 
   * @param {*} streamType 
   */
RtcEngine.instance.setDisplayRemoteVideo(channel, userId, video, streamType)

18.  获取频道用户列表。

/**
   * 获取判断用户列表 频道
   * @param {*} channel 
   * @return { array | boolean }
   */
RtcEngine.instance.getUserList(channel)

19.  获取用户信息。

/**
   * 获取判断用户列表
   * @param {*} channel 频道
   * @return { array | boolean }
   */
RtcEngine.instance.getUserInfo(channel, userId)

20.  离开频道。

/**
   * 离开频道
   */
RtcEngine.instance.logout().then(re=>{})

实验地址:https://developer.aliyun.com/adc/scenario/3a43ff7ff0cd4f14a010b859e7674c0f

相关文章
|
消息中间件 安全 Java
【RabbitMQ高级篇】消息可靠性问题
【RabbitMQ高级篇】消息可靠性问题
645 0
|
存储 传感器 数据采集
什么是数字电路?
数字电路是一种用于处理和传输数字信号的电路。数字信号是一种离散的信号,只有两个可能的取值,通常表示为0和1。数字电路通过使用逻辑门和触发器等基本元件来执行逻辑运算和存储数据。它可以实现各种功能,如加法、乘法、逻辑运算、存储和传输数据等。数字电路广泛应用于计算机、通信系统、数字电视、数码相机等各种电子设备中。 二、数字电路特点 数字电路具有以下特点: 1. 离散性:数字电路处理的信号是离散的,只有两个可能的取值,即0和1。这种离散性使得数字电路可以进行精确的逻辑运算和数据处理。 2. 可编程性:数字电路可以通过编程来实现不同的功能。通过改变电路中的逻辑门和触发器的连接方式,可以实现不同的逻辑运算
1211 0
|
3月前
|
人工智能 运维 供应链
AI算力爆发,液冷CDU成刚需!核心原理、成本拆解、头部玩家全盘点
本文深度解析液冷CDU行业:随GB200/Rubin集群落地,单柜功耗超100kW,液冷成智算中心刚需。CDU作为液冷“心脏”,技术壁垒高、供需缺口大。全面梳理英维克、申菱等国产龙头及Vertiv等海外巨头的核心技术、客户生态与差异化优势,助力IDC与算力建设方决策。(239字)
|
6月前
|
缓存 算法 Java
别再无效刷题了!2026校招笔试高频考点权重排序(附大厂内部评分标准)
刷题≠高分!2026校招笔试60分真相:80%时间花在仅占15%分值的低频考点上。本文独家揭秘阿里、腾讯等大厂笔试真实权重分布(高频考点占60%),拆解LRU缓存、字符串模拟、场景系统设计等必考题型,并曝光内部评分标准——正确性、代码规范、异常处理等维度缺一不可。高效备考,从聚焦刀刃开始。
|
Web App开发 JSON 前端开发
2.3K star!5分钟搭建专属网课平台?这个开源项目强得离谱!
嗨,大家好,我是小华同学。今天为大家介绍一款专为导师设计的开源视频会议系统——Nettu Meet。它具备实时音视频、共享白板、屏幕共享、聊天和文件共享等功能,特别适合在线辅导、艺术技能培训和语言学习交流等场景。用户可以轻松创建会议并自定义界面,提升在线教学效率和互动性。
466 1
2.3K star!5分钟搭建专属网课平台?这个开源项目强得离谱!
|
数据中心
|
SpringCloudAlibaba Java Nacos
尚硅谷SpringCloud教程 笔记
本文介绍了基于Spring Cloud Alibaba构建的cloud-demo工程创建步骤,包括父模块及子模块的配置。父模块采用pom打包方式,定义了Java 8、Spring Boot 2.4.2、Spring Cloud 2020.0.1及Spring Cloud Alibaba 2021.1版本。包含三个主要模块:services(依赖Nacos)、service-order和service-product(均依赖spring-boot-starter-web)。同时提供了discoveryClient的测试代码,展示服务发现功能的实现与验证过程。
866 12
尚硅谷SpringCloud教程 笔记
|
存储 监控 物联网
计算机网络的应用
计算机网络已深入现代生活的多个方面,包括通信与交流(电子邮件、即时通讯、社交媒体)、媒体与娱乐(在线媒体、在线游戏)、商务与经济(电子商务、远程办公)、教育与学习(在线教育平台)、物联网与智能家居、远程服务(远程医疗、智能交通系统)及数据存储与处理(云计算、数据共享与分析)。这些应用极大地方便了人们的生活,促进了社会的发展。
1371 2
计算机网络的应用
|
缓存 前端开发 容器
window.__POWERED_BY_QIANKUN__
window.__POWERED_BY_QIANKUN__
|
数据可视化 数据处理 Python
使用Pandas实现Excel中的数据透视表功能
本文介绍了如何使用Python的Pandas库实现Excel中的数据透视表功能,包括环境准备、创建模拟销售数据、代码实现及输出等步骤。通过具体示例展示了按地区和销售员汇总销售额的不同方法,如求和、平均值、最大值等,帮助读者掌握Pandas在数据处理上的强大能力。
783 12

热门文章

最新文章