You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: src/pages/blog/first-cdn.mdx
+13-13Lines changed: 13 additions & 13 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -29,15 +29,15 @@ Check it out if you want to see the ~cringe~ cool stuff you can do with MoQ.
29
29
This is a [technical preview](https://developers.cloudflare.com/moq/), so it's both free and subject to change.
30
30
31
31
Cloudflare is hosting a public `relay.cloudflare.mediaoverquic.com` endpoint that you can ~abuse~ test.
32
-
Connect using [my library](https://github.com/kixelated/moq), [Mike's fork](https://github.com/englishm/moq-rs), [Lorenzo's imquic](https://www.meetecho.com/blog/imquic/), [Meta's moxygen](https://github.com/facebookexperimental/moxygen), or any client that supports this limited subset of draft-07.
32
+
Connect using [my library](https://github.com/moq-dev/moq), [Mike's fork](https://github.com/englishm/moq-rs), [Lorenzo's imquic](https://www.meetecho.com/blog/imquic/), [Meta's moxygen](https://github.com/facebookexperimental/moxygen), or any client that supports this limited subset of draft-07.
33
33
34
-
I'm biased so naturally I'm going to use [@kixelated/hang](https://github.com/kixelated/moq/tree/main/js/hang) (smash that star button).
35
-
You can publish a live broadcast in the browser using the [web demo](/publish) or the [library](https://github.com/kixelated/moq/blob/main/js/hang-demo/src/publish.html#L25):
34
+
I'm biased so naturally I'm going to use [@moq/hang](https://github.com/moq-dev/moq/tree/main/js/hang) (smash that star button).
35
+
You can publish a live broadcast in the browser using the [web demo](/publish) or the [library](https://github.com/moq-dev/moq/blob/main/js/hang-demo/src/publish.html#L25):
36
36
37
37
```html
38
38
<scripttype="module">
39
39
// Registers the <hang-publish> element.
40
-
import"@kixelated/hang/publish/element";
40
+
import"@moq/hang/publish/element";
41
41
</script>
42
42
43
43
<!-- You'll need to replace `name` with something unique/random. -->
@@ -47,11 +47,11 @@ You can publish a live broadcast in the browser using the [web demo](/publish) o
47
47
</hang-publish>
48
48
```
49
49
50
-
There's a link to watch your live broadcast using the [web demo](/watch), or again you can use the [library](https://github.com/kixelated/moq/blob/9f5f6153458c03f255877a036e36f68f742d5c85/js/hang-demo/src/index.html#L30):
50
+
There's a link to watch your live broadcast using the [web demo](/watch), or again you can use the [library](https://github.com/moq-dev/moq/blob/9f5f6153458c03f255877a036e36f68f742d5c85/js/hang-demo/src/index.html#L30):
51
51
```html
52
52
<scripttype="module">
53
53
// Registers the <hang-watch> element.
54
-
import"@kixelated/hang/watch/element";
54
+
import"@moq/hang/watch/element";
55
55
</script>
56
56
57
57
<!-- Use the same name as the broadcast you published. -->
@@ -69,7 +69,7 @@ But that's a whole separate blog post; it's pretty cool.
69
69
[hang.live](/blog/first-app) uses the far more powerful Javascript API to do more complicated stuff like get access to individual video frames.
70
70
There's a *super secret* section at the end of this blog if you LOVE sample code, but I'm not going to bore the rest of you.
71
71
72
-
There's also a 🦀 Rust 🦀 library [to import MP4](https://github.com/kixelated/moq/tree/main/rs/hang), [pipe media from ffmpeg](https://github.com/kixelated/moq/blob/9f5f6153458c03f255877a036e36f68f742d5c85/rs/justfile#L103), and [publish/watch using gstreamer](https://github.com/kixelated/moq/blob/9f5f6153458c03f255877a036e36f68f742d5c85/rs/justfile#L119) so you can do more complicated media stuff without 🤮 Javascript 🤮.
72
+
There's also a 🦀 Rust 🦀 library [to import MP4](https://github.com/moq-dev/moq/tree/main/rs/hang), [pipe media from ffmpeg](https://github.com/moq-dev/moq/blob/9f5f6153458c03f255877a036e36f68f742d5c85/rs/justfile#L103), and [publish/watch using gstreamer](https://github.com/moq-dev/moq/blob/9f5f6153458c03f255877a036e36f68f742d5c85/rs/justfile#L119) so you can do more complicated media stuff without 🤮 Javascript 🤮.
73
73
I wish I could spend more time on the Rust side but **WebSupport** is a big deal.
74
74
We are no longer forced to use WebRTC, but that also means we need to build our own WebRTC in 🤮 Javascript 🤮.
75
75
I can suffer and you can reap the rewards.
@@ -82,15 +82,15 @@ Cloudflare is only supporting a *tiny* subset of an [old draft](https://www.ietf
82
82
They're using a [fork](https://github.com/englishm/moq-rs) of my terrible code so bugs are guaranteed.
83
83
84
84
-**There's no authentication yet**: choose an unguessable name for each broadcast.
85
-
-**There's no ANNOUNCE support**: my [conferencing example](https://github.com/kixelated/moq/blob/main/js/hang-demo/src/meet.html) uses **ANNOUNCE** to discover when broadcasts start/stop, so that won't work.
85
+
-**There's no ANNOUNCE support**: my [conferencing example](https://github.com/moq-dev/moq/blob/main/js/hang-demo/src/meet.html) uses **ANNOUNCE** to discover when broadcasts start/stop, so that won't work.
86
86
-**There's no [Safari support](https://caniuse.com/webtransport)**: [It's coming eventually](https://github.com/WebKit/standards-positions/issues/18#issuecomment-1495890122).
87
87
-**Nothing has been optimized**: the user experience will improve over time.
88
88
89
-
If any of these are deal breakers, then you could always run your own [moq-relay](https://github.com/kixelated/moq/tree/main/rs/moq-relay) in the meantime.
89
+
If any of these are deal breakers, then you could always run your own [moq-relay](https://github.com/moq-dev/moq/tree/main/rs/moq-relay) in the meantime.
90
90
I've been adding new features and fixing a bunch of stuff *after* Cloudflare smashed that fork button.
91
91
For example, authentication (via JWT) and a WebSocket fallback for Safari/TCP support.
92
92
93
-
There's even a [terraform module](https://github.com/kixelated/moq/blob/main/cdn/relay.tf) that powers `cdn.moq.dev`.
93
+
There's even a [terraform module](https://github.com/moq-dev/moq/blob/main/cdn/relay.tf) that powers `cdn.moq.dev`.
94
94
You too can run your own "global" CDN with 3 nodes and pay ~GCP~ Linode a boatload of money for the privilege.
95
95
It's not *quite* as good as Cloudflare's network, currently available for free...
96
96
@@ -168,10 +168,10 @@ I knew you would win.
168
168
169
169
Here's an example of my reactive library in action.
170
170
It powers [hang.live](/blog/first-app) so the API is subject to change and is probably already out of date.
171
-
When in doubt, [consult the source code](https://github.com/kixelated/moq/tree/main/js/hang) like the hacker you are.
171
+
When in doubt, [consult the source code](https://github.com/moq-dev/moq/tree/main/js/hang) like the hacker you are.
172
172
173
173
```typescript
174
-
import { Watch } from"@kixelated/hang"
174
+
import { Watch } from"@moq/hang"
175
175
176
176
// Start downloading a broadcast.
177
177
const watch =newWatch.Broadcast({
@@ -186,7 +186,7 @@ const watch = new Watch.Broadcast({
186
186
watch.audio.enabled.set(true);
187
187
188
188
// There are helpers to convert my custom signals, like for React:
189
-
importreactfrom"@kixelated/signals/react"
189
+
importreactfrom"@moq/signals/react"
190
190
const audioInfo =react(watch.audio.info); // a JSON blob of track information
- ⚡ **Real-time**: Minimal latency by skipping less important media during congestion.
35
-
- 🚀 **Massive Scale**: Host your own CDN with [moq-relay](https://github.com/kixelated/moq/tree/main/rs/moq-relay) or use [Cloudflare](/blog/first-cdn).
36
-
- 🎬 **Multi-Platform**: [Web](https://github.com/kixelated/moq/tree/main/js/hang), [FFmpeg](https://github.com/kixelated/moq/tree/main/rs/hang-cli), [GStreamer](https://github.com/kixelated/hang-gst), and [native](/source) clients available.
35
+
- 🚀 **Massive Scale**: Host your own CDN with [moq-relay](https://github.com/moq-dev/moq/tree/main/rs/moq-relay) or use [Cloudflare](/blog/first-cdn).
36
+
- 🎬 **Multi-Platform**: [Web](https://github.com/moq-dev/moq/tree/main/js/hang), [FFmpeg](https://github.com/moq-dev/moq/tree/main/rs/hang-cli), [GStreamer](https://github.com/moq-dev/gstreamer), and [native](/source) clients available.
37
37
- 🔍 **Discoverable**: Live notifications when broadcasts are published or finish.
38
38
- 💪 **Efficient**: No encoding or bandwidth usage until a viewer needs it.
39
-
- 🌍 **Compatible**: TCP fallback via [WebSocket](https://github.com/kixelated/web-transport/tree/main/web-transport-ws), Safari fallback via [libav.js](https://github.com/Yahweasel/libav.js/).
39
+
- 🌍 **Compatible**: TCP fallback via [WebSocket](https://github.com/moq-dev/web-transport/tree/main/web-transport-ws), Safari fallback via [libav.js](https://github.com/Yahweasel/libav.js/).
40
40
- 🔧 **Customizable**: Hardware accelerated encoding, the rest is in your control.
41
41
42
42
### *Standards
43
-
This website uses a [fork](/blog/transfork) of the IETF draft called [moq-lite](https://kixelated.github.io/moq-drafts/draft-lcurley-moq-lite.html) and a media layer called [hang](https://kixelated.github.io/moq-drafts/draft-lcurley-moq-hang.html).
43
+
This website uses a [fork](/blog/transfork) of the IETF draft called [moq-lite](https://moq-dev.github.io/moq-drafts/draft-lcurley-moq-lite.html) and a media layer called [hang](https://moq-dev.github.io/moq-drafts/draft-lcurley-moq-hang.html).
44
44
The principles behind MoQ are fantastic, but standards are **SLOW** and involve too much arguing.
45
45
My goal is to build something simple that you can use *now*, even if it's not a standard *yet*.
46
46
47
47
48
48
### Learn More
49
49
Check out the [blog](/blog) for more information and a smattering of jokes.
50
-
Once you're ready for more, check out the [Github](https://github.com/kixelated/moq) and/or join [Discord](https://discord.gg/FCYF3p99mr).
50
+
Once you're ready for more, check out the [Github](https://github.com/moq-dev/moq) and/or join [Discord](https://discord.gg/FCYF3p99mr).
0 commit comments