Skip to content

Basic Examples

This page covers common playback patterns:

  • Render to video
  • Render to audio (audio-only)
  • Render to canvas
  • Bind MediaStream manually

1) Render to video

html
<video id="video" controls playsinline muted></video>
typescript
import { RtcPlayer } from '@webrtc-engine/core';

const player = new RtcPlayer({
  url: 'webrtc://localhost/live/livestream',
  api: 'http://localhost:1985/rtc/v1/play/',
  target: document.getElementById('video') as HTMLVideoElement,
});

player.on('state', (state) => console.log('Playback state:', state));
player.on('error', (error) => console.error('Playback error:', error));

await player.play();

2) Render to audio (audio-only streams)

Useful for voice rooms, intercom, and audio monitoring.

html
<audio id="audio" controls autoplay></audio>
typescript
const audioPlayer = new RtcPlayer({
  url: 'webrtc://localhost/live/audio-only',
  api: 'http://localhost:1985/rtc/v1/play/',
  target: document.getElementById('audio') as HTMLAudioElement,
});

await audioPlayer.play();

3) Render to canvas (for overlays)

When target is a canvas, you can layer custom drawing (watermarks, regions, subtitles) in your app.

html
<canvas id="canvas" width="1280" height="720"></canvas>
typescript
const canvasPlayer = new RtcPlayer({
  url: 'webrtc://localhost/live/livestream',
  api: 'http://localhost:1985/rtc/v1/play/',
  target: document.getElementById('canvas') as HTMLCanvasElement,
});

await canvasPlayer.play();

4) Manual stream binding (fully custom rendering)

typescript
const player = new RtcPlayer({
  url: 'webrtc://localhost/live/livestream',
  api: 'http://localhost:1985/rtc/v1/play/',
});

const video = document.getElementById('video') as HTMLVideoElement;

player.on('track', ({ stream }) => {
  video.srcObject = stream;
  void video.play();
});

await player.play();

基于 MIT 许可证发布