Skip to content

桌面媒体捕获

使用 MediaManager.getDisplayMedia() 捕获桌面、窗口或浏览器标签页的媒体流。这是屏幕分享功能的基础——获取到 MediaStream 后,可将 track 添加到 WetRTC 连接中发送给远端。

在线体验

加载交互 Demo…

最简用法

ts
import { MediaManager } from '@wetspace/wetrtc'

// 捕获屏幕流(浏览器会弹出选择器)
const stream = await MediaManager.getDisplayMedia({
  width: 1920,
  height: 1080,
  frameRate: 30,
  audio: true, // 可选:同时捕获系统音频
})

// 绑定到 video 元素预览
const video = document.querySelector('video')!
video.srcObject = stream
await video.play()

// 用户从系统 UI 停止分享时,track 会触发 ended 事件
stream.getVideoTracks()[0].addEventListener('ended', () => {
  console.log('屏幕捕获已结束')
})

添加到 WebRTC 连接

捕获屏幕流后,将 track 加入 WetRTC 实例即可推送给远端:

ts
import { WetRTC, type SignalChannel } from '@wetspace/wetrtc'

declare const signal: SignalChannel
declare const previewVideo: HTMLVideoElement

const rtc = new WetRTC({ signal, direction: 'sendonly' })

const screenStream = await rtc.media.getDisplayMedia({
  width: 1920,
  height: 1080,
  audio: true,
})

// 本地预览
previewVideo.srcObject = screenStream

// 推送给远端
for (const track of screenStream.getTracks()) {
  rtc.addTrack(track, screenStream)
}

await rtc.connect()

相关示例

Released under the MIT License.