This is a video about video
Ғылым және технология
Follow me on Mastodon: hachyderm.io/@fasterthanlime
Support me on Patreon or GitHub: fasterthanli.me/donate
What's in an MP4 file? How is video encoded? Who would build their own video streaming platform? And why?? Oh gosh why.
00:00 I'd like to tell you a story
01:42 The quest for 4K60
05:13 Almost, but not quite 60FPS
07:36 Making my own player
09:34 Video streaming crash course
13:32 The structure of an MP4 file
16:55 MPEG-DASH, codecs, and bitrates
19:24 Measuring image quality (PSNR, VMAF)
21:23 Adaptive Bitrate Streaming (fragments/segments)
22:52 Vibe check
23:58 Demo, init and index segments
27:04 Frame types, optimizing the pipeline
31:25 Frame re-ordering, DTS vs PTS, GOP
37:11 Fragmenting is hard, let's go shopping
38:53 Play me off, Johnny
Why is TV 29.97 FPS by Stand-Up Maths: • Why is TV 29.97 frames...
Пікірлер: 80
This video did not feel like 40 minutes. Fantastic scripting and presentation!
Feels like this man needs a hug. Joking aside, you've perfectly captured that mood when one of my friends dives into a tech rabbit hole of "but how does it really work?" for weeks and comes back explaining the lovecraftian horrors they discovered. The curse being, of course, that now that you've gained the forbidden knowledge it burns in your mind until you and your therapist, in a joint effort, seal it away somewhere down in the subconscious lizard parts of your brain. I work in embedded, this happens far too often.
Alt title: fasterthanlime descends into madness trying to recreate convenience of KZread playback
@fasterthanlime
Жыл бұрын
This was the video description but then everyone's like uwu be more descriptive. So this is all you get now!
This is the kind of programmer's rabbithole rant I just can't get enough of. Everything I touch every time I start to do something leads to one of these. But you turn them into watchable videos. So more please!
Show this to the bootcamps and tutorials who promise you that you'll be capable to build a youtube clone in few hours. Great in depth video.
I did some work with 24-hour surveillance videos and trying to jump to specific timestamps using ffmpeg... what a nightmare. I ended up using OCR to read the timestamps that were displayed in the surveillance video because detecting text in the video was EASIER than jumping to specific frames in the video file... 🤯 Video is nuts
Amos, blink 29.97 times if you're not OK and need help, we are here for you
I didn't realize how much I'd learned about video by being really into media piracy for a while
@fasterthanlime
Жыл бұрын
I will neither confirm nor deny how true that is for me
The more you learn about computers, the more you should be amazed that anything works at all.
Good lord, that all seems bonkers. Makes me wonder if someone will eventually come up with a video-equivalent of the Quite OK Image format (it's simply amazing... keyword "simply").
I like that from your site you embedded this KZread video explaining how you were self-hosting. I had to stop at that point to check where I was.
@fasterthanlime
Жыл бұрын
Yeah I uhhh.. just in case that article got really popular, chose the KZread embed there. Also, I don't really have "an embed" for my self-made solution yet, so yeah.
This is golden, loved every second.
Regarding the “who is this video for”… few years ago I got hired at a softwarehouse as a C# web developer and my first project somehow turned out to be a music app for mobile where we had to play and sync multiple audio tracks with a video (the app unfortunately does not exist anymore). This video would have been tremendously useful for us back then! Great content, as always :)
Long, just interesting enough, no ads, perfect falling asleep material. I've gotta watch this again after my well deserved sleep
With all due respect, video frames are stored in the balls.
> So now, I know you're thinking. Why am I watching this? Who is this for? (22:52) This video is in fact for me and myself
I keep running into things I don't know while video-ing and then coming back here with "maybe it's in that video about video..." and then sure enough it was! today it was verifying the timescale was the number of ticks in a second and "why does my mp4 not start with a PTS of zero??" anyway, thanks! great video. it's so, so useful and informative.
"ça fera 198 francs suisses monsieur" I DIED IN FRENCH
@fasterthanlime
Жыл бұрын
I completely forgot to say "nonante", I'm so mad
Thanks for a great video, Amos! It bumped my mood by a lot. :) I'm still recovering from COVID or something (haven't been tested yet) and was pretty grumpy, but decided to watch your piece and now 40 minutes later I'm pretty cheerful. :D
Hey, nice new video! Hope youre well.
@fasterthanlime
Жыл бұрын
Thanks! I am well, considering!
"Hey wait, come back" Ok, I'm back. And now that I'm here, I may as well watch it again.
Editing and script was top tier.. I love this guy
I'd like to complain about the royalty-free music you've added to this video to drive up viewership.
@fasterthanlime
Жыл бұрын
Thank you for your service
@DanDeebster
Жыл бұрын
This is a metric-boosting reply appearing to argue with you but fundamentally agreeing on your every point.
I started the video in 360p and then I thought "wait a minute" so cranked up juice and WHOA it's like I'm there! At the time of this post I'm paused at 23 min 😂 This is so much work, your content is stellar 🌟
If going into a rabbit hole was a movie. Great content as always.
awesome work. i love it.
Thanks for the proper subtitles!
This is way too good. It is a very good example of engineering, where you start with a simple idea and got stuck within a rabbit hole :D
great video
I keep one camera app on my phone set to 1600x1200 stills and 800x600 video just so I can share things (especially over text msg) without waiting days. You'll always be badass at 1k30. I only watch at 720p.
This video is great
I always wondered if it was just me or ffmpeg really was difficult to understand. After watching this video, I still don't have the answer. If anything, I'm more confused. It sounds so simple when it's explained, and at the same time sounds like rocket science.
I believe the correct method to convert between NTSC framerates and integer framerates is to speed up or slow down the footage + audio to make it match exactly, as human perception cannot differentiate differences so small - unfortunately I don't have a source for this, it might be mentioned in Taran van Hemert's "Mixing Different Framerates - The Ultimate Guide" video
This guy is hilarious!
awesome
A 40 minute joke
@fasterthanlime
Жыл бұрын
I'm afraid the joke is on me this time
8:03 did you put an ad there? Because it's hilarious and ironic
At the turn of the century, I house-shared with a friend on the path to becoming a global expert in video transcoding. I once asked him, “So how hard can it be…?” 😂 A quarter century later, still, no one knows how things work: he has an excellent life just knowing how all this dumpster fire “works”, having worked for a dozen major players 😂
Any chance you can walk us through the CDN that you built in another video?
genius
if you wanna have a fun time look into how color is stored in video :)
Remind me to never ever do something with video that requires to go into the depth of the formats.
I felt bad for watching this on KZread
Haha excelent
I hope i find something so that i can be this mad about it
23:45 i feel seen
23:00 too much introspection - 10/10 would watch again
Can I get the credits rap as an mpeg 2 level 3
I loved each and every 29.97 frames of all these seconds
and his back 🎉
So... Did you do it? Is it done. Asking for a friend
I feel bad for the number of views on this video about video 😞
Oh no. I'm learning Rust now and was actually quite encouraged by how much sense it made, ownership included. This video has me worried that things are about to get... messy. >_< Pray for me, y'all.
@TernaryM01
Жыл бұрын
Just stay away from video encoding, I guess...
@-aexc-
Жыл бұрын
this is about how messy video is not rust
OMG, looks like about 2 months work cosine compressed into 40mins...
As in: video has nothing to do with Eisenstein's concept of movie... 😂
Mmm frames
Et en Suisse cela vous coûterait 'nonante'... (je ne savais même pas comment l'écrire 😂)
well i would call this video premature optimization, as you have to get something working first then measure and not the other way around, as you can never know if encoding really is the bottle neck!
@fasterthanlime
Жыл бұрын
If you go to my website right now, you'll notice it has a video player (this is all explained in the video). I know how long every step takes. The video even shows spreadsheets (rapidly, but you can pause!)
what
owo whats this
Omg mais tu es suisse en fait
@fasterthanlime
Жыл бұрын
A moitié.
Johnny is based
Cough* cough* gstreamer
@fasterthanlime
Жыл бұрын
I know, I know. I've just had to build glib & friends one too many times, and I'm somewhat familiar with how ffmpeg works, and I don't want to mess with dynamic linking / plugins, and... yeah. I've seen some promising rust+gstreamer stuff being done and it's gotten me curious to try it. I still feel like ffmpeg imposes less of its own structure so it lets the Rust part drive the process more, if that makes sense?
@mhdalessandro
Жыл бұрын
I also prefer the style of writing pipelines in gstreamer. And the documentation is good beyond cli. Try it!