這是一篇關于TRTC的Web應用的初級入門文章,高手請略過。經過一段時間對騰訊云的TRTC的Web端和安卓端SDK學習和摸索,分幾個周末把這個學習過程給大家整理成為筆記,如有錯漏的地方,歡迎指正。
在建立這個在線課堂應用過程中,可能會使用到騰訊云的IM、云直播等服務,以及對應安卓端SDK,下面將通過三篇文章來記錄這個過程,本文為第一篇。
# 安裝VUEJS開發手腳架npm install -g @vue/cli# 創建新項目vue create ClassRoomVue# 進入工程目錄cd ClassRoomVue# 引入base64 模塊 生成轉碼URInpm install --save js-base64# 引入md5 模塊 生產房間ID摘要npm install --save js-md5# 啟動VUE開發服務程序npm run serve
打開瀏覽器訪問 http://localhost:8080,可以看到正確渲染的頁面。
使用Visual Studio Code 或者其他代碼編輯器打開 ClassRoomVue目錄,如下圖所示:
# npm install trtc-js-sdk
# 在index.html文件中插入以下代碼 <script src="js/GenerateTestUserSig.js"></script> <script src="js/lib-generate-test-usersig.min.js"></script> <script src="js/trtc.js"></script>
1. 在工程的components 目錄下創建以下文件
AppTitleBar.vue // 標題欄組件 (通用)ClassRoom.vue // 教師房間UI組件 (通用)LoginBox.vue // 登錄組件 (通用)MessageBox.vue //消息發送框組件 (通用)StudentVideo.vue // 學生視頻顯示組件 (教師端)TeacherLocalVideo.vue //教師本地視頻顯示組件 (教師端)TeacherVideo.vue // 教師遠程視頻顯示組件 (學生端)TeacherWhiteBoard.vue // 教師白板 (教師端)
登錄界面
2 . 在工程目錄創建TRTC服務模塊 TRTC.Sevice.js,方便各組件調用TRTC的api
import TRTC from 'trtc-js-sdk'; import { genTestUserSig } from "./GenerateTestUserSig"; export let roomId = null;export let userSig = null;export const streamInfo = {};export const userInfo = {name:"MyName"};export let sdkAppId = null; export let client = null; export const createLocalStream = function(userId,callback){ console.log("create local stream "+userId); streamInfo.localStream = TRTC.createStream({ userId:userId, audio: true, video: true }); streamInfo.localStream.setVideoProfile('480p'); streamInfo.localStream.initialize().then(() => { callback(streamInfo.localStream); }); return streamInfo.localStream;};export const createNewLiveClient = function(userId){ return TRTC.createClient({ sdkAppId, userId, userSig, mode: 'live'});};// 房間控制器export const RoomControl = { //創建課堂房間 createClassRoom : function( roomId_,callback){ console.log("createClassRoom "+roomId_); roomId = roomId_; const UserSig = genTestUserSig(roomId); sdkAppId = UserSig.sdkAppID; userSig = UserSig.userSig; client = TRTC.createClient({ 'mode': 'rtc', 'sdkAppId':sdkAppId, 'userId':roomId, 'userSig':userSig }); callback(client); return client; }, // 進入課堂 enterClassRoom:function(roomId,callback){ client.join({ 'roomId':roomId }) .catch(error => { console.error('進房失敗 ' + error); }) .then(() => { console.log('進房成功 '+roomId+" "+userSig); callback(client); }); }, exitClassRoom : function(callback){ if(window.confirm("確定退出課堂嗎?")){ callback(); } }}
3. 在LoginBox.vue 模塊編寫用戶登錄頁面,收集教師用戶的名字、手機等信息,為后面創建課堂的唯一URI做準備。
<template> <p> <el-row> <el-col :span="12" :offset="6"> <el-card click="alert('aa');userInfo.role=0" :body-style="{ padding: '0px' }" :shadow="userInfo.role==0?'always':'never'"> <img style="height:200px" src="teacher.jpeg" > <p style="padding: 14px;"> <span>我是老師,準備開課。</span> <p > </p> </p> </el-card> </el-col> </el-row> <el-form style="margin:36px" label-width="80px" :model="userInfo"> <el-form-item label="我的名字"> <el-input v-model="userInfo.name"></el-input> </el-form-item> <el-form-item label="手機號"> <el-input v-model="userInfo.phone"></el-input> </el-form-item> <el-form-item> <el-button type="primary" @click="enterRoom()"> 進入課堂 </el-button> </el-form-item> </el-form> </p> </template><script>import {RoomControl} from './../TRTC.Service'; import {userInfo} from './../TRTC.Service'; export default { name: 'LoginBox', props: { msg: String }, data:function(){ return { userInfo:{role:0,name:"My Name",phone:"0001"} }; }, created:function(){ userInfo.name = this.userInfo.name; }, methods: { enterRoom:function(){ userInfo.name = this.userInfo.name; userInfo.phone = this.userInfo.phone; RoomControl.createClassRoom(this.userInfo.phone,()=>{ this.$emit("enterroom"); }); } }}</script> <style scoped> </style>
4. 在ClassRoom.vue 模塊里編寫課堂的實現邏輯代碼,流程如下,進入房間,顯示本地視頻流,然后通過client.publish() 把本地音視頻流推送到TRTC。
import Vue from 'vue'; import WhiteBoard from './TeacherWhiteBoard.vue';import TeacherLocalVideo from './TeacherLocalVideo.vue'; import StudentVideo from './StudentVideo.vue';import {createLocalStream} from './../TRTC.Service'; import {RoomControl} from './../TRTC.Service'; import {userInfo} from './../TRTC.Service'; import {roomId} from './../TRTC.Service'; import {client} from './../TRTC.Service'; let Base64 = require('js-base64').Base64;export default { name: 'TeacherClassRoom', components: { WhiteBoard, TeacherLocalVideo, StudentVideo }, props: { }, created:function(){ // 房間內容有新鏈路加入事件 client.on('stream-added', event => { console.log('stream added '); this.students.push(event); this.onStudentEnterRoom(event); }); // 房間內容有新鏈路退出事件 client.on('stream-removed', event => { console.log('stream removed '); this.onStudenExitRoom(event); }); RoomControl.enterClassRoom(roomId,()=>{ this.visitURI = window.location.href+"#"+ Base64.encode( roomId+"|"+userInfo.name); createLocalStream(roomId,(stream)=>{ Vue.nextTick(()=>{ stream.play("local_stream"); client.publish(stream).then(() => { console.log('publish'); callback(stream); }); }); }); }); }, methods:{ onStudenExitRoom:function(event){ console.log('onStudenExitRoom '); }, onStudentEnterRoom:function(event){ console.log('onStudentEnterRoom '); } }, data:function(){ return { visitURI:"", students:[] }; }}
開發好教師端課堂相關模塊后,可以看到音視頻流成功地發送出去,下一步是在TRTC儀表盤看一下,剛剛發布的數據是否真的已經被TRTC服務器所接收。
從儀表盤看,老師端的音視頻數據已經進入TRTC的服務器,并顯示終端設備的一些信息。
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...
在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...
在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...
360wifi斷網怎么回事?原因是用360WIFI創建的WIFI熱點和電腦連接的熱點在同一個頻段,造成,無法同時使用。解決方法如下:將網卡驅動更新到最新嘗試。建議使用換帶軟件檢測修改后再重啟WIFI。按照以上方法,一般可以解決360斷網的問題。360wifi不能用了怎么修復?1.打開 "控制面板和點擊 "網絡與互聯網-gt "查看網絡狀態和任務進入。2.然后點擊 "更換適配器來設置選項。3.右鍵...
IT男是什么職業,IT又是什么意思呢?It男是指從事It行業的男性勞動者。他們的特點是長時間在電腦前工作。由于工作壓力的特殊性,這些人長時間坐不起來,甚至很少喝水和上廁所。因此,健康問題隨之而來:神經衰弱、視力下降、易肥胖、生育能力下降甚至不孕。它意味著信息技術。信息技術或it(英文:Information technology,簡稱it),主要用于管理和處理各種技術使用的信息。主要應用計算機科學...
QQ游戲下載好了怎么安裝不了?這需要一點電腦知識。進入游戲廳文件夾,刪除相關游戲文件夾。如何找到這個游戲的文件夾?先打開游戲,打開游戲,再打開任務管理器。在[應用程序]中找到游戲名稱,點擊右鍵,從菜單中選擇[轉到進程]??吹竭M程名,點擊右邊選擇【屬性】,就會看到這個游戲的文件夾。QQ怎么下載各種軟件并安裝?下載軟件有兩種。1.首先,如果你有二維碼,保存它,然后進入主頁點擊右上方的加號,選擇掃描,掃...