this repo has no description
atmosphereconf-vods.wisp.place/
1WEBVTT
2
31
400:00:00.000 --> 00:00:06.960
5All right.
6
72
800:00:06.960 --> 00:00:09.280
9So that's how Streamplace VOD works.
10
113
1200:00:09.280 --> 00:00:11.200
13I hope you all enjoyed the presentation.
14
154
1600:00:11.200 --> 00:00:13.120
17My name is Eli Malin.
18
195
2000:00:13.120 --> 00:00:15.800
21I'm the CEO and founder of Streamplace.
22
236
2400:00:15.800 --> 00:00:21.600
25I don't care about my Caribbeaner update version.
26
277
2800:00:21.600 --> 00:00:29.320
29So the crux of this talk was if you are going to make a system that has both VOD and live,
30
318
3200:00:29.320 --> 00:00:32.280
33that'd be good at all.
34
359
3600:00:32.280 --> 00:00:33.640
37You should probably start with live.
38
3910
4000:00:33.640 --> 00:00:35.640
41Live video is more difficult than VOD.
42
4311
4400:00:35.640 --> 00:00:42.040
45It is much easier to generalize live video to VOD than it is to go the opposite direction.
46
4712
4800:00:42.040 --> 00:00:43.600
49So we started out with live.
50
5113
5200:00:43.600 --> 00:00:45.520
53We're pretty happy with that.
54
5514
5600:00:45.520 --> 00:00:47.360
57And knock on wood.
58
5915
6000:00:47.360 --> 00:00:49.920
61Of course, as soon as I walked out of the other room, people started reporting playback
62
6316
6400:00:49.920 --> 00:00:50.920
65issues over there.
66
6717
6800:00:50.920 --> 00:00:55.560
69But overall, everything's been going really well at all of this.
70
7118
7200:00:55.560 --> 00:01:00.800
73So I'll start by sort of explaining how Streamplace, a quick explanation of how Streamplace live
74
7519
7600:01:00.800 --> 00:01:03.080
77works because I've talked about this a lot before.
78
7920
8000:01:03.080 --> 00:01:09.240
81And then we'll talk about how we're adapting that for a decentralized VOD primitive.
82
8321
8400:01:09.240 --> 00:01:15.280
85What does it mean to have something like, you know, what would a decentralized YouTube
86
8722
8800:01:15.280 --> 00:01:16.280
89look like?
90
9123
9200:01:16.280 --> 00:01:20.480
93What things do you need in order to make that happen?
94
9524
9600:01:20.480 --> 00:01:22.560
97So yeah, this is just about Streamplace.
98
9925
10000:01:22.560 --> 00:01:29.320
101There's been three Streamplace third-party clients created since the beginning of this
102
10326
10400:01:29.320 --> 00:01:30.840
105conference.
106
10727
10800:01:30.840 --> 00:01:35.960
109So I don't know if that reflects poorly on our front end or if it just refers to the
110
11128
11200:01:35.960 --> 00:01:38.280
113entrepreneurial spirit of the app proto community.
114
11529
11600:01:38.280 --> 00:01:41.760
117But this one's from Jack.xyz.
118
11930
12000:01:41.760 --> 00:01:46.240
121And it shows all of the streams at once, really given the Streamplace servers the maximum
122
12331
12400:01:46.240 --> 00:01:50.720
125workout to give everybody what they're looking for there.
126
12732
12800:01:50.720 --> 00:01:55.160
129Before we do anything else, I found this MP4 file on the ground.
130
13133
13200:01:55.160 --> 00:02:01.160
133Let's see what it is.
134
13534
13600:02:01.160 --> 00:02:06.520
137You can all imagine the great noises Trabio is making here.
138
13935
14000:02:06.520 --> 00:02:12.560
141What's going to happen?
142
14336
14400:02:12.560 --> 00:02:15.560
145And wait for it.
146
14737
14800:02:15.560 --> 00:02:18.240
149Yeah, we got them.
150
15138
15200:02:18.240 --> 00:02:19.240
153Yeah.
154
15539
15600:02:19.280 --> 00:02:26.000
157So that MP4 file I found on the ground turned out to be my glorious victory over Trabio.
158
15940
16000:02:26.000 --> 00:02:27.000
161So how do I know that?
162
16341
16400:02:27.000 --> 00:02:30.480
165How do I know it's Eli's livestream that happened there?
166
16742
16800:02:30.480 --> 00:02:35.720
169And that has to do with Streamplace's signing format.
170
17143
17200:02:35.720 --> 00:02:39.040
173So we needed to...
174
17544
17600:02:39.040 --> 00:02:41.840
177So decentralized VOD is something that's kind of existed before, right?
178
17945
18000:02:41.840 --> 00:02:42.840
181You could argue...
182
18346
18400:02:42.840 --> 00:02:43.920
185This will be a popular opinion.
186
18747
18800:02:43.920 --> 00:02:47.680
189You could argue video NFTs are kind of like a decentralized VOD, right?
190
19148
19200:02:47.680 --> 00:02:51.680
193You've got an IPFS reference to something that's out there and not controlled by any
194
19549
19600:02:51.680 --> 00:02:52.680
197one party.
198
19950
20000:02:52.680 --> 00:02:54.880
201Lots of other IPFS based.
202
20351
20400:02:54.880 --> 00:02:59.640
205There's like DAT based livestreaming that maybe falls into that.
206
20752
20800:02:59.640 --> 00:03:03.160
209But for the most part, we needed to invent what a decentralized livestream is.
210
21153
21200:03:03.160 --> 00:03:06.200
213So what we did was we took...
214
21554
21600:03:06.200 --> 00:03:10.080
217The first thing that happens is you generate a signing key, same as the one that's used
218
21955
22000:03:10.080 --> 00:03:13.800
221to secure your app proto repository.
222
22356
22400:03:13.800 --> 00:03:16.080
225We then take that signing key.
226
22757
22800:03:16.080 --> 00:03:23.360
229You then configure your OBS instance, just like we're doing here, to stream in to Streamplace.
230
23158
23200:03:23.360 --> 00:03:25.160
233You actually provide it with that signing key.
234
23559
23600:03:25.160 --> 00:03:27.120
237So it has the capability of signing on your behalf.
238
23960
24000:03:27.120 --> 00:03:31.000
241If you really care about your key custody, you should run Streamplace locally and then
242
24361
24400:03:31.000 --> 00:03:34.760
245syndicate it out to a server.
246
24762
24800:03:34.760 --> 00:03:37.280
249Then this is basically every livestream you've ever watched.
250
25163
25200:03:37.280 --> 00:03:42.740
253If you haven't messed with video infrastructure before, it's just a bunch of short video files
254
25564
25600:03:42.740 --> 00:03:44.600
257that are thrown into your face in sequence.
258
25965
26000:03:44.600 --> 00:03:46.940
261And it provides the illusion of a livestream.
262
26366
26400:03:46.940 --> 00:03:48.220
265So that's how we do it.
266
26767
26800:03:48.220 --> 00:03:50.660
269Each MP4 file comes in.
270
27168
27200:03:50.660 --> 00:03:56.220
273We give each one of them an embedded signature using technology from the C2PA, the Coalition
274
27569
27600:03:56.220 --> 00:03:59.480
277for Content Provenance and Authenticity.
278
27970
28000:03:59.480 --> 00:04:00.780
281Cool format.
282
28371
28400:04:00.780 --> 00:04:06.200
285It provides a mechanism for giving you an MP4 file that contains an embedded signature
286
28772
28800:04:06.200 --> 00:04:11.380
289over a hash of all of that MP4 file, except for that part of the signature.
290
29173
29200:04:11.380 --> 00:04:12.640
293That's really tricky to get right.
294
29574
29600:04:12.660 --> 00:04:16.780
297And that's one of the things I really like about the C2PA's tooling is you've got this
298
29975
30000:04:16.780 --> 00:04:23.540
301a lot of decentralized media projects have external signatures.
302
30376
30400:04:23.540 --> 00:04:26.780
305So you might have this actually including like Blue Sky videos, right?
306
30777
30800:04:26.780 --> 00:04:28.660
309How do you know it's my Blue Sky video?
310
31178
31200:04:28.660 --> 00:04:34.780
313It's because there's a blob out there that is referenced by a record in my repository
314
31579
31600:04:34.780 --> 00:04:37.220
317and my repository has a signature on the root commit.
318
31980
32000:04:37.220 --> 00:04:39.300
321So that's how you know it's mine, right?
322
32381
32400:04:39.320 --> 00:04:44.080
325What I like about this format is I can have this is the MP4 file on the ground example
326
32782
32800:04:44.080 --> 00:04:45.080
329I just gave, right?
330
33183
33200:04:45.080 --> 00:04:49.000
333You can have arbitrary MP4 file on your computer and all of that signing and provenance data
334
33584
33600:04:49.000 --> 00:04:51.920
337is intact and embedded in the MP4 file.
338
33985
34000:04:51.920 --> 00:04:52.920
341So I like that a lot.
342
34386
34400:04:52.920 --> 00:04:58.160
345It's something we really wanted to preserve as we move from live to VOD.
346
34787
34800:04:58.160 --> 00:05:00.600
349And lots of very cool metadata in here.
350
35188
35200:05:00.600 --> 00:05:02.720
353We're not doing too much with this mechanism yet.
354
35589
35600:05:02.720 --> 00:05:08.460
357I spent a long time talking to Trezi yesterday about embedding this part of the embedded
358
35990
36000:05:08.480 --> 00:05:10.680
361metadata here should be that I'm playing Silksong, right?
362
36391
36400:05:10.680 --> 00:05:15.880
365And then if you care about Silksong, you can watch that live stream and get that data from
366
36792
36800:05:15.880 --> 00:05:17.680
369like pretty much any direction, right?
370
37193
37200:05:17.680 --> 00:05:22.400
373Like you can download it from sketchiest website in the world.ru and still be confident that
374
37594
37600:05:22.400 --> 00:05:25.360
377you're looking at the right thing, right?
378
37995
38000:05:25.360 --> 00:05:27.360
381And then I'm playing Silksong.
382
38396
38400:05:27.360 --> 00:05:31.160
385Those, yeah, that's this example.
386
38797
38800:05:31.160 --> 00:05:34.140
389I have, yeah, we've made streamplace as easy to run as possible.
390
39198
39200:05:34.140 --> 00:05:38.320
393So you can run your own streamplace nodes, syndicate my streams.
394
39599
39600:05:38.340 --> 00:05:41.700
397You get copied over in this sort of trustless, unauthenticated way.
398
399100
40000:05:41.700 --> 00:05:43.220
401And then you see it over there.
402
403101
40400:05:43.220 --> 00:05:48.980
405So the thinking here is we probably won't beat Twitch by making a bigger data center
406
407102
40800:05:48.980 --> 00:05:51.540
409or buying more bandwidth than Amazon.
410
411103
41200:05:51.540 --> 00:05:55.340
413But we might be able to beat them by following the example of BitTorrent, right?
414
415104
41600:05:55.340 --> 00:05:59.220
417You can have lots of decentralized infrastructure that's replicating all of this, but through
418
419105
42000:05:59.220 --> 00:06:02.500
421the magic of digital signatures, you know that the video is authentic.
422
423106
42400:06:02.500 --> 00:06:07.100
425So what's the problem?
426
427107
42800:06:07.100 --> 00:06:09.240
429This isn't very convenient.
430
431108
43200:06:09.240 --> 00:06:13.360
433So when I say slice the video up into one second MP4 files, I'm being very literal about
434
435109
43600:06:13.360 --> 00:06:14.360
437that.
438
439110
44000:06:14.360 --> 00:06:17.440
441If you run streamplace on your computer, you can navigate to this and see lots and lots
442
443111
44400:06:17.440 --> 00:06:20.080
445and lots of one second MP4 files.
446
447112
44800:06:20.080 --> 00:06:22.600
449And when the computer is processing them all and feeding to you as a live stream, that's
450
451113
45200:06:22.600 --> 00:06:23.600
453okay.
454
455114
45600:06:23.600 --> 00:06:27.440
457Afterward, when you want to work with this as a VOD, it's a pain in the ass.
458
459115
46000:06:27.440 --> 00:06:34.480
461So we wanted, this was one of the design goals of VOD for us is how do we handle that?
462
463116
46400:06:34.480 --> 00:06:39.920
465And unfortunately, because we used regular MP4 files, they're non-concatenatable.
466
467117
46800:06:39.920 --> 00:06:45.560
469You can't take two MP4 files, squish all the bytes together and get valid output, right?
470
471118
47200:06:45.560 --> 00:06:47.900
473That's just not MP4 works.
474
475119
47600:06:47.900 --> 00:06:49.980
477It's not valid data there.
478
479120
48000:06:49.980 --> 00:06:55.260
481So you'd have to mux it and the signature that you get there wouldn't match the input.
482
483121
48400:06:55.260 --> 00:06:58.900
485And all of a sudden you've broken this entire cool BitTorrent deprovenance mechanism that
486
487122
48800:06:58.900 --> 00:07:01.940
489I was just describing.
490
491123
49200:07:01.940 --> 00:07:09.560
493So this is the other reason we were already looking at forking C2PA.
494
495124
49600:07:09.560 --> 00:07:13.960
497So here we have a list of signing algorithms.
498
499125
50000:07:13.960 --> 00:07:25.680
501As you can see here, we have the good and virtuous ECDSA signature over a SHA256 hash
502
503126
50400:07:25.680 --> 00:07:37.820
505over the P256 curve, but not over the SCCP256K1 curve, the evil shady curve that's used inside
506
507127
50800:07:37.820 --> 00:07:41.080
509BitTorrent and Ethereum and AppProto.
510
511128
51200:07:41.080 --> 00:07:48.340
513So I think my theory here is that somebody in Adobe had to sell some exec that they weren't
514
515129
51600:07:48.340 --> 00:07:49.940
517making blockchain software here.
518
519130
52000:07:49.940 --> 00:07:51.800
521So we didn't do that kind of signing.
522
523131
52400:07:51.800 --> 00:07:53.020
525We only did this kind of signing.
526
527132
52800:07:53.020 --> 00:07:58.120
529So technically for as long as streamplace has existed, it hasn't been C2PA compatible.
530
531133
53200:07:58.120 --> 00:08:00.940
533And I had been looking for a while to formalize that.
534
535134
53600:08:00.940 --> 00:08:04.920
537So oh, yeah, this is the other.
538
539135
54000:08:04.920 --> 00:08:07.960
541So this is the other.
542
543136
54400:08:07.960 --> 00:08:13.760
545So Adobe is out there right now lobbying, especially European governments and the state
546
547137
54800:08:13.760 --> 00:08:20.680
549of California to require provenance data on everything that you post on social media.
550
551138
55200:08:20.680 --> 00:08:24.200
553This is the reason for the C2PA's existence, getting us ready for a world filled with deep
554
555139
55600:08:24.200 --> 00:08:25.200
557takes.
558
559140
56000:08:25.200 --> 00:08:29.140
561This is not inherently a bad idea.
562
563141
56400:08:29.140 --> 00:08:32.880
565Once anybody can deep fake anything, how do you ever trust what you're looking at?
566
567142
56800:08:32.880 --> 00:08:35.460
569No one technical mechanism can solve that problem.
570
571143
57200:08:35.460 --> 00:08:40.020
573But one way you could be more confident is if there was provenance data embedded in the
574
575144
57600:08:40.020 --> 00:08:43.620
577live stream, where it says, oh, this video is taken from Eli's camera and then edited
578
579145
58000:08:43.620 --> 00:08:48.160
581using this software and makes its way everywhere.
582
583146
58400:08:48.280 --> 00:08:51.320
585The reason Adobe is doing this lobbying is because they want to try and do some regulatory
586
587147
58800:08:51.320 --> 00:08:52.320
589capture.
590
591148
59200:08:52.320 --> 00:08:57.360
593So they want to sell governments, these expensive Creative Cloud subscriptions, and be the only
594
595149
59600:08:57.360 --> 00:09:01.920
597software that you could possibly use in order to do all of that stuff.
598
599150
60000:09:01.920 --> 00:09:07.760
601Also the part I think is really funny is they want you to go pay a CA, like $107 a month
602
603151
60400:09:07.760 --> 00:09:10.440
605for a signing certificate.
606
607152
60800:09:10.440 --> 00:09:12.240
609Let's encrypt and everything never happened.
610
611153
61200:09:12.920 --> 00:09:18.320
613Of course, in the app proto and decentralized web communities, we have DIDs and totally other
614
615154
61600:09:18.320 --> 00:09:23.480
617stacks of how we would handle some of this stuff.
618
619155
62000:09:23.480 --> 00:09:27.360
621How we would handle key custody, how we would handle authenticity, that kind of thing.
622
623156
62400:09:27.360 --> 00:09:33.040
625PLC directories got its own take on everything.
626
627157
62800:09:33.040 --> 00:09:39.120
629Some good ideas need to be modernized and not try and pay these vendors a bunch of money
630
631158
63200:09:39.120 --> 00:09:41.640
633for certificates.
634
635159
63600:09:41.720 --> 00:09:48.160
637I said all of these things out loud a lot and the good folks at the IPFS Foundation
638
639160
64000:09:48.160 --> 00:09:50.960
641and the DASL project were very, very receptive to it.
642
643161
64400:09:50.960 --> 00:09:53.240
645So they've given us a grant.
646
647162
64800:09:53.240 --> 00:09:59.040
649Everything you see past this point in the presentation is a result of the grant that
650
651163
65200:09:59.040 --> 00:10:01.800
653we got from the IPFS Foundation.
654
655164
65600:10:01.800 --> 00:10:07.880
657So we're working on two specs with them, Stupa and Muxal.
658
659165
66000:10:07.880 --> 00:10:10.960
661Stupa is the simple standard for provenance and authenticity.
662
663166
66400:10:10.960 --> 00:10:13.160
665This is the simpler of the two standards.
666
667167
66800:10:13.160 --> 00:10:14.480
669It's very much, thank you, Ted.
670
671168
67200:10:14.480 --> 00:10:15.480
673Look at that.
674
675169
67600:10:15.480 --> 00:10:16.760
677Ted got me a glass of water.
678
679170
68000:10:16.760 --> 00:10:17.760
681Everybody thank Ted.
682
683171
68400:10:17.760 --> 00:10:19.760
685That was awesome.
686
687172
68800:10:23.280 --> 00:10:29.280
689Stupa is our, I don't know what makes a fork a hostile fork, but it's definitely a fork
690
691173
69200:10:29.280 --> 00:10:32.760
693of the C2PA that takes out all the things.
694
695174
69600:10:32.760 --> 00:10:34.400
697It doesn't really, it actually doesn't take out anything.
698
699175
70000:10:34.400 --> 00:10:38.080
701Like if you want to pay DID just start at 200 bucks a month, you totally can.
702
703176
70400:10:38.080 --> 00:10:39.920
705But we have some different opinions about that.
706
707177
70800:10:39.920 --> 00:10:40.920
709We have DIDS, right?
710
711178
71200:10:40.920 --> 00:10:47.120
713So instead of signing it with some cert that you're given by a CA, you sign it with a signing
714
715179
71600:10:47.120 --> 00:10:53.200
717key that has a provenance chain back to your at-proto identity, right?
718
719180
72000:10:53.200 --> 00:11:00.240
721And then we also make it consistent with DASL, the C2PA signatures, C2PA manifests rather
722
723181
72400:11:00.240 --> 00:11:01.800
725already use Seaboard.
726
727182
72800:11:01.800 --> 00:11:06.640
729So we're just upgrading it to use Drizzle, Drizzle DASLs.
730
731183
73200:11:06.640 --> 00:11:10.240
733Very strict subset of Seaboard used in at-proto, right?
734
735184
73600:11:10.240 --> 00:11:11.240
737That's Stupa.
738
739185
74000:11:11.240 --> 00:11:12.240
741That's all of Stupa.
742
743186
74400:11:12.240 --> 00:11:14.140
745The rest of the presentation is about Muxill because it's way more complicated.
746
747187
74800:11:14.140 --> 00:11:16.920
749This is just a little change that we're making here.
750
751188
75200:11:16.920 --> 00:11:18.080
753Would love if they upstreamed it.
754
755189
75600:11:18.080 --> 00:11:25.920
757Would love if there were DIDS and K256 signing in C2PA.
758
759190
76000:11:25.920 --> 00:11:29.920
761So let's talk about the design goals for Muxill.
762
763191
76400:11:29.920 --> 00:11:33.960
765This is basically what changes do we need to make to those MP4 files that I described
766
767192
76800:11:33.960 --> 00:11:37.840
769before in order to make them appropriate for VOD.
770
771193
77200:11:37.840 --> 00:11:41.800
773So you don't have thousands and thousands of MP4 files on your computer after a long
774
775194
77600:11:41.800 --> 00:11:43.400
777livestream.
778
779195
78000:11:43.400 --> 00:11:46.840
781So we want to keep the property that they're self-certifying.
782
783196
78400:11:46.840 --> 00:11:50.920
785It's awesome that you can just find one of these files and then go verify its provenance
786
787197
78800:11:50.920 --> 00:11:51.920
789chain.
790
791198
79200:11:51.920 --> 00:11:55.780
793It shouldn't be, you shouldn't require external data, right?
794
795199
79600:11:55.780 --> 00:12:01.240
797As a design goal, we want to support livestream to VOD so that what video engineers call DVR,
798
799200
80000:12:01.240 --> 00:12:05.040
801if you're watching a livestream, that you can seek back and see what happened one minute
802
803201
80400:12:05.040 --> 00:12:08.400
805ago, two minutes ago, three minutes ago, that kind of thing.
806
807202
80800:12:08.400 --> 00:12:10.160
809It would be nice if it's a useful format.
810
811203
81200:12:10.160 --> 00:12:13.240
813I don't want to give you some opaque seaboard blob or something.
814
815204
81600:12:13.240 --> 00:12:18.080
817A design goal of this is that at the end of it, you have, at the end of a 24-hour livestream,
818
819205
82000:12:18.080 --> 00:12:21.840
821you should have a 24-hour MP4 file on your computer.
822
823206
82400:12:21.840 --> 00:12:25.840
825Easiest to work with, maximally compatible, preserves all of the provenance information
826
827207
82800:12:25.840 --> 00:12:28.040
829I was describing.
830
831208
83200:12:28.040 --> 00:12:31.040
833And it should be streamable with minimal overhead.
834
835209
83600:12:31.040 --> 00:12:34.720
837I'm not going to get too deep into media over quick in this presentation, though I
838
839210
84000:12:34.720 --> 00:12:36.400
841would love to.
842
843211
84400:12:36.400 --> 00:12:45.720
845But basically, we don't want to do a bunch of extra effort to go from the canonical format
846
847212
84800:12:45.720 --> 00:12:49.680
849that we're going to use for all of this to actually streaming it to users.
850
851213
85200:12:49.680 --> 00:12:52.800
853We shouldn't need to re-encode or anything like that.
854
855214
85600:12:52.800 --> 00:12:57.920
857Unfortunately, that is an impossible series of constraints.
858
859215
86000:12:57.920 --> 00:13:02.560
861Fundamentally, the reason being that if the output is going to be just an MP4 file on
862
863216
86400:13:02.560 --> 00:13:06.640
865your computer, that is completely different than the format the media over quick uses
866
867217
86800:13:06.640 --> 00:13:11.240
869that's going to be useful for sending things to users, in particular with things like multiple
870
871218
87200:13:11.240 --> 00:13:12.240
873tracks.
874
875219
87600:13:12.240 --> 00:13:20.000
877We really want to do multi-track video, multi-track audio, 720p, a bunch of other 1080p, different
878
879220
88000:13:20.000 --> 00:13:22.800
881audio formats, AAC and Opus for different things.
882
883221
88400:13:22.800 --> 00:13:27.320
885All of that complexity we would like to be able to package in this one file, and that
886
887222
88800:13:27.320 --> 00:13:31.000
889skyrockets the bandwidth that you would use to send it out to people.
890
891223
89200:13:31.000 --> 00:13:34.440
893You don't want to send them every rendition, you want to send them just one.
894
895224
89600:13:34.440 --> 00:13:37.800
897So, how do we get around that?
898
899225
90000:13:37.800 --> 00:13:39.280
901And the answer is we mux.
902
903226
90400:13:39.280 --> 00:13:42.640
905This is why it's called muxle.
906
907227
90800:13:42.640 --> 00:13:51.240
909So, the key insight here is that the archival format, so this is to say the MP4 file on
910
911228
91200:13:51.240 --> 00:13:57.080
913your computer, the streaming format, which is the format the video is in when it goes
914
915229
91600:13:57.080 --> 00:14:03.840
917over media over quick, and streams to a user, and the self-certifying format that has this
918
919230
92000:14:03.840 --> 00:14:08.280
921intact signature that you use to validate that the media is who it says it is and get
922
923231
92400:14:08.280 --> 00:14:15.880
925all the nice metadata, they don't all have to be the same format.
926
927232
92800:14:15.880 --> 00:14:20.840
929As long as we can deterministically mux between them.
930
931233
93200:14:20.840 --> 00:14:24.360
933As long as if you have one of these formats, there is a deterministic algorithm you can
934
935234
93600:14:24.360 --> 00:14:28.120
937use to turn it into any one of these other formats.
938
939235
94000:14:28.120 --> 00:14:31.320
941So we've accomplished this with Wasm, primarily.
942
943236
94400:14:31.320 --> 00:14:35.440
945Wasm, especially the latest version of Wasm, has a fully deterministic profile.
946
947237
94800:14:35.440 --> 00:14:40.960
949Even short of that, you know, Rust compiled to Wasm and then you pipe some bytes through
950
951238
95200:14:40.960 --> 00:14:44.960
953it, you're very, very likely to get the same bytes out through the output, right?
954
955239
95600:14:44.960 --> 00:14:51.280
957So this is, yeah, so let's get into the different formats that we're using inside of here.
958
959240
96000:14:51.280 --> 00:14:55.600
961I'm going to get deep into MP4 file specifics.
962
963241
96400:14:55.600 --> 00:15:00.520
965I wouldn't wish this upon anyone having to dive this deep into the MP4 specs.
966
967242
96800:15:00.520 --> 00:15:06.160
969I had to pay $300 for a PDF file.
970
971243
97200:15:06.160 --> 00:15:09.400
973So yes, this is the whole point of StreamPlaces.
974
975244
97600:15:09.400 --> 00:15:14.920
977These are the hard work we do, the hard problems we solve, so none of you have to, right?
978
979245
98000:15:15.840 --> 00:15:22.280
981So we, the base primitives here that are part of Muxle.
982
983246
98400:15:22.280 --> 00:15:25.880
985First we have video metadata.
986
987247
98800:15:25.880 --> 00:15:31.820
989I borrow a lot of this terminology from a spec called Hang that's from Luke Curley who
990
991248
99200:15:31.820 --> 00:15:35.840
993created the media over QuickSpec.
994
995249
99600:15:35.840 --> 00:15:40.920
997This is, catalog is his term for this, but this is all of the metadata that you need
998
999250
100000:15:40.920 --> 00:15:41.920
1001to understand the video.
1002
1003251
100400:15:41.920 --> 00:15:46.160
1005I can't just, video decoders won't just accept some random video bytes.
1006
1007252
100800:15:46.160 --> 00:15:52.360
1009You have to say, no, these video bytes are, for example, 1920 by 1080 at 60 FPS.
1010
1011253
101200:15:52.360 --> 00:15:57.320
1013You've got the time scale and then a canonical track ID for everything that goes into this,
1014
1015254
101600:15:57.320 --> 00:15:58.320
1017right?
1018
1019255
102000:15:58.320 --> 00:15:59.320
1021How many channels is the audio?
1022
1023256
102400:15:59.320 --> 00:16:02.080
1025I don't know if it's listed in here, but this would have stuff like what language is the
1026
1027257
102800:16:02.080 --> 00:16:03.080
1029audio.
1030
1031258
103200:16:03.080 --> 00:16:06.200
1033If we've got the audio translated into several different languages, that would be included
1034
1035259
103600:16:06.200 --> 00:16:07.520
1037in this metadata.
1038
1039260
104000:16:07.520 --> 00:16:14.320
1041This is nice to separate out because from a low latency transmission perspective, you
1042
1043261
104400:16:14.320 --> 00:16:15.880
1045don't want to repeat this stuff, right?
1046
1047262
104800:16:15.880 --> 00:16:19.640
1049You don't want to say, hey, 1080p video, 1080p video, you know it's 1080p video because the
1050
1051263
105200:16:19.640 --> 00:16:22.500
1053last 500 segments were 1080p video, right?
1054
1055264
105600:16:22.500 --> 00:16:28.040
1057So we send, we can send this once at the start and not have to repeat it.
1058
1059265
106000:16:28.040 --> 00:16:32.520
1061I'm not quite getting into the at-proto stuff here, but just at the bottom there, a little
1062
1063266
106400:16:32.520 --> 00:16:36.520
1065teaser of what this might look like if you wanted to put it in that proto repository,
1066
1067267
106800:16:36.520 --> 00:16:40.120
1069this could be a place.stream.muxle.catalog record.
1070
1071268
107200:16:40.120 --> 00:16:43.680
1073We'll get to how it actually works in a minute.
1074
1075269
107600:16:43.680 --> 00:16:45.720
1077This lets us make init segments.
1078
1079270
108000:16:45.720 --> 00:16:47.240
1081Now we're talking about MP4 atoms.
1082
1083271
108400:16:47.240 --> 00:16:50.480
1085This is fun.
1086
1087272
108800:16:50.480 --> 00:16:59.400
1089So this data represented as like JSON or CBOR or whatever and stored in your at-proto repository
1090
1091273
109200:16:59.400 --> 00:17:05.280
1093is enough to create, actually deterministically create the start of the MP4 file, which is
1094
1095274
109600:17:05.280 --> 00:17:06.280
1097called the init segment.
1098
1099275
110000:17:06.280 --> 00:17:09.760
1101It's the very beginning of the MP4 file that contains the file type atom telling you this
1102
1103276
110400:17:09.760 --> 00:17:16.600
1105is an MP4 file and the move atom that describes, for example, the duration of the video, what
1106
1107277
110800:17:16.600 --> 00:17:17.600
1109all the tracks are.
1110
1111278
111200:17:17.600 --> 00:17:22.040
1113There's a bunch of, this is like the MP4 encoding of all that metadata that I just described.
1114
1115279
111600:17:22.040 --> 00:17:26.840
1117This is the beginning of the muxle file init segment.
1118
1119280
112000:17:26.840 --> 00:17:33.640
1121We then split up the video into muxle segments.
1122
1123281
112400:17:33.640 --> 00:17:37.680
1125This again is borrowed, this is pretty much a verbatim hang CMAF, which is part of the
1126
1127282
112800:17:37.680 --> 00:17:41.440
1129video over QuickSpec, which is awesome because that means it's going to stream very efficiently
1130
1131283
113200:17:41.440 --> 00:17:45.000
1133to users eventually.
1134
1135284
113600:17:45.000 --> 00:17:46.920
1137This is just repeated.
1138
1139285
114000:17:46.920 --> 00:17:52.040
1141Every frame gets its own, what's called a muf and an MDAT, so little segments, little
1142
1143286
114400:17:52.040 --> 00:18:00.880
1145slivers of the MP4 file that represent each frame, each video or audio frame, essentially.
1146
1147287
114800:18:00.880 --> 00:18:05.120
1149Easy enough, but we're going to do a lot with these in a minute.
1150
1151288
115200:18:05.120 --> 00:18:12.120
1153And then we go back to that stupa specification I was talking about a second ago, the CTPA
1154
1155289
115600:18:12.120 --> 00:18:13.120
1157stuff.
1158
1159290
116000:18:13.120 --> 00:18:18.160
1161So this is, we can take, this is the canonical signed format.
1162
1163291
116400:18:18.160 --> 00:18:22.640
1165This is the thing that you, when you get this format, you can validate the signature, validate
1166
1167292
116800:18:22.640 --> 00:18:23.640
1169the provenance claim.
1170
1171293
117200:18:23.640 --> 00:18:30.480
1173No, this is actually definitely Eli's CTPA signed video file.
1174
1175294
117600:18:30.480 --> 00:18:34.160
1177This is actually me beating Trabio or whatever.
1178
1179295
118000:18:34.160 --> 00:18:38.480
1181And this is, this is great.
1182
1183296
118400:18:38.480 --> 00:18:43.960
1185This is not necessarily the best format for archival and playback.
1186
1187297
118800:18:43.960 --> 00:18:49.520
1189So one key insight and the Eureka moment I had when making this is like, okay, so this
1190
1191298
119200:18:49.520 --> 00:18:54.640
1193is like the canonical thing, but you wouldn't ever write this to your hard drive.
1194
1195299
119600:18:54.640 --> 00:18:59.960
1197Or if you did because you're repeating the beginning of the file, the file type stuff,
1198
1199300
120000:18:59.960 --> 00:19:03.560
1201this is how, this would get you right back to one second MP4 files on your computer
1202
1203301
120400:19:03.560 --> 00:19:05.320
1205over and over and over.
1206
1207302
120800:19:05.320 --> 00:19:10.360
1209So while this is like, you consider this like the base unit of stream play streaming or
1210
1211303
121200:19:10.360 --> 00:19:15.040
1213a VOD or what have you, this, yeah, you'd never actually write one of these to the hard
1214
1215304
121600:19:15.040 --> 00:19:17.720
1217drive unless you were like debugging or something like that.
1218
1219305
122000:19:17.720 --> 00:19:19.360
1221What would you write to the hard drive?
1222
1223306
122400:19:19.360 --> 00:19:20.360
1225You ask.
1226
1227307
122800:19:20.360 --> 00:19:23.640
1229You would write a muxal archive.
1230
1231308
123200:19:23.640 --> 00:19:24.640
1233Blake three.
1234
1235309
123600:19:24.640 --> 00:19:26.880
1237I know, hang out with that proto people.
1238
1239310
124000:19:26.880 --> 00:19:28.840
1241I know a lot of protocol engineers.
1242
1243311
124400:19:28.840 --> 00:19:32.480
1245Every one of them has had a moment where they take me aside and they're like, you should
1246
1247312
124800:19:32.480 --> 00:19:35.520
1249really be using Blake three for this stuff.
1250
1251313
125200:19:35.520 --> 00:19:39.040
1253And I agree with them eventually.
1254
1255314
125600:19:39.040 --> 00:19:41.440
1257So this is what you would write to your hard drive, right?
1258
1259315
126000:19:41.440 --> 00:19:44.040
1261So this is the in it segment.
1262
1263316
126400:19:44.040 --> 00:19:46.760
1265This is the part where you say it's 1080p video.
1266
1267317
126800:19:46.760 --> 00:19:49.240
1269Then you have all of these.
1270
1271318
127200:19:49.240 --> 00:19:51.100
1273Each of these is what's called a gop segment.
1274
1275319
127600:19:51.100 --> 00:19:55.080
1277So a key frame, a video followed by a bunch of other frames and then a key frame and then
1278
1279320
128000:19:55.080 --> 00:19:57.160
1281a bunch of other frames.
1282
1283321
128400:19:57.160 --> 00:20:03.640
1285And the cool thing about this is we've totally messed up the signature now, right?
1286
1287322
128800:20:03.640 --> 00:20:09.680
1289Because we, the signature is over this file with a in it segment and a video gop and an
1290
1291323
129200:20:09.680 --> 00:20:11.560
1293audio gop and then a manifest, right?
1294
1295324
129600:20:11.560 --> 00:20:14.000
1297This is, this is the thing that we signed.
1298
1299325
130000:20:14.000 --> 00:20:15.360
1301This doesn't look like that at all.
1302
1303326
130400:20:15.360 --> 00:20:18.120
1305I've even just kind of put the manifest at the, at the end there.
1306
1307327
130800:20:18.120 --> 00:20:22.120
1309But because we have deterministic muxing tools, we can recover this.
1310
1311328
131200:20:22.120 --> 00:20:27.640
1313We can, or we can recover the signed canonical thing, right?
1314
1315329
131600:20:27.640 --> 00:20:34.920
1317This format, however, is really, really useful for VOD because if you are, I'll show you
1318
1319330
132000:20:34.920 --> 00:20:36.800
1321why.
1322
1323331
132400:20:36.800 --> 00:20:39.740
1325See it's like this.
1326
1327332
132800:20:39.740 --> 00:20:42.880
1329So this is a HLS playlist.
1330
1331333
133200:20:42.880 --> 00:20:48.280
1333This is how you, you don't know it, but most of the time you've played video on the internet.
1334
1335334
133600:20:48.280 --> 00:20:51.440
1337You've had one of these happening in the background.
1338
1339335
134000:20:51.440 --> 00:20:55.160
1341And what this does is takes all of those, this is just the video playlist.
1342
1343336
134400:20:55.160 --> 00:20:56.640
1345This just tells you how to do the video.
1346
1347337
134800:20:56.640 --> 00:21:01.560
1349The audio is referenced in a, in a different, in a different manifest.
1350
1351338
135200:21:01.560 --> 00:21:08.640
1353And basically what this gives you is a byte range in an index into that file.
1354
1355339
135600:21:08.640 --> 00:21:11.120
1357So you can say this, this year says, this is one second of video.
1358
1359340
136000:21:11.120 --> 00:21:12.760
1361You can find it at this index of this file.
1362
1363341
136400:21:12.760 --> 00:21:13.760
1365This is one second of video.
1366
1367342
136800:21:13.760 --> 00:21:16.480
1369You can find it at this index of this file.
1370
1371343
137200:21:16.480 --> 00:21:19.200
1373And this is all, this is all you need for efficient VOD playback.
1374
1375344
137600:21:19.200 --> 00:21:22.640
1377If you're doing it live, there's disadvantages to doing it this way.
1378
1379345
138000:21:22.640 --> 00:21:25.120
1381You probably want to use media over quick and some of the other formats that we talked
1382
1383346
138400:21:25.120 --> 00:21:26.120
1385about.
1386
1387347
138800:21:26.120 --> 00:21:28.520
1389But for VOD, this is really, really good.
1390
1391348
139200:21:28.520 --> 00:21:33.160
1393And we've achieved one of our design goals because all of these, it's just referencing
1394
1395349
139600:21:33.160 --> 00:21:37.080
1397different byte ranges in archive.muxle.mp4, right?
1398
1399350
140000:21:37.080 --> 00:21:41.720
1401So we've, the thing that is, I've been saying on your computer, but the thing for video,
1402
1403351
140400:21:41.720 --> 00:21:48.120
1405the thing that's in your app repository is, is just one big MP4 file.
1406
1407352
140800:21:48.120 --> 00:21:52.560
1409It's really easy to understand.
1410
1411353
141200:21:52.560 --> 00:22:00.920
1413The other, the other thing we get from this is, is the Blake three, Sid, the magic of
1414
1415354
141600:22:00.920 --> 00:22:01.920
1417Blake three.
1418
1419355
142000:22:01.920 --> 00:22:04.920
1421Why, why was it that all those video engineers were telling me that I needed to use Blake
1422
1423356
142400:22:04.920 --> 00:22:05.920
1425three?
1426
1427357
142800:22:05.920 --> 00:22:14.240
1429It's because this Blake three hash is a Merkle tree over this file that you see here, which
1430
1431358
143200:22:14.240 --> 00:22:19.960
1433means you can request to just that part that says track one, gop one there.
1434
1435359
143600:22:19.960 --> 00:22:25.960
1437And through cryptographic verification, you can be 100% confident that that is the correct
1438
1439360
144000:22:25.960 --> 00:22:27.960
1441data that you've pulled out of there, right?
1442
1443361
144400:22:27.960 --> 00:22:32.080
1445You can verify, yes, this is in fact part of this Blake three, Sid, which is really,
1446
1447362
144800:22:32.080 --> 00:22:37.440
1449really useful when you're doing something like a CDN because then you can make all these,
1450
1451363
145200:22:37.440 --> 00:22:40.560
1453you can have be backing it with just one big file.
1454
1455364
145600:22:40.560 --> 00:22:42.400
1457You can make these byte range requests.
1458
1459365
146000:22:42.400 --> 00:22:47.120
1461You still get the cryptographic integrity that like, oh yes, that, that, that hash matches
1462
1463366
146400:22:47.120 --> 00:22:50.600
1465what I saw in Eli's app repository.
1466
1467367
146800:22:50.600 --> 00:22:53.120
1469So this is a really, really good format for this.
1470
1471368
147200:22:53.120 --> 00:22:54.960
1473Um, cool.
1474
1475369
147600:22:54.960 --> 00:23:02.680
1477So yes, three different formats that we, uh, uh, that we have here.
1478
1479370
148000:23:02.680 --> 00:23:07.320
1481So, um, the archival format, which is the big MP4 file that goes in your app, proto
1482
1483371
148400:23:07.320 --> 00:23:12.880
1485repository, the self certifying format, which is the part that has the, uh, C2P a signature
1486
1487372
148800:23:12.880 --> 00:23:16.760
1489attached and the streaming format, which is just when you're actually sending it out,
1490
1491373
149200:23:16.760 --> 00:23:19.360
1493you just send, uh, you just send this part, right?
1494
1495374
149600:23:19.360 --> 00:23:25.280
1497You stream this stuff, uh, each, each frame of video and audio directly to users.
1498
1499375
150000:23:25.280 --> 00:23:29.840
1501So for all the at proto people that didn't care about all the different structures of
1502
1503376
150400:23:29.840 --> 00:23:33.600
1505the MP4 file, how do you use all of this?
1506
1507377
150800:23:33.600 --> 00:23:36.280
1509We're not quite ready for it, but the very first vods available on stream play.
1510
1511378
151200:23:36.280 --> 00:23:40.160
1513Most are going to follow this format and it's going to be all of the talks from this
1514
1515379
151600:23:40.160 --> 00:23:41.160
1517conference.
1518
1519380
152000:23:41.160 --> 00:23:44.080
1521Uh, they will be published to at proto repository.
1522
1523381
152400:23:44.080 --> 00:23:45.840
1525Um, and you'll be able to work with them.
1526
1527382
152800:23:45.840 --> 00:23:48.560
1529This is a little preview of what this looks like.
1530
1531383
153200:23:48.560 --> 00:23:54.760
1533Uh, so we have a, uh, yeah.
1534
1535384
153600:23:54.760 --> 00:23:59.600
1537So the man that as you might expect the, the lexicon type for this is a place.stream.video.
1538
1539385
154000:23:59.600 --> 00:24:04.460
1541It's got, uh, things like creator, um, some of the, some of this metadata in here.
1542
1543386
154400:24:04.460 --> 00:24:06.740
1545This is like, I'm pretending this is the one for this talk.
1546
1547387
154800:24:06.740 --> 00:24:09.380
1549I don't have a vod for this talk cause I'm still doing this talk.
1550
1551388
155200:24:09.380 --> 00:24:11.220
1553So you don't know what the hash is yet.
1554
1555389
155600:24:11.220 --> 00:24:14.820
1557Um, it's got, it's just as I said, it's just a blob.
1558
1559390
156000:24:14.820 --> 00:24:16.140
1561It's a video MP4 file.
1562
1563391
156400:24:16.140 --> 00:24:19.500
1565Um, but it is very, very easily cacheable.
1566
1567392
156800:24:19.500 --> 00:24:22.700
1569Um, you've got a nanosecond duration in there.
1570
1571393
157200:24:22.700 --> 00:24:27.280
1573Uh, we, the design constraints for this I've been targeting that the maximum length of
1574
1575394
157600:24:27.280 --> 00:24:29.860
1577one of these is going to be 24 hours.
1578
1579395
158000:24:29.860 --> 00:24:33.660
1581Um, because, uh, at a certain point it gets ridiculous.
1582
1583396
158400:24:33.860 --> 00:24:36.860
1585Yeah.
1586
1587397
158800:24:36.860 --> 00:24:38.540
1589Uh, and I don't want to like overflow the nanosecond duration, but if you've got a 24
1590
1591398
159200:24:38.540 --> 00:24:42.220
1593seven live stream, that seems like a reasonable primitive that like each day of streaming
1594
1595399
159600:24:42.220 --> 00:24:46.300
1597that you would stream into would become its own vod, uh, with a 24 hour duration.
1598
1599400
160000:24:46.300 --> 00:24:47.300
1601Right.
1602
1603401
160400:24:47.300 --> 00:24:49.180
1605Um, and then it's got a live stream reference.
1606
1607402
160800:24:49.180 --> 00:24:51.700
1609So, uh, yeah.
1610
1611403
161200:24:51.700 --> 00:24:53.300
1613So, uh, all of this will be available.
1614
1615404
161600:24:53.300 --> 00:24:54.300
1617Yeah.
1618
1619405
162000:24:54.300 --> 00:24:56.140
1621I was hoping to have all of this available and I was like, Oh, I got an ounce in this
1622
1623406
162400:24:56.140 --> 00:24:57.140
1625talk and it's going to be big.
1626
1627407
162800:24:57.140 --> 00:24:58.340
1629And we're like really, really close.
1630
1631408
163200:24:58.340 --> 00:25:01.820
1633But I wasn't, I didn't want to push a bunch of changes to stream place right before we
1634
1635409
163600:25:01.820 --> 00:25:04.020
1637did all the live streaming and screw everything else up.
1638
1639410
164000:25:04.020 --> 00:25:05.020
1641Right.
1642
1643411
164400:25:05.020 --> 00:25:08.700
1645So I, I, I did try to do that.
1646
1647412
164800:25:08.700 --> 00:25:10.860
1649Uh, we did that.
1650
1651413
165200:25:10.860 --> 00:25:13.740
1653Uh, I did at about seven 10 this morning.
1654
1655414
165600:25:13.740 --> 00:25:15.900
1657I'm like, all right, let's push the muxal changes.
1658
1659415
166000:25:15.900 --> 00:25:16.900
1661Let's see.
1662
1663416
166400:25:16.900 --> 00:25:20.660
1665And then immediately that laptop couldn't stream into stream place anymore for whatever
1666
1667417
166800:25:20.660 --> 00:25:21.660
1669reason.
1670
1671418
167200:25:21.660 --> 00:25:23.220
1673So I was like, Nope, Nope, back revert.
1674
1675419
167600:25:23.220 --> 00:25:24.780
1677We're gonna, we'll do it.
1678
1679420
168000:25:24.780 --> 00:25:25.780
1681We'll do it after.
1682
1683421
168400:25:25.780 --> 00:25:29.740
1685Um, so that's all by way of saying this is all very, very close.
1686
1687422
168800:25:30.100 --> 00:25:33.700
1689Um, and we're hoping to give it to the community very, very soon.
1690
1691423
169200:25:34.260 --> 00:25:37.180
1693Um, and, uh, yeah, and then build it with everybody, right?
1694
1695424
169600:25:37.180 --> 00:25:38.300
1697So we don't have a front end for it.
1698
1699425
170000:25:38.340 --> 00:25:41.780
1701Um, I'm going to challenge the, we're going to do a little VOD jam and say, Hey, at
1702
1703426
170400:25:41.780 --> 00:25:44.380
1705proto community, here's the videos, build me a front end for it.
1706
1707427
170800:25:44.580 --> 00:25:49.100
1709Given that without me asking, we got three front ends for stream place in the last
1710
1711428
171200:25:49.100 --> 00:25:52.740
1713three days, I feel like in the vibe coding era, we're gonna, we're gonna get some
1714
1715429
171600:25:52.740 --> 00:25:53.380
1717submissions.
1718
1719430
172000:25:53.380 --> 00:25:57.420
1721If you submit one of these, uh, you're going to earn a badge next to your chat
1722
1723431
172400:25:57.420 --> 00:25:58.860
1725name in stream place.
1726
1727432
172800:25:59.340 --> 00:26:02.220
1729Um, from now until the end of time.
1730
1731433
173200:26:03.100 --> 00:26:06.100
1733So, uh, yeah, that's it.
1734
1735434
173600:26:06.140 --> 00:26:07.620
1737That's how stream place works VOD.
1738
1739435
174000:26:19.220 --> 00:26:19.500
1741Great.
1742
1743436
174400:26:21.460 --> 00:26:21.900
1745Awesome.
1746
1747437
174800:26:27.020 --> 00:26:27.300
1749Yeah.
1750
1751438
175200:26:29.380 --> 00:26:30.340
1753Yeah.
1754
1755439
175600:26:30.340 --> 00:26:34.780
1757So the, the big alternative, um, why MP4, uh, there's a couple of reasons.
1758
1759440
176000:26:35.020 --> 00:26:39.940
1761Um, one because, uh, it's the most ubiquitous media format and the, that's
1762
1763441
176400:26:39.940 --> 00:26:41.420
1765the most highly compatible across everything.
1766
1767442
176800:26:41.940 --> 00:26:47.860
1769Um, the second is, um, it gives us the, uh, the, the, the media over quick
1770
1771443
177200:26:47.860 --> 00:26:50.140
1773stuff, um, tends to support it a lot already.
1774
1775444
177600:26:50.660 --> 00:26:54.700
1777Um, the, also the FM, uh, so this is like CMAF.
1778
1779445
178000:26:54.700 --> 00:26:58.140
1781Back to the, this thing, this is like CMAF MP4 playback.
1782
1783446
178400:26:58.180 --> 00:27:02.500
1785Um, and the advantage here is it lets you, um, separate out the, it gives you that
1786
1787447
178800:27:02.500 --> 00:27:05.780
1789lack of redundancy that I was describing where the in it segment isn't, there are
1790
1791448
179200:27:05.780 --> 00:27:08.980
1793other formats that embed all of that in a data in every segment, but we don't
1794
1795449
179600:27:08.980 --> 00:27:11.820
1797actually want that because it's redundant for, for a long video.
1798
1799450
180000:27:11.820 --> 00:27:13.900
1801So, um, yeah, those reasons.
1802
1803451
180400:27:14.900 --> 00:27:16.420
1805Sure.
1806
1807452
180800:27:16.420 --> 00:27:21.380
1809Uh, the question was, uh, the, the question was, uh, the, the, the, the, the,
1810
1811453
181200:27:22.060 --> 00:27:23.100
1813sure, sure, sure.
1814
1815454
181600:27:23.140 --> 00:27:28.220
1817Uh, the question was why VP nine instead of, or why H two six four instead
1818
1819455
182000:27:28.220 --> 00:27:31.740
1821of like VP nine or AV one, no reason other than maximally, maximum
1822
1823456
182400:27:31.740 --> 00:27:36.080
1825compatibility right now, we really, really want, uh, AV one in, in stream
1826
1827457
182800:27:36.080 --> 00:27:40.900
1829place, um, we fully intend to support AV one as much as we do H two six four,
1830
1831458
183200:27:40.900 --> 00:27:44.540
1833especially when we do stuff like, like, uh, uh, I want to replace to do a lot
1834
1835459
183600:27:44.540 --> 00:27:48.020
1837of things that no other streaming platforms do, like for example, uh, like
1838
1839460
184000:27:48.020 --> 00:27:54.100
1841four K 120 FPS AV one video would be SISIC, uh, uh, can't even do it.
1842
1843461
184400:27:54.100 --> 00:27:55.380
1845I've tried to do it with H two six four.
1846
1847462
184800:27:55.380 --> 00:27:59.380
1849It just like doesn't know encoder can even come close to handling that.
1850
1851463
185200:27:59.380 --> 00:28:00.820
1853So, um, yeah, yeah.
1854
1855464
185600:28:00.860 --> 00:28:02.980
1857Uh, in terms of codec support, we want to support like every
1858
1859465
186000:28:02.980 --> 00:28:04.060
1861codec that it makes sense to.
1862
1863466
186400:28:04.420 --> 00:28:07.040
1865We just started with this because we're not quite in a world where I could
1866
1867467
186800:28:07.040 --> 00:28:08.980
1869probably get away with AV one only.
1870
1871468
187200:28:09.020 --> 00:28:13.260
1873And we would have needed an H two six four backup anyway, in that context.
1874
1875469
187600:28:13.260 --> 00:28:15.800
1877That's why we started with H two six four, but yeah, definitely
1878
1879470
188000:28:15.800 --> 00:28:16.700
1881want to support lots of codex.
1882
1883471
188400:28:18.020 --> 00:28:18.520
1885Yeah.
1886
1887472
188800:28:24.560 --> 00:28:24.900
1889Thank you.
1890