Skip to content

Latest commit

 

History

History
 
 

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 

README.md

Media over QUIC

@moq/watch

npm TypeScript

Subscribe to and render Media over QUIC (MoQ) broadcasts, built on top of @moq/hang and @moq/lite.

Installation

bun add @moq/watch
# or
npm add @moq/watch

Web Component

The simplest way to watch a stream:

<script type="module">
    import "@moq/watch/element";
</script>

<moq-watch
    url="https://relay.example.com/anon"
    path="room/alice"
    controls>
    <canvas></canvas>
</moq-watch>

Attributes

Attribute Type Default Description
url string required Relay server URL
path string required Broadcast path
paused boolean false Pause playback
muted boolean false Mute audio
volume number 1 Audio volume (0-1)

JavaScript API

For more control:

import * as Watch from "@moq/watch";

const watch = new Watch.Broadcast(connection, {
    enabled: true,
    name: "alice",
    video: { enabled: true },
    audio: { enabled: true },
});

// Access the video stream
watch.video.media.subscribe((stream) => {
    if (stream) {
        videoElement.srcObject = stream;
    }
});

UI Web Component

@moq/watch includes a SolidJS-powered UI overlay (<moq-watch-ui>) with playback controls, volume, buffering indicator, quality selector, and stats panel. It depends on @moq/ui-core for shared UI primitives.

<script type="module">
    import "@moq/watch/element";
    import "@moq/watch/ui";
</script>

<moq-watch-ui>
    <moq-watch url="https://relay.example.com/anon" path="room/alice">
        <canvas></canvas>
    </moq-watch>
</moq-watch-ui>

The <moq-watch-ui> element automatically discovers the nested <moq-watch> element and wires up reactive controls.

Features

  • WebCodecs decoding — Hardware-accelerated video and audio decoding
  • MSE fallback — Media Source Extensions for broader codec support
  • Reactive state — All properties are signals from @moq/signals
  • Chat — Subscribe to text chat channels
  • Location — Peer location and window tracking
  • Quality selection — Switch between available renditions

License

Licensed under either: