This is a video about video

Поделиться
HTML-код
  • Опубликовано: 2 авг 2024
  • 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 Год назад +99

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

  • @jlucktay
    @jlucktay Год назад +76

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

  • @gnarflord4547
    @gnarflord4547 Год назад +31

    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 Год назад +87

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

    • @fasterthanlime
      @fasterthanlime  Год назад +15

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

  • @sachindraragul1094
    @sachindraragul1094 Год назад +6

    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.

  • @andrewdunbar828
    @andrewdunbar828 Год назад +36

    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!

  • @PaddyLamont
    @PaddyLamont Год назад +12

    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

  • @-aexc-
    @-aexc- Год назад +18

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

    • @fasterthanlime
      @fasterthanlime  Год назад +15

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

  • @rmpr3933
    @rmpr3933 Год назад +8

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

  • @Kage-Yami
    @Kage-Yami Год назад +8

    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 Год назад +4

    I like that from your site you embedded this RUclips video explaining how you were self-hosting. I had to stop at that point to check where I was.

    • @fasterthanlime
      @fasterthanlime  Год назад +2

      Yeah I uhhh.. just in case that article got really popular, chose the RUclips embed there. Also, I don't really have "an embed" for my self-made solution yet, so yeah.

  • @MrKeebs
    @MrKeebs Год назад +19

    This is golden, loved every second.

  • @wafflelapkin
    @wafflelapkin Год назад +6

    > 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

  • @pawebanka1842
    @pawebanka1842 Год назад +6

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

  • @qm3ster
    @qm3ster Год назад +51

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

  • @blackbriarmead1966
    @blackbriarmead1966 Год назад +1

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

  • @epos529
    @epos529 Год назад +6

    Hey, nice new video! Hope youre well.

  • @gennyble
    @gennyble 6 месяцев назад

    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.

  • @hafrei
    @hafrei Год назад +1

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

  • @Speykious
    @Speykious Год назад +2

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

    • @fasterthanlime
      @fasterthanlime  Год назад

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

  • @BryanSeigneur0
    @BryanSeigneur0 Год назад +1

    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.

  • @johnyepthomi892
    @johnyepthomi892 Год назад +1

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

  • @alexchichigin
    @alexchichigin Год назад +3

    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

  • @igz5553
    @igz5553 Год назад +1

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

  • @thomasfrans1185
    @thomasfrans1185 Год назад +1

    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.

  • @timglabisch6767
    @timglabisch6767 Год назад

    awesome work. i love it.

  • @polarbub
    @polarbub Год назад +1

    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

  • @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 🌟

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

  • @andybrychenko
    @andybrychenko Год назад +1

    This video is great

  • @legorooj
    @legorooj Год назад +16

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

    • @fasterthanlime
      @fasterthanlime  Год назад +9

      Thank you for your service

    • @DanDeebster
      @DanDeebster Год назад +3

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

  • @RyanLynch1
    @RyanLynch1 Год назад

    great video

  • @johnodonoghue651
    @johnodonoghue651 Год назад

    This guy is hilarious!

  • @urban6989
    @urban6989 Год назад

    awesome

  • @fraollemecha
    @fraollemecha Год назад +10

    A 40 minute joke

  • @simonmassey8850
    @simonmassey8850 5 месяцев назад

    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 😂

  • @sergiopolarbear810
    @sergiopolarbear810 Год назад

    genius

  • @rebane2001
    @rebane2001 Год назад

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

  • @kc3vv
    @kc3vv Год назад +3

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

  • @RemcoJvGrevenbroek
    @RemcoJvGrevenbroek Год назад

    Haha excelent

  • @supriyo_biswas
    @supriyo_biswas Год назад +1

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

  • @jbca
    @jbca Год назад +1

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

  • @max_ishere
    @max_ishere Год назад

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

  • @Bloky.
    @Bloky. Год назад +1

    I felt bad for watching this on RUclips

  • @kinars8160
    @kinars8160 Год назад

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

  • @berndeckenfels
    @berndeckenfels Год назад

    23:45 i feel seen

  • @error200http
    @error200http Год назад +1

    I loved each and every 29.97 frames of all these seconds

  • @superhawk6105
    @superhawk6105 Год назад

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

  • @fraollemecha
    @fraollemecha Год назад

    and his back 🎉

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

  • @ankit-v2.1
    @ankit-v2.1 6 месяцев назад

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

  • @maxf1542
    @maxf1542 Год назад

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

  • @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_ Год назад +1

    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  Год назад +5

      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 Год назад +1

    owo whats this

  • @ruben6295
    @ruben6295 Год назад

    Omg mais tu es suisse en fait

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

  • @gnomeddev
    @gnomeddev Год назад +2

    Johnny is based