Skip to content

RtcPlayer

Playback player core class.

Constructor

typescript
new RtcPlayer(options: RtcPlayerOptions)

Options (RtcPlayerOptions)

Properties

PropertyTypeRequiredDescription
urlstringYesWebRTC playback URL
apistringYesSignaling server URL
targetHTMLVideoElement | HTMLAudioElement | HTMLCanvasElementNoRender target element (video/audio/canvas)
mutedbooleanNoWhether target element is muted, default true
media'audio' | 'video' | 'all'NoMedia type, default all
configRTCConfigurationNoWebRTC connection config
reconnectReconnectOptionsNoAuto reconnect behavior
iceIceOptionsNoICE behavior options (wait strategy and timeout)

ReconnectOptions

PropertyTypeRequiredDescription
enabledbooleanNoEnable auto reconnect, default false
maxRetriesnumberNoMaximum retry attempts, default 5
intervalnumberNoRetry interval in ms; initial interval when exponential backoff is enabled, default 2000
exponentialbooleanNoEnable exponential backoff, default false
maxIntervalnumberNoMaximum retry interval in ms
jitterRationumberNoRandom jitter ratio (0~1)
disconnectedTimeoutnumberNoFallback reconnect delay after entering disconnected (ms), default 5000

IceOptions

PropertyTypeRequiredDescription
waitForCompletebooleanNoWhether to wait for ICE gathering to complete before SDP exchange, default true
gatheringTimeoutnumberNoICE gathering timeout in ms, default 3000

Methods

play() async

Start playback.

typescript
await player.play();

switchStream(url) async

Switch playback URL.

typescript
await player.switchStream('webrtc://localhost/live/newstream');

use(plugin) sync

Register and install a plugin. Returns this for chaining.

typescript
import { createPlayerLoggerPlugin } from '@webrtc-engine/plugin-logger';

player.use(createPlayerLoggerPlugin());

See Plugin System for details.

unuse(name) sync

Uninstall a plugin by name.

typescript
player.unuse('player-logger');

destroy()

Destroy instance.

typescript
player.destroy();

Events

EventDescription
trackRemote stream received
mediareadyMedia entered playable state
stateRTC state changed (connecting/connected/...)
errorRuntime error
icecandidateLocal ICE candidate generated
iceconnectionstateICE connection state updated
icegatheringstateICE gathering state updated
reconnectingAuto-reconnect attempt started
reconnectfailedAuto-reconnect exhausted (max retries reached)
reconnectedAuto-reconnect succeeded
signalingerrorSignaling request failed

Usage Example

typescript
import { RtcPlayer } from '@webrtc-engine/core';

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

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

基于 MIT 许可证发布