# ldesign-video-conference **Repository Path**: ldesign-v1/ldesign-video-conference ## Basic Information - **Project Name**: ldesign-video-conference - **Description**: ????UI - ????????????? - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-12 - **Last Updated**: 2026-04-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # @ldesign/video-conference 视频会议 UI 组件库,提供多人视频布局、屏幕共享、会议控制等界面组件。 ## ✨ 特性 - 📹 **多人视频布局** - 宫格/演讲者/侧边栏/画中画等布局模式自动切换 - 🖥️ **屏幕共享** - 屏幕共享控制栏与共享状态展示 - 🎤 **音视频控制** - 麦克风/摄像头开关、音量指示器 - 🙋 **举手功能** - 参会者举手排队、主持人管理 - 💬 **会议聊天** - 侧边栏文字聊天面板 - 👥 **参会者列表** - 参会人员列表、角色标识(主持人/联席/参会者) - 🔇 **静音管理** - 全体静音/取消静音、个人静音控制 - ⏺️ **会议录制** - 录制状态指示与控制 - 📊 **网络质量** - 网络质量指示器(延迟/丢包/带宽) - ⏱️ **会议计时** - 会议持续时间计时器 - 🔗 **邀请入会** - 会议链接/会议号分享面板 - 📱 **移动端适配** - 移动端视频会议界面 - 🌓 **主题切换** - 亮色/暗色主题 --- ## 📦 安装 ```bash pnpm add @ldesign/video-conference @ldesign/video-conference-vue ``` ## 🚀 快速开始 ### Vue 组件使用 ```vue ``` ### 核心库使用 ```typescript import { VideoConferenceEngine } from '@ldesign/video-conference' const engine = new VideoConferenceEngine({ container: document.getElementById('conference'), layout: 'grid' }) // 加入会议 engine.join('user-1', '张三') // 监听事件 engine.events.on('participant-joined', ({ participant }) => { console.log(`${participant.name} 加入了会议`) }) // 控制功能 await engine.controls.media.toggleAudio() await engine.controls.screenShare.startScreenShare() engine.controls.chat.sendMessage('你好', 'user-1', '张三') ``` ### Composables 使用 ```vue ``` > **注意:** 本库仅提供 UI 层组件,音视频传输需对接 WebRTC 或第三方 SDK(如声网/腾讯云/ZEGO)。 --- ## 📁 项目结构 ``` video-conference/ ├── packages/ │ ├── core/ # 核心库 @ldesign/video-conference │ │ └── src/ │ │ ├── core/ # 核心引擎 │ │ │ ├── EventEmitter.ts # 类型安全的事件发射器 │ │ │ ├── StateManager.ts # 状态管理器 │ │ │ ├── ParticipantManager.ts # 参会者管理器 │ │ │ └── VideoConferenceEngine.ts # 会议引擎主类 │ │ ├── layouts/ # 视频布局算法 │ │ │ ├── GridLayout.ts # 宫格布局 │ │ │ ├── SpeakerLayout.ts # 演讲者布局 │ │ │ ├── SidebarLayout.ts # 侧边栏布局 │ │ │ ├── PiPLayout.ts # 画中画布局 │ │ │ └── LayoutManager.ts # 布局管理器 │ │ ├── controls/ # 控制面板组件 │ │ │ ├── MediaController.ts # 媒体控制器 │ │ │ ├── ScreenShareController.ts # 屏幕共享控制器 │ │ │ ├── RecordingController.ts # 录制控制器 │ │ │ ├── ChatController.ts # 聊天控制器 │ │ │ └── ControlManager.ts # 控制管理器 │ │ ├── utils/ # 工具函数 │ │ │ ├── network.ts # 网络质量检测 │ │ │ └── device.ts # 设备管理 │ │ └── types/ # TypeScript 类型 │ │ ├── participant.ts # 参会者类型 │ │ ├── layout.ts # 布局类型 │ │ ├── control.ts # 控制类型 │ │ ├── chat.ts # 聊天类型 │ │ └── events.ts # 事件类型 │ └── vue/ # Vue 组件 @ldesign/video-conference-vue │ └── src/ │ ├── components/ # Vue 组件 │ │ ├── VideoConference.vue # 会议主组件 │ │ ├── VideoGrid.vue # 视频网格 │ │ ├── VideoTile.vue # 视频单格 │ │ └── ControlBar.vue # 控制栏 │ └── composables/ # Vue Composables │ ├── useVideoConference.ts # 会议 composable │ └── useMediaControls.ts # 媒体控制 composable ├── playground/ # 演示应用 └── README.md ``` ## 🎨 布局模式 ### 宫格布局 (Grid) 自动计算最优网格,支持 1-50+ 参会者。 ### 演讲者布局 (Speaker) 主讲人大窗口 + 其他参会者小窗口。 ### 侧边栏布局 (Sidebar) 主内容区 + 侧边参会者列表。 ### 画中画布局 (Picture-in-Picture) 主内容 + 画中画小窗口。 ## 🔧 API 参考 ### VideoConferenceEngine | 方法 | 说明 | |------|------| | `join(userId, userName, options?)` | 加入会议 | | `leave()` | 离开会议 | | `addRemoteParticipant(participant)` | 添加远程参会者 | | `removeRemoteParticipant(participantId)` | 移除远程参会者 | | `updateParticipantStream(participantId, stream)` | 更新远程参会者流 | | `destroy()` | 销毁引擎 | ### ControlManager | 方法 | 说明 | |------|------| | `media.toggleAudio()` | 切换音频 | | `media.toggleVideo()` | 切换视频 | | `screenShare.startScreenShare()` | 开始屏幕共享 | | `screenShare.stopScreenShare()` | 停止屏幕共享 | | `recording.startRecording(stream)` | 开始录制 | | `recording.stopRecording()` | 停止录制 | | `chat.sendMessage(content, senderId, senderName)` | 发送消息 | | `raiseHand()` | 举手 | | `lowerHand()` | 放下手 | | `muteAll()` | 全体静音 | | `unmuteAll()` | 取消全体静音 | ### Vue 组件 | 组件 | 说明 | |------|------| | `VideoConference` | 会议主组件 | | `VideoGrid` | 视频网格组件 | | `VideoTile` | 视频单格组件 | | `ControlBar` | 控制栏组件 | ### Composables | Composable | 说明 | |------------|------| | `useVideoConference` | 视频会议 composable | | `useMediaControls` | 媒体控制 composable | ## 📄 License MIT