제품 업데이트
Tencent Cloud 오디오/비디오 단말 SDK 재생 업그레이드 및 권한 부여 인증 추가
TRTC 월간 구독 패키지 출시 관련 안내
git clone https://github.com/Tencent-RTC/ultra-live-electron.git
ultra-live-electron/src/TUILiveKit 디렉터리를 프로젝트의 src 디렉터리 아래로 복사합니다.ultra-live-electron/TUILiveKit.main.js와 ultra-live-electron/TUILiveKit.preload.js 파일을 프로젝트의 루트 디렉터리로 복사합니다.ultra-live-electron/src/views/TUILiveKitChild.vue와 ultra-live-electron/src/views/TUILiveKitMain.vue 파일을 프로젝트의 src/views 디렉터리 아래로 복사합니다.src/router/index.ts에 다음 두 가지 라우팅 설정을 추가합니다:// src/router/index.tsimport { createRouter, createWebHashHistory, RouteRecordRaw } from 'vue-router';import HomeView from '../views/HomeView.vue';const routes: Array<RouteRecordRaw> = [{ // 애플리케이션의 현재 라우팅 페이지, 페이지 내에 TUILiveKit 메인 창을 여는 버튼이 있습니다path: '/',name: 'home',component: HomeView},// ********************************** TUILiveKit 관련 코드 시작 ********************************** //{ // TUILiveKit 메인 창 페이지path: '/tui-live-kit-main',name: 'tui-live-kit-main',component: () => import(/* webpackChunkName: "TUILiveKitMain" */ '../views/TUILiveKitMain.vue')},{ // TUILiveKit 서브 창 페이지path: '/tui-live-kit-child',name: 'tui-live-kit-child',component: () => import(/* webpackChunkName: "TUILiveKitChild" */ '../views/TUILiveKitChild.vue'),},// ********************************** TUILiveKit 관련 코드 종료 ********************************** //];// ********************************** TUILiveKit 관련 코드 시작 ********************************** //// 메인 프로세스에서 오는 창 유형 알림을 수신하고, 라우팅 점프 수행window.ipcRenderer.on('window-type', (event: any, type: string) => {console.log(`[router] window type:${type}`);console.log(`[router] current href:${window.location.href}`);router.replace({ name: `tui-live-kit-${type}` });});// ********************************** TUILiveKit 관련 코드 종료 ********************************** //const router = createRouter({history: createWebHashHistory(),routes});export default router;
ultra-live-electron/public/assets 디렉터리와 public/avatar.png 파일을 프로젝트의 public 디렉터리 아래로 복사합니다.ultra-live-electron/scripts/prestart.js 파일을 프로젝트의 scripts 디렉터리 아래로 복사하고, 프로젝트의 package.json 파일의 scripts 부분에 다음 명령어를 추가합니다.{"scripts": {"prestart": "node ./scripts/prestart.js"}}
vue.config.js 파일에 다음 구성을 추가합니다:// vue.config.jsconst { defineConfig } = require('@vue/cli-service')// *********************************** TUILiveKit 관련 코드 시작 *********************************** //const os = require("os");const isProduction = process.env.NODE_ENV === "production";const platform = os.platform();// *********************************** TUILiveKit 관련 코드 종료 *********************************** //module.exports = defineConfig({transpileDependencies: true,// *********************************** TUILiveKit 관련 코드 시작 *********************************** //publicPath: "./",configureWebpack: {devtool: isProduction ? "source-map" : "inline-source-map",target: "electron-renderer",module: {rules: [{test: /\\.node$/,loader: "native-ext-loader",options: {rewritePath: isProduction? platform === "win32"? "./resources": "../Resources": "./node_modules/trtc-electron-sdk/build/Release",},},],},}// *********************************** TUILiveKit 관련 코드 종료 *********************************** //});
src/debug 디렉토리를 복사하고, SDKAppID 및 SDKSecretKey를 구성합니다.ultra-live-electron/src/debug 폴더를 프로젝트의 src 디렉토리로 복사하고, 복사된 basic-info-config.js 파일을 열어 단계 1: 서비스 활성화에서 획득한 SDKAppID와 SDKSecretKey를 입력하십시오.// basic-info-config.js/*** Tencent Cloud SDKAppID는 귀하의 계정 아래의 SDKAppID로 교체해야 합니다.* TRTC [콘솔](https://console.tencentcloud.com/rav)로 이동하여 애플리케이션을 생성하면, SDKAppID를 볼 수 있습니다,* 이것은 Tencent Cloud가 고객을 구별하기 위한 고유 식별자입니다.*/export const SDKAppID = 0;/*** 서명 계산을 위한 암호키는 다음 절차에 따라 얻을 수 있습니다:** 단계 1. TRTC [콘솔](https://console.tencentcloud.com/rav)로 이동하세요. 만약 아직 애플리케이션이 없다면 하나 생성하세요.* 단계 2. "애플리케이션 구성"을 클릭하여 기본 구성 페이지로 들어가서 "계정 체계 통합" 부분을 찾습니다.* 단계 3. "암호키 보기" 버튼을 클릭하면 UserSig 계산에 사용되는 암호키를 확인할 수 있습니다. 이를 복사하여 아래의 변수에 복사해 넣습니다.** 주의: 이 방법은 Demo 디버깅에만 사용됩니다. 정식 출시 전에 UserSig 계산 코드와 암호키를 귀하의 백엔드 서버로 마이그레이션하여 암호키 유출로 인한 트래픽 도용을 방지하세요.* 문서: https://www.tencentcloud.com/document/product/647/17275?from_cn_redirect=1#Server*/export const SDKSecretKey = '';
// main.tsimport { createApp } from 'vue';// *********************************** TUILiveKit 관련 코드 시작 *********************************** //import { createPinia } from 'pinia';import "./TUILiveKit/assets/theme.css";// *********************************** TUILiveKit 관련 코드 종료 *********************************** //import App from './App.vue'import router from './router'createApp(App)// *********************************** TUILiveKit 관련 코드 시작 *********************************** //.use(createPinia())// *********************************** TUILiveKit 관련 코드 종료 *********************************** //.use(router).mount('#app');
src/global.d.ts 파일에서 Window 유형에 대해 다음 속성 선언을 추가합니다.// src/global.d.tsexport {}global 선언 {interface Window {// *********************************** TUILiveKit 관련 코드 시작 *********************************** //ipcRenderer: any;nativeWindowHandle: Uint8Array;mainWindowPort: MessagePort | null;}// *********************************** TUILiveKit 관련 코드 종료 *********************************** //}
// HomeView.vue<template><div class="home"><button @click="openTUILiveKit">방송 시작</button></div></template><script setup lang="ts">import { ref } from 'vue';import type { Ref } from 'vue';import { getBasicInfo } from '../debug/basic-info-config';const isOpen:Ref<boolean> = ref(false); // 상태를 기록하여 TUILiveKit 메인 창을 중복해서 열지 않도록 합니다const openTUILiveKit = async () => {if (!isOpen.value) {const currentUserInfo = await getBasicInfo();if (currentUserInfo) {window.ipcRenderer.send('openTUILiveKit', {userInfo: currentUserInfo // TUILiveKit 메인 창을 열 때 사용자 정보를 매개변수로 전달해야 합니다});isOpen.value = true;} else {console.error('Error: cannot get current user info');}}};</script>
ipcRenderer 객체를 전역 객체인 window에 추가하여 vue 컴포넌트 및 JavaScript/TypeScript 스크립트에서 Electron 메인 프로세스와 통신할 수 있게 합니다.// preload.jsconst { ipcRenderer } = require("electron");// Enable `ipcRenderer` can be used in vue and Javascript modulewindow.ipcRenderer = ipcRenderer;
openTUILiveKit 요청을 수신하고 TUILiveKit 메인 창을 엽니다.// main.jsconst { app, BrowserWindow, ipcMain } = require('electron');const path = require('path');// *********************************** TUILiveKit 관련 코드 시작 *********************************** //const { TUILiveKitMain } = require("./TUILiveKit.main");// *********************************** TUILiveKit 관련 코드 종료 *********************************** //let mainWindow = null;const createWindow = () => {mainWindow = new BrowserWindow({width: 800,height: 600,// *********************************** TUILiveKit 관련 코드 시작 *********************************** //webPreferences: {preload: path.join(__dirname, 'preload.js'),nodeIntegration: true,contextIsolation: false,}// *********************************** TUILiveKit 관련 코드 종료 *********************************** //});// *********************************** TUILiveKit 관련 코드 시작 *********************************** //bindIPCMainEvent();// *********************************** TUILiveKit 관련 코드 종료 *********************************** //if (app.isPackaged) {mainWindow.loadFile("dist/index.html");} else {mainWindow.loadURL('http://localhost:8080');}}// *********************************** TUILiveKit 관련 코드 시작 *********************************** //function bindIPCMainEvent() {ipcMain.on("openTUILiveKit", (event, args) => {console.log(`[main] open live kit`, args);TUILiveKitMain.open(args); // TUILiveKit 메인 창 열기});}// *********************************** TUILiveKit 관련 코드 종료 *********************************** //app.whenReady().then(() => {createWindow();app.on('activate', () => {if (BrowserWindow.getAllWindows().length === 0) createWindow()});})app.on('window-all-closed', () => {if (process.platform !== 'darwin') app.quit()});
{"main": "main.js","scripts": {"start": "electron ."},"overrides": {"@tencentcloud/tuiroom-engine-electron": {"trtc-electron-sdk": "^12.2.701"}}}
npm install --save pinianpm install --save trtc-electron-sdk movable-resizable-jsnpm install --save @tencentcloud/tuiroom-engine-electron # TUILiveKit 라이브룸 엔진npm install --save trtc-electron-plugin-xmagic # TUILiveKit 통합된 뷰티 플러그인npm install --save-dev native-ext-loader electron-devtools-installer electron-builder
cmd.exe를 열고, 다음 명령어를 실행하여 Web 프로젝트를 개발 모드로 시작하십시오.npm run serve
// .eslintrc.jsmodule.exports = {root: true,env: {node: true},'extends': ['plugin:vue/vue3-essential','eslint:recommended','@vue/typescript/recommended'],parserOptions: {ecmaVersion: 2020},rules: {'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off','no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off',// *********************************** TUILiveKit 관련 코드 시작 *********************************** //"vue/multi-word-component-names": process.env.NODE_ENV === 'production' ? 'warn' : 'off',// *********************************** TUILiveKit 관련 코드 종료 *********************************** //}}
cmd.exe를 열고, 다음 명령어를 실행하여 Electron 애플리케이션을 개발 모드로 시작하십시오.npm run start




ultra-live-electron/electron-builder.json5 파일을 프로젝트 루트 디렉토리로 복사한 후, 파일 내의 productName과 appId를 해당 애플리케이션의 정보로 변경하세요.{"scripts": {"build:win64": "electron-builder --win --x64","pack:win64": "npm run build && npm run build:win64"}}
cmd.exe를 열고, 다음 명령어를 실행하면 구축이 시작됩니다. 구축된 설치 패키지는 프로젝트의 release 디렉토리에 저장됩니다.npm run pack:win64
npm install --save-dev typescript@4.5.5 @typescript-eslint/eslint-plugin@5.4.0 @typescript-eslint/parser@5.4.0 @vue/cli-plugin-typescript@5.0.0 @vue/eslint-config-typescript@9.1.0
ultra-live-electron/tsconfig.json 파일을 프로젝트의 루트 디렉터리로 복사합니다.ultra-live-electron/src/global.d.ts 파일을 프로젝트의 루트 디렉터리로 복사합니다.licenseURL과 licenseKey를 획득하고 이를 src/TUILiveKit/utils/beauty.ts 파일에 입력하면 됩니다.licenseURL과licenseKey를 백엔드 서비스 호출을 통해 획득해야 합니다. JavaScript 파일에 직접 입력하여 빠르게 활성화할 수 있지만, licenseURL 및 licenseKey 유출 위험이 크기 때문에 빠른 통합 및 체험 용도로만 적합합니다.// beauty.tsexport const XmagicLicense = {licenseURL: "",licenseKey: "",};
피드백