new AudioFrame(data, sampleRate, channels, samplesPerChannel).
new AudioSource(sampleRate, channels).
new AudioStream(track, sampleRate, channels) — resamples inbound to the requested rate.
LocalAudioTrack.createAudioTrack(name, source).
OptionalLocalLocalVideoTrack.createVideoTrack(name, source). Optional, like VideoSource.
new Room().
Event-name constants. VERIFY exact member names.
Track-kind constants. VERIFY: KIND_AUDIO, KIND_VIDEO.
new TrackPublishOptions({ source }) — the publish-options protobuf message. REQUIRED by
publishTrack: passing a plain object leaves source unset and the track improperly bound, so the
native AudioSource.captureFrame rejects every frame with InvalidState. Construct the real proto.
Track-source constants — SOURCE_MICROPHONE tags the bot's published voice track; SOURCE_CAMERA and
SOURCE_SCREENSHARE tell a participant's camera from a screen they share; SOURCE_SCREENSHARE_AUDIO marks the
sound of a shared tab or screen, which the bot does not hear. A track published without a source reports
SOURCE_UNKNOWN (0), which the bot hears.
Video buffer-type constants. VERIFY: VideoBufferType.I420.
OptionalVideonew VideoFrame(data, width, height, type): one frame to capture. Optional, like VideoSource.
Video rotation constants. VERIFY: VideoRotation.VIDEO_ROTATION_* (WebRTC's clockwise convention).
OptionalVideonew VideoSource(width, height): where the bot's avatar frames go. Optional: without it the bot publishes no video.
new VideoStream(track) — the decoded frames of one subscribed video track. VERIFY against @livekit/rtc-node: takes
no options in 0.13.x, and copies every frame into JavaScript at the publisher's rate, so only tracks the bot reads
get one.
The subset of the
@livekit/rtc-nodemodule this wrapper constructs from. VERIFY ctor signatures.