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 许可证发布