FFmpeg: невероятная технология, на которой держится всё видео в интернете | Подкаст Лекса Фридмана #496

Lex Fridman6 мая 2026264 6766 41215 мин чтения27 мая, 00:02

Коротко

Подкаст Lex Fridman с Jean-Baptiste Kempf (создатель VLC, основатель VideoLAN) и Kieran Kunhya (ключевой контрибьютор FFmpeg, автор того самого спайси-аккаунта в X). FFmpeg крутится на миллиардах устройств одновременно — от YouTube и Netflix до марсохода, ускорителя CERN и пэддоков Formula 1 — но поддерживает его команда из 10-15 человек. JB отказался от десятков миллионов долларов, чтобы VLC остался без рекламы; библиотека dav1d (декодер AV1) написана преимущественно вручную на assembly — 240 000 строк против 30 000 строк на C. Драма с Google security и Microsoft Teams показала, что трилионные компании ожидают free-and-urgent поддержки от волонтёров, не платя ничего. Главный технический контраргумент к современным «компилятор всё оптимизирует»: handwritten SIMD в FFmpeg даёт 10-62x ускорение против лучшего C-кода — и это не предел.

Главный тезис

Вся современная цифровая мультимедиа-инфраструктура держится на open source-проектах, которые ведут несколько десятков волонтёров, одержимых инженерным совершенством на самом низком уровне стека — assembly, cycle counting, bit-exact decoding — и отказывающихся монетизировать это любой ценой.

Ключевые идеи

  • 1:32:28FFmpeg в моменте крутится на сотнях миллионов CPU; именно поэтому каждый цикл реально стоит денег и watt-часов, отсюда фанатичная оптимизация на assembly.

  • 0:51 — у всего FFmpeg около 100 000 строк assembly, у одного только dav1d (AV1-декодер VideoLAN) — 240 000 строк handwritten assembly, скорее всего, крупнейшая такая кодовая база в мире.

  • 0:55 — 30% Netflix и 50% YouTube идут в AV1, hardware-декодера часто нет, и без софтового dav1d миллиарды устройств не вытянули бы декод; девиз проекта — every cycle matters.

  • 1:18 — спор «assembly vs C-компилятор» длится годами: people кричат про auto-vectorization и intrinsics, но фактические бенчмарки показывают, что компилятор отстаёт от рукописного SIMD не на проценты, а в разы.

  • 2:29:06«не переписывай»: читать чужой код на порядок труднее, чем писать; поэтому Rust-rewrites доходят до 80% за месяц и упираются в последние 20%, в которых сидит вся business logic.

  • 2:07:46 — в dav1d сознательно нарушают calling convention OS, чтобы не сохранять регистры на L1/L2 — это даёт прирост, но ломает security модель: «переписать на Rust поверх assembly» не спасает, нужны secure-assembly-инструментарии вроде checkasm.

  • 56:55 — JB многократно отказывался от десятков миллионов долларов (toolbars, поиск, реклама в VLC). Аргумент простой: «It wasn't right», плюс это убило бы доверие 350 контрибьюторов.

  • 1:17:44 — фиаско с Microsoft Teams: менеджер написал в публичный bug tracker «high priority», получил предложение SLA-контракта и в ответ сделал «единоразовый платёж в пару тысяч долларов».

  • 1:35:18 — software держится на одиночках с видением: Linus за две недели написал Git, JB 20+ лет тащит VLC, Fabrice Bellard в одиночку начал FFmpeg.

  • 1:36:40FFmpeg ↔ VLC ↔ X264 — бинарная звёздная система: каждый проект выигрывает от существования других. ~80% пайплайнов FFmpeg задействуют x264 (проект VideoLAN), а VLC даёт FFmpeg экспозицию на странные файлы.

  • 1:43 — спецслужбы двух стран дважды просили backdoor в VLC. Ответ — «hell no». Если бы пришлось скомпрометировать софт, проект был бы закрыт.

  • 1:17:50 — общий паттерн: большие компании путают open source bug tracker с JIRA вендора, не понимая, что там сидят волонтёры, а не оплачиваемая поддержка.

  • 3:34:34 — новый стартап JB Kyber метит в 4 мс glass-to-glass latency для teleop роботов, дронов и cloud gaming через QUIC + FEC + compensation за clock drift; сейчас достигнуто 7 мс.

  • 57:09 — open source license как социальный контракт community: переход VLC с GPL на LGPL потребовал найти 350 контрибьюторов, некоторые из которых умерли — пришлось ехать к их родителям.

  • 2:10дзен JB: regrets — налог на мозг. Worst case ты сам считаешь по схеме «am I dead? no» — значит это не катастрофа, можно идти дальше.

Почему это важно

Видео-кодеки и плееры — это инфраструктурный слой, который мало кто видит, но без которого не существует YouTube, TikTok, Reels, Netflix, Zoom, podcasting и весь современный медиа-стек. Контроль над этим слоем — это контроль над тем, кто платит роялти (паттерн HEVC доходил до сотен миллионов долларов в год), кто диктует приватность (телеметрия в плеере, sandbox) и кто решает, какие форматы переживут архивацию (FFV1 от архивного community). Поэтому Google, Netflix, Amazon, Apple собрались в Alliance for Open Media и спонсируют royalty-free AV1/AV2 — это прямая атака на патентный пул MPEG LA. Microsoft и Google в моменте получают от FFmpeg/VLC «free urgent support», а отдают неравномерно (Google — много через VP9/AV1 + Summer of Code, остальные — почти ничего). Архивное community (Dave Rice, City University NY) тихо превращает FFmpeg в Rosetta Stone мультимедиа на 1000 лет вперёд, заказывая через гранты FFV1 и GPU-encoding.

Идеи

  • В Park Joy (тест-секвенция от Swedish TV) видна вся «душа» кодека — листва, вода, трава, движение; именно она показала, что PSNR-метрики бесполезны, а blurring всё убивает.
  • Все современные codec'и (H.264/265/266, AV1, AV2) дают примерно +30% компрессии за поколение и стоят на 1-2 порядка больше CPU при кодировании.
  • 45% файлов не декодируются на GPU — fallback на софт обязателен, а значит assembly всё ещё критичен.
  • Кодек ProRes (Apple) — intra-only, без temporal compression, чтобы можно было резать на нелинейке без задержек.
  • B-frames зависят от кадров из будущего — порядок декодирования ≠ порядок отображения; это до сих пор контр-интуитивно даже инженерам.
  • Intra-refresh в Kyber: iframe никогда не отправляется целиком — он «нарастает» постепенно, чтобы избежать всплесков bitrate.
  • В YouTube «обычное» видео остаётся в H.264, популярное перекодируется в AV1 — потому что encode-once, decode-billions.
  • Kostya Shishkov в одиночку reverse engineering'ил 20-30 МБ бинарных блобов; индустриальная оценка — ~1 МБ ≈ месяц работы.
  • Henrik Gramner знает циклы Intel SIMD-инструкций по поколениям лучше самого Intel; Intel пересылает к нему вопросы.
  • Martin Storsjö пишет ARM assembly на телефоне через виртуальную клавиатуру, пока сидит с детьми на детской площадке.
  • 16-летний школьник пишет тысячи строк assembly в FFmpeg — community не интересует возраст, должность или страна, только качество кода.
  • FFmpeg FATE — automated testing на матрице из десятков OS × компиляторов × instruction sets, всё хостится волонтёрами.
  • VLC последней версии до сих пор работает на Windows XP, OS/2, iOS 9; VLC поддерживает больше OS, чем Microsoft+Google+Apple вместе.
  • Сборка VLC происходит на оффлайн-машинах, где сначала собирают компилятор, потом всё остальное; double-signed; параноидальная цепочка — после попыток подмены бинарей с государственных серверов.
  • CIA Vault 7 использовал настоящий бинарь VLC + одну подменённую DLL (psapi.dll), которая шифровала документы пользователя и сливала их во время просмотра фильма — два часа CPU/fan активности никто не замечал.
  • Аналогично китайские хакеры таргетировали индийских пользователей через VLC; пришлось судиться, чтобы разбанить VLC в Индии.
  • CONE-player — 25% трафика VLC-сайта приходит из Google по запросу «cone player», а не «VLC».
  • В VLC есть puzzle filter — превращает фильм в пазл; написал учитель математики из южной Франции, чтобы объяснять Bézier-кривые.
  • В Photoshop/Adobe нет аналога FFmpeg для изображений в командной строке — ImageMagick близок, но не дотягивает.
  • Joint work copyright в open source: каждый контрибьютор владеет своими строками; для релиценизирования VLC JB ездил к семье погибшего контрибьютора, чтобы попросить разрешение у отца-рабочего фабрики.
  • В Германии много лет существует fake-VLC сайт с встроенным spyware, который активируется через 3 недели после установки; Google знает, но не блокирует.
  • VLC использует U.S. Army для развлечения солдат в Афганистане; JB по запросу сделал отдельный билд с фиксом RTSP.
  • В WebAssembly-версии VLC компилят весь FFmpeg в JS-VM браузера — раньше Google Video использовал ActiveX-плагин VLC, теперь круг замкнулся.
  • В России и большинстве Европы софтверные патенты невалидны — это одна из причин, почему VideoLAN базируется во Франции; если бы лицензировал все патенты, VLC стоил бы $200/пользователь.
  • Andrew Kelly (создатель языка Zig) был FFmpeg-разработчиком и ушёл писать Zig после «школы FFmpeg».
  • CDN-проблема в streaming — это не video problem, а network problem; adaptive bitrate-алгоритмы внутри довольно базовые.
  • Аудио-glitches люди замечают гораздо острее, чем video — переходы AAC ↔ HE-AAC чувствуются мгновенно, а 30 fps вместо 60 fps в спорт-трансляции терпят все.
  • Maintainer burnout убил больше open-source проектов, чем технические проблемы; AI-slop reports от security-ботов добивают tired maintainers.
  • Один человек в Небраске поддерживает все time zones для всего интернета.
  • libxml2 — основная XML-библиотека интернета — официально без maintainer'а.

Инсайты

  • Excellence как культурный фильтр: open source-community объединяется не вокруг политики или религии, а вокруг качества кода — это редкая социальная архитектура, которая позволяет работать вместе людям из зон конфликтов, разных стран и культур.
  • Compression — это не сжатие, а predictive modeling под человеческое восприятие: ключевой сдвиг в x264 (psychovisual rate distortion + adaptive quantization) был сменой целевой функции с математической (PSNR) на психофизиологическую — и это дало бóльший прирост, чем все алгоритмические улучшения вместе.
  • Network effect и passion projects: в software единичная страсть масштабируется через open source быстрее, чем в любой другой индустрии — отсюда феномен Linus/Git за 2 недели и JB/VLC.
  • Software patents структурно ломают innovation: HEVC fragment-пулов привёл к тому, что HP вырезал поддержку из Windows-ноутбуков, и заставил Google/Netflix построить параллельную royalty-free экосистему — экономика, а не инженерия, продиктовала рождение AV1.
  • Maintainer как точка отказа цивилизации: legendary XKCD-комикс про «обязательную бесплатную мейтнанс одного парня в Небраске» — это не шутка, это структурный риск всей цифровой инфраструктуры.
  • AI-генерируемые баг-репорты как denial-of-service: масштабирование security-ресерча через LLM создаёт асимметрию ресурсов между поиском багов (дёшево) и их починкой (по-прежнему дорого) — и пока эта асимметрия не уравнивается финансово, она ломает волонтёрские проекты.
  • Reading code > writing code: главное правило «не переписывай» — следствие фундаментальной асимметрии понимания vs создания; LLM эту асимметрию не закроют, потому что в legacy сидит implicit business logic.
  • Assembly как cultural archaeology: handwritten SIMD-код передаётся из рук в руки, как кузнечное ремесло; нет достаточного корпуса данных, чтобы LLM это выучили — это последний рубеж, где человеческая экспертиза остаётся вне зоны автоматизации.
  • Aggressive language как культурный сигнал, а не агрессия: терсный тон Linux/FFmpeg — это субкультура tired volunteers с тяжёлой дневной работой, которая делает свой hobby в свободное время; снаружи это читается как враждебность, изнутри — как уважение к коду, а не к статусу.
  • Каждая фича используется кем-то: при достаточной user base (миллионы) даже puzzle filter из 16×16 окажется недостаточным для пользователя, который весь фильм решает 256×256 puzzle — feature graveyard невозможен.

Цитаты

«I don't care, right? I don't care where you come from. I need to look at your code.» — 0:07 Мне неважно, кто ты. Мне нужен твой код.

«We care about excellent code. We don't care who you are.» — 0:02 Нам важен отличный код. Нам неважно, кто ты.

«Every cycle matters.» — 0:53 Каждый цикл важен.

«Every sentence is someone's lifetime's work.» — 18:52 Каждое предложение — это чья-то жизнь работы.

«79.9% assembly, 90.6% C, and 0.5% other. This is what peak video codecs should look like.» — 1:08 Так должен выглядеть пик видеокодеков.

«The intelligence agencies tried to say, can you put a backdoor on VLC? Yes, two of them. What do you say? No. I was a lot less polite. Basically saying, hell no.» — 1:43 Спецслужбы спрашивали, можем ли мы поставить backdoor в VLC. Две из них. Что я ответил? Нет. Я был куда менее вежлив. Грубо говоря — да ни хрена.

«I work for the greater good. I work for people.» — 57:09 Я работаю на общее благо. Я работаю для людей.

«I refuse dozens of millions of dollars. Yes, several times. Yes, I could be a multimillionaire and be somewhere on the beach. But I did not do it because I thought it was not moral.» — 56:55 Я отказался от десятков миллионов долларов. Да, несколько раз. Я мог бы быть мультимиллионером где-нибудь на пляже. Но я не сделал этого, потому что считал это аморальным.

«It is an order of magnitude easier to write code than read code.» — 2:29:06 Писать код на порядок легче, чем читать код.

«Linus built Git in two weeks.» — 1:35:18 Linus написал Git за две недели.

«Many things in the world only happen because an awesome person decides to do it. This is the case with VLC.» — 1:34:40 Многое в мире происходит просто потому, что какой-то крутой человек решил это сделать. Так было с VLC.

«It's a binary star system is the analogy I used.» — 1:36:40 Это бинарная звёздная система — такую аналогию я использую.

«Maybe you're a dog. I don't care, right?» — 0:06 Может, ты вообще собака. Мне без разницы.

«My goal is four milliseconds glass-to-glass latency.» — 3:34:34 Моя цель — 4 миллисекунды glass-to-glass latency.

«Regrets are a tax on your mind.» — 2:10 Сожаления — это налог на твой мозг.

«We are not your supplier. If you want me to be a supplier, I'm very happy, right? I will send you a contract and SLAs.» — 1:20:05 Мы вам не вендор. Хотите вендора — пожалуйста, пришлю контракт и SLA.

«Talk is cheap, send patches.» — 4:13:54 Болтать дёшево, шлите патчи.

«FFmpeg, nothing is beyond our reach.» — 4:14:04 FFmpeg, нет ничего вне нашей досягаемости.

«The world is a museum of passion projects.» — 1:33:41 Мир — это музей passion projects.

«Most good programmers do programming not because they expect to get paid or get edulation by the public, but because it is fun to program.» — 4:17:56 Большинство хороших программистов программируют не ради денег и не ради славы — а потому что программировать просто весело. (Linus Torvalds)

Факты

  • VLC скачан более 6 миллиардов раз (вероятно, реально больше — невозможно посчитать через зеркала и репаки).
  • FFmpeg задействован в >90% видео-workflow в интернете и оффлайн.
  • dav1d: 30 000 строк C + 240 000 строк handwritten assembly; весь FFmpeg — ~100 000 строк assembly суммарно.
  • Сборка VLC под Windows компилирует ~16 миллионов строк кода, из которых только ~1 млн собственно в репозитории VLC.
  • Core-команда VLC — 5 человек; FFmpeg — 10-15 человек; XZ — один.
  • VLC поддерживает iOS 9 → iOS 26, Windows XP → Windows 11, macOS 10.7 → macOS 26, OS/2, BSD, Solaris.
  • JB при переходе VLC c GPL на LGPL связался с ~350 контрибьюторами лично, включая семьи умерших.
  • VLC запустился в École Centrale Paris; стал open source в начале 2001; JB пришёл в проект в 2003.
  • В 2005 в активной разработке VLC было 2 человека; проект «должен был умереть».
  • FFmpeg создал Fabrice Bellard; «эпоха Niedermayer» — 2000-е (поддержка Xvid/DivX/MPEG-4 part 2); реверс-инжиниринг WMV/Real — Benjamin Larsson, Kostya Shishkov.
  • В России и большинстве Европы софтверные патенты невалидны; во Франции это юридическая причина базирования VideoLAN.
  • В ~2009-2010 JB получил death threat с порошком (под подозрением на anthrax) после решения прекратить поддержку PowerPC в VLC.
  • CIA Vault 7 (Wikileaks): кастомная VLC + одна DLL для шифрования и эксфильтрации документов пользователя.
  • 3 миллиарда устройств декодируют видео нон-стоп; 30% Netflix и 50% YouTube — AV1.
  • Каждое поколение кодеков даёт ~30% улучшения компрессии при том же качестве, но требует на 1-2 порядка больше CPU на кодирование.
  • В 1992 индустрия совершила (по признанию Юрия Резника) «одну из крупнейших ошибок эры» — не сделала MPEG-2 bit-exact; H.264+ уже bit-exact.
  • 16-летний Daniel Kang и Rukai Peng написали тысячи строк assembly в FFmpeg.
  • Park Joy — тест-секвенция от Swedish TV, снятая на плёнку без compromise; до сих пор «золотой стандарт» для видео-кодеков.
  • HEVC лицензионная история: MPEG LA + HEVC Advanced + Nokia вне пула — невозможно лицензировать; HP вырезал HEVC из Windows-ноутбуков.
  • Если бы JB лицензировал все патенты VLC — пришлось бы платить >200$ на пользователя.

Источники

  • Люди: Linus Torvalds (Git/Linux), Fabrice Bellard (FFmpeg), Michael Niedermayer (FFmpeg), Loren Merritt (x264 assembly), Henrik Gramner (Intel SIMD), Martin Storsjö (ARM), Anton Khirnov, Andreas Rheinhardt, Kostya Shishkov, Benjamin Larsson, Christophe Massiot (VideoLAN co-founder), Steve Lhomme (Matroska), Yuri Resnick, Daniel Stenberg (curl), Dave Rice (archiving, CUNY), John Lech Johansen (DeCSS), Andrew Kelly (Zig), Felix (VLC iOS), Edward Wong, Daniel Kang, Rukai Peng, Chris Henderson (Warner Bros, x264 Blu-ray), Theo, Alex Strange.
  • Проекты/инструменты: FFmpeg, VLC, x264, dav1d, libVLC, libdvdcss, libdvdnav, x86inc (Loren Merritt's assembly framework), AEG Sub (subtitle editor), FFV1 (lossless archival codec), Kyber (новый стартап JB).
  • Кодеки/стандарты: H.264/AVC/MPEG-4 part 10, H.265/HEVC, H.266/VVC, AV1, AV2, VP9, ProRes, MPEG-2, AAC.
  • Контейнеры: MP4, MOV, MKV (Matroska), AVI, WebM.
  • Организации: Alliance for Open Media (AOM), MPEG LA, ITU, ISO, École Centrale Paris.
  • События/референсы: WikiLeaks Vault 7, XZ backdoor incident, Park Joy (Swedish TV test sequence), Cinema Paradiso Blu-ray, Mile High Video Conference, VideoLAN Dev Days (VDD).
  • Языки/технологии: C, C++, Rust, assembly (SIMD, AVX-512, NEON, SVE, SME), Logo, QBasic, Turbo Pascal, RISC-V, QUIC.

Рекомендации

  • Выучить assembly хотя бы поверхностно — Kieran опубликовал курс asm-lessons (упор на SIMD, vectorization, vector registers; требования — high school math + указатели в C); это сделает любого программиста лучше, даже если он пишет TypeScript.
  • Работайте над тем, что вы любите — главный совет JB новичкам в open source. Большинство контрибьюторов FFmpeg/VLC пришли из любви к аниме, фильмам или конкретным кодекам.
  • Не переписывайте существующий код просто потому, что он на старом языке — читать код в 10 раз тяжелее, чем писать; legacy содержит implicit business logic, которую вы не увидите при rewrite.
  • Скачивайте VLC только с videolan.org — fake-сборки с встроенным spyware распространены в Германии и других странах; Google знает, но не удаляет.
  • Поддерживайте open source финансово — донатьте FFmpeg, VideoLAN, curl и другие проекты; даже небольшие суммы критично меняют ситуацию для maintainers.
  • Благодарите создателей напрямую — JB и Kieran сами говорят, что письма «спасибо за VLC» от пользователей важнее любого спонсорства.

Итог

Современный мир видео — от Netflix до марсохода — работает на open source-инфраструктуре, которую держат 10-15 одержимых инженеров, отказавшихся от миллионов и пишущих handwritten assembly как форму искусства; пока эта культура жива, мультимедиа остаётся демократичной.

readmint Pro

То, что вы только что прочитали — это саммари readmint

Оформите доступ — и получайте такой же разбор по любому своему видео. Вставляете ссылку, через 2–3 минуты готов пересказ с главными тезисами и цитатами. Без воды и без перемотки.

  • Безлимит саммари — сколько угодно видео
  • Главные тезисы и цитаты без воды
  • Приоритет в очереди обработки
  • Без рекламы и сторонних блоков
Получить такое же саммари
Доступ откроется сразу после оплаты — вставите ссылку и начнёте.

Или 4 900 ₽/год — доступ откроется сразу после оплаты.

Ещё с канала «Lex Fridman»

Все видео