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

  • @hantuchblau
    @hantuchblau Жыл бұрын

    This video did not feel like 40 minutes. Fantastic scripting and presentation!

  • @gnarflord4547
    @gnarflord4547 Жыл бұрын

    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.

  • @zyansheep
    @zyansheep Жыл бұрын

    Alt title: fasterthanlime descends into madness trying to recreate convenience of KZread playback

  • @fasterthanlime

    @fasterthanlime

    Жыл бұрын

    This was the video description but then everyone's like uwu be more descriptive. So this is all you get now!

  • @andrewdunbar828
    @andrewdunbar828 Жыл бұрын

    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!

  • @sachindraragul1094
    @sachindraragul1094 Жыл бұрын

    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.

  • @PaddyLamont
    @PaddyLamont Жыл бұрын

    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

  • @jlucktay
    @jlucktay Жыл бұрын

    Amos, blink 29.97 times if you're not OK and need help, we are here for you

  • @-aexc-
    @-aexc- Жыл бұрын

    I didn't realize how much I'd learned about video by being really into media piracy for a while

  • @fasterthanlime

    @fasterthanlime

    Жыл бұрын

    I will neither confirm nor deny how true that is for me

  • @rmpr3933
    @rmpr3933 Жыл бұрын

    The more you learn about computers, the more you should be amazed that anything works at all.

  • @Kage-Yami
    @Kage-Yami Жыл бұрын

    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").

  • @DanDeebster
    @DanDeebster Жыл бұрын

    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

    @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.

  • @MrKeebs
    @MrKeebs Жыл бұрын

    This is golden, loved every second.

  • @pawebanka1842
    @pawebanka1842 Жыл бұрын

    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 :)

  • @blackbriarmead1966
    @blackbriarmead1966 Жыл бұрын

    Long, just interesting enough, no ads, perfect falling asleep material. I've gotta watch this again after my well deserved sleep

  • @qm3ster
    @qm3ster Жыл бұрын

    With all due respect, video frames are stored in the balls.

  • @wafflelapkin
    @wafflelapkin Жыл бұрын

    > 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

  • @gennyble
    @gennyble5 ай бұрын

    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.

  • @Speykious
    @Speykious Жыл бұрын

    "ça fera 198 francs suisses monsieur" I DIED IN FRENCH

  • @fasterthanlime

    @fasterthanlime

    Жыл бұрын

    I completely forgot to say "nonante", I'm so mad

  • @alexchichigin
    @alexchichigin Жыл бұрын

    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

  • @epos529
    @epos529 Жыл бұрын

    Hey, nice new video! Hope youre well.

  • @fasterthanlime

    @fasterthanlime

    Жыл бұрын

    Thanks! I am well, considering!

  • @hafrei
    @hafrei Жыл бұрын

    "Hey wait, come back" Ok, I'm back. And now that I'm here, I may as well watch it again.

  • @igz5553
    @igz5553 Жыл бұрын

    Editing and script was top tier.. I love this guy

  • @legorooj
    @legorooj Жыл бұрын

    I'd like to complain about the royalty-free music you've added to this video to drive up viewership.

  • @fasterthanlime

    @fasterthanlime

    Жыл бұрын

    Thank you for your service

  • @DanDeebster

    @DanDeebster

    Жыл бұрын

    This is a metric-boosting reply appearing to argue with you but fundamentally agreeing on your every point.

  • @johnbruhling8018
    @johnbruhling8018 Жыл бұрын

    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 🌟

  • @johnyepthomi892
    @johnyepthomi892 Жыл бұрын

    If going into a rabbit hole was a movie. Great content as always.

  • @timglabisch6767
    @timglabisch6767 Жыл бұрын

    awesome work. i love it.

  • @polarbub
    @polarbub Жыл бұрын

    Thanks for the proper subtitles!

  • @AlexisPaques
    @AlexisPaques Жыл бұрын

    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

  • @RyanLynch1
    @RyanLynch1 Жыл бұрын

    great video

  • @BryanSeigneur0
    @BryanSeigneur0 Жыл бұрын

    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.

  • @andybrychenko
    @andybrychenko Жыл бұрын

    This video is great

  • @thomasfrans1185
    @thomasfrans1185 Жыл бұрын

    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.

  • @Craig_Anderson
    @Craig_Anderson Жыл бұрын

    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

  • @johnodonoghue651
    @johnodonoghue651 Жыл бұрын

    This guy is hilarious!

  • @urban6989
    @urban6989 Жыл бұрын

    awesome

  • @fraollemecha
    @fraollemecha Жыл бұрын

    A 40 minute joke

  • @fasterthanlime

    @fasterthanlime

    Жыл бұрын

    I'm afraid the joke is on me this time

  • @max_ishere
    @max_ishere Жыл бұрын

    8:03 did you put an ad there? Because it's hilarious and ironic

  • @simonmassey8850
    @simonmassey88504 ай бұрын

    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 😂

  • @supriyo_biswas
    @supriyo_biswas Жыл бұрын

    Any chance you can walk us through the CDN that you built in another video?

  • @sergiopolarbear810
    @sergiopolarbear810 Жыл бұрын

    genius

  • @rebane2001
    @rebane2001 Жыл бұрын

    if you wanna have a fun time look into how color is stored in video :)

  • @kc3vv
    @kc3vv Жыл бұрын

    Remind me to never ever do something with video that requires to go into the depth of the formats.

  • @Bloky.
    @Bloky. Жыл бұрын

    I felt bad for watching this on KZread

  • @RemcoJvGrevenbroek
    @RemcoJvGrevenbroek Жыл бұрын

    Haha excelent

  • @kinars8160
    @kinars8160 Жыл бұрын

    I hope i find something so that i can be this mad about it

  • @berndeckenfels
    @berndeckenfels Жыл бұрын

    23:45 i feel seen

  • @superhawk6105
    @superhawk6105 Жыл бұрын

    23:00 too much introspection - 10/10 would watch again

  • @jbca
    @jbca Жыл бұрын

    Can I get the credits rap as an mpeg 2 level 3

  • @error200http
    @error200http Жыл бұрын

    I loved each and every 29.97 frames of all these seconds

  • @fraollemecha
    @fraollemecha Жыл бұрын

    and his back 🎉

  • @maxf1542
    @maxf1542 Жыл бұрын

    So... Did you do it? Is it done. Asking for a friend

  • @ankit-v2.1
    @ankit-v2.15 ай бұрын

    I feel bad for the number of views on this video about video 😞

  • @Whatthetrash
    @Whatthetrash Жыл бұрын

    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

    @TernaryM01

    Жыл бұрын

    Just stay away from video encoding, I guess...

  • @-aexc-

    @-aexc-

    Жыл бұрын

    this is about how messy video is not rust

  • @epleace
    @epleace Жыл бұрын

    OMG, looks like about 2 months work cosine compressed into 40mins...

  • @TobiasFrei
    @TobiasFrei Жыл бұрын

    As in: video has nothing to do with Eisenstein's concept of movie... 😂

  • @ismailmaj894
    @ismailmaj894 Жыл бұрын

    Mmm frames

  • @TobiasFrei
    @TobiasFrei Жыл бұрын

    Et en Suisse cela vous coûterait 'nonante'... (je ne savais même pas comment l'écrire 😂)

  • @wChris_
    @wChris_ Жыл бұрын

    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

    @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!)

  • @baggern
    @baggern Жыл бұрын

    what

  • @alyti
    @alyti Жыл бұрын

    owo whats this

  • @ruben6295
    @ruben6295 Жыл бұрын

    Omg mais tu es suisse en fait

  • @fasterthanlime

    @fasterthanlime

    Жыл бұрын

    A moitié.

  • @gnome6671
    @gnome6671 Жыл бұрын

    Johnny is based

  • @mhdalessandro
    @mhdalessandro Жыл бұрын

    Cough* cough* gstreamer

  • @fasterthanlime

    @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

    @mhdalessandro

    Жыл бұрын

    I also prefer the style of writing pipelines in gstreamer. And the documentation is good beyond cli. Try it!