12 poin oleh GN⁺ 2026-03-11 | 1 komentar | Bagikan ke WhatsApp
  • Meta menjalankan puluhan miliar eksekusi FFmpeg per hari dan berhasil beralih sepenuhnya ke FFmpeg upstream alih-alih terus memakai versi fork internal
  • Untuk menutup kesenjangan fitur antara fork internal dan versi open source, Meta bekerja sama dengan FFlabs dan VideoLAN untuk mengimplementasikan encoding paralel multi-lane serta fitur metrik kualitas real-time ke upstream
  • Meta memproses lebih dari 1 miliar unggahan video per hari dan melakukan encoding multi-resolusi serta multi-kodek untuk pemutaran DASH dalam satu command line FFmpeg
  • Struktur threading yang efisien yang diimplementasikan pada FFmpeg 6.0~8.0 didasarkan pada rancangan Meta, dan memberikan peningkatan efisiensi encoding bagi semua pengguna
  • ASIC rancangan sendiri, MSVP (Meta Scalable Video Processor), diintegrasikan melalui API hardware standar FFmpeg untuk memastikan konsistensi antara pipeline software dan hardware
  • Melalui investasi berkelanjutan pada FFmpeg yang telah dikembangkan lebih dari 25 tahun, Meta sekaligus memperkuat pengalaman video baru dan stabilitas platformnya

Peran FFmpeg dan Tantangan Meta

  • FFmpeg adalah alat pemrosesan media standar industri yang mendukung beragam codec audio/video dan format kontainer, serta memungkinkan pengeditan dan konversi media melalui rantai filter yang kompleks
  • Meta menjalankan biner ffmpeg (CLI utama) dan ffprobe (utilitas untuk melihat properti file media) puluhan miliar kali per hari, dengan kebutuhan tambahan yang melampaui pemrosesan file individual
  • Selama bertahun-tahun Meta mengandalkan fork internal dan mengimplementasikan sendiri fitur yang saat itu belum ada di upstream, seperti encoding multi-lane berbasis thread dan perhitungan metrik kualitas real-time

Divergensi Fork Internal dan Kebutuhan Kembali ke Upstream

  • Fork internal makin berbeda jauh dari FFmpeg upstream sehingga kesenjangan set fiturnya terus melebar
  • Pada saat yang sama, versi baru FFmpeg menghadirkan dukungan codec dan format file baru serta peningkatan stabilitas, sehingga Meta juga perlu mendukung versi open source terbaru agar bisa terus menerima beragam konten video yang diunggah pengguna tanpa gangguan
  • Karena semakin sulit mencegah regresi saat me-rebase perubahan internal, Meta bekerja sama dengan pengembang FFmpeg, FFlabs, dan VideoLAN untuk sepenuhnya meninggalkan fork internal dan beralih ke penggunaan versi upstream saja

Membangun Transcoding Multi-Lane yang Efisien (VOD dan Live Streaming)

  • Saat pengguna mengunggah video, Meta membuat sekumpulan encoding untuk pemutaran DASH (Dynamic Adaptive Streaming over HTTP), dengan variasi resolusi, codec, frame rate, dan tingkat kualitas
    • Player video di aplikasi dapat berpindah encoding secara real-time berdasarkan sinyal seperti kondisi jaringan
  • Cara paling sederhana adalah memproses tiap lane secara terpisah dengan command line FFmpeg masing-masing, tetapi bahkan saat dijalankan paralel, tiap proses tetap melakukan pekerjaan yang berulang (decode berulang, overhead start proses) sehingga tidak efisien
  • Dengan mendekode frame hanya sekali dalam satu command line FFmpeg lalu mengirimkannya ke tiap encoder output, Meta bisa menghilangkan decode yang duplikatif dan mengurangi overhead start proses
    • Karena Meta menangani lebih dari 1 miliar unggahan video per hari, penghematan komputasi per proses memberikan peningkatan efisiensi besar secara keseluruhan
  • Fork internal Meta juga menambahkan optimasi encoding video paralel: FFmpeg sebelumnya mengeksekusi beberapa encoder secara serial per frame, tetapi Meta menjalankan semua instance encoder secara paralel untuk memperoleh paralelisme yang lebih tinggi
  • Berkat kontribusi pengembang FFmpeg (termasuk FFlabs dan VideoLAN), threading yang lebih efisien mulai diimplementasikan sejak FFmpeg 6.0 dan disempurnakan pada 8.0
    • Implementasi ini dipengaruhi langsung oleh rancangan fork internal Meta, dan dicatat sebagai refactoring FFmpeg paling kompleks dalam beberapa dekade
    • Hasilnya, semua pengguna FFmpeg mendapatkan manfaat encoding yang lebih efisien

Metrik Kualitas Real-Time (Live Streaming)

  • Metrik kualitas visual digunakan untuk merepresentasikan kualitas visual media dalam bentuk angka dan mengukur kehilangan kualitas akibat kompresi
    • Metrik referensi (reference): membandingkan encoding asli dengan encoding yang terdistorsi
    • Metrik non-referensi (no-reference): menilai kualitas tanpa materi asli
  • FFmpeg dapat menghitung metrik kualitas seperti PSNR, SSIM, dan VMAF menggunakan dua encoding yang sudah ada lewat command line terpisah setelah encoding selesai, tetapi live streaming memerlukan perhitungan real-time
  • Dengan menyisipkan decoder video di belakang encoder video pada tiap lane output, Meta memperoleh bitmap frame setelah kompresi dan membandingkannya dengan frame sebelum kompresi, sehingga metrik kualitas tiap lane encoding dapat dihitung secara real-time dalam satu command line FFmpeg
  • Mulai FFmpeg 7.0, berkat kontribusi dari FFlabs dan pengembang VideoLAN, decoding in-loop diaktifkan sehingga ketergantungan pada fork internal untuk fitur ini dapat dihapus sepenuhnya

Kriteria Kontribusi Upstream dan Patch Khusus Internal

  • Fitur seperti metrik kualitas real-time dan threading yang efisien meningkatkan efisiensi berbagai pipeline berbasis FFmpeg baik di dalam maupun di luar Meta, sehingga dikontribusikan ke upstream
  • Sebaliknya, patch yang sangat spesifik untuk infrastruktur Meta dan sulit digeneralisasi tetap dipertahankan secara internal
  • FFmpeg mendukung decoding, encoding, dan filtering dengan akselerasi hardware melalui API standar untuk NVIDIA NVDEC/NVENC, AMD UVD, Intel QSV, dan lainnya
  • ASIC transcoding video milik Meta, MSVP (Meta Scalable Video Processor), juga ditambahkan dukungannya melalui API standar yang sama, sehingga alat yang sama dapat digunakan di berbagai platform hardware
    • Karena MSVP hanya dipakai di infrastruktur internal Meta, pengembang FFmpeg eksternal tidak memiliki akses hardware untuk menguji dan memverifikasinya, sehingga patch-nya tetap dipelihara secara internal
    • Saat di-rebase ke versi FFmpeg terbaru, Meta melakukan validasi yang luas untuk memastikan ketangguhan dan akurasi

Investasi Berkelanjutan pada FFmpeg

  • Dengan fitur encoding multi-lane dan metrik kualitas real-time, Meta sepenuhnya menghentikan penggunaan fork internal di semua pipeline VOD dan live streaming
  • Berkat API hardware standar FFmpeg, Meta dapat mendukung ASIC MSVP dan pipeline berbasis software dengan friksi seminimal mungkin
  • Meta berencana terus berinvestasi pada FFmpeg yang telah aktif dikembangkan selama lebih dari 25 tahun melalui kemitraan dengan pengembang open source, sehingga memberi manfaat bagi Meta, industri, dan pengguna

1 komentar

 
GN⁺ 2026-03-11
Komentar Hacker News
  • Saat fork internal makin usang, kami bekerja sama dengan para pengembang FFmpeg untuk menggabungkan fitur yang kami butuhkan ke FFmpeg resmi
    Hasilnya, kami bisa sepenuhnya membuang versi internal dan beroperasi hanya dengan versi upstream
    Ada yang bilang "bukannya kalian bisa berkontribusi lebih banyak?", tetapi inti open source adalah semua pihak berbagi manfaat

    • Menurut saya, tidak bisa dipungkiri bahwa Meta memang berkontribusi ke komunitas
      Kita sudah menikmati manfaat dari banyak proyek seperti React, React Native, dan lainnya
    • Namun jika fitur-fitur ini berasal dari kebutuhan perusahaan raksasa, kebanyakan pengguna tidak akan benar-benar merasakan manfaatnya
      Pada akhirnya, struktur seperti ini terasa hanya menguntungkan pihak yang sudah punya kuasa
    • Jelas ini perubahan yang positif, tetapi di baliknya ada masa ketika kepentingan internal lebih diprioritaskan
      Meski begitu, fakta bahwa Meta telah membuka banyak hal ke ekosistem open source tetap menjadi pembeda di industri
    • Kita tidak boleh lupa bahwa semua perusahaan big tech tidak akan bisa ada tanpa fondasi open source
    • Kontribusi open source itu sendiri bagus, tetapi saya tidak suka nada tulisan blognya
      Ungkapan seperti "baru sekarang diintegrasikan ke upstream" terasa seperti mencoba membungkus kekurangan masa lalu
      Mencampurkan kalimat pemasaran ke blog teknis terasa mengganggu dari sudut pandang pembaca
  • Semoga saat Fabrice Bellard pensiun, dia mendapat kompensasi yang layak
    Berkat perangkat lunaknya, banyak perusahaan telah menghasilkan uang

  • Bagus bahwa versi baru FFmpeg kini mendukung beragam codec dan format,
    tetapi pada skala Meta yang menjalankannya miliaran kali setiap hari, saya penasaran apakah mereka ikut berpartisipasi secara berkelanjutan dalam peningkatan semacam ini

    • [komentar dihapus]
  • Dijalankan puluhan miliar kali per hari itu benar-benar skala yang luar biasa
    Saya sendiri sudah bisa merasakan overhead hanya dengan pekerjaan perakitan video otomatis yang berjalan beberapa ribu kali per hari
    Berkat fitur single-decode multi-output, waktu pemrosesan berkurang 40%

    • Pada skala seperti ini, penggunaan RAM pasti sulit dibayangkan
      Untungnya, turunnya harga memori belakangan ini membuat cost-benefit dari peningkatan open source menjadi lebih besar
  • Pendekatan meningkatkan paralelisme dengan menjalankan instance encoder secara paralel terdengar masuk akal
    Tetapi saya ingin melihat fitur time-axis parallelization
    Jika video input dibagi berdasarkan keyframe lalu dienkode secara paralel, kecepatan bisa ditingkatkan tanpa menurunkan kualitas

    • Tapi apakah posisi keyframe bisa diprediksi sebelumnya?
      Biasanya encoder menempatkannya secara dinamis demi efisiensi, jadi pemisahan lebih awal mungkin sulit
    • Saya juga penasaran apakah analisis gerak yang dilakukan encoder saat menganalisis frame P/B bisa dihitung sekali lalu dipakai ulang untuk beberapa encoding
  • Terima kasih kepada tim Meta karena telah berkontribusi ke ffmpeg dan ffprobe
    Ke depan, semoga mereka juga mempertimbangkan dukungan pendanaan untuk kualitas kode, dokumentasi, dan acara komunitas

  • Ungkapan "fork internal makin lama makin usang" terasa sangat relatable
    Sebagai catatan, di FFmpeg 8 pemetaan warna HDR dan SDR kini ditangani dengan sempurna

    • Dulu saya sempat kesulitan karena masalah penyalinan metadata otomatis, dan senang sekali itu sekarang sudah diperbaiki
    • Senang mendengar kabar ini lagi setelah sekian lama, perkembangannya mengesankan
  • Menarik bahwa Sovereign Tech Fund dari Jerman ternyata menyumbang ke FFmpeg

    • STF Jerman menyumbang sekitar 150 ribu dolar, tetapi biaya tenaga kerja seorang engineer Meta selama 1 tahun saja kemungkinan sudah lebih dari dua kali lipat itu
      Mungkin Meta punya tim khusus encoding media dan berkontribusi senilai lebih dari 1 juta dolar per tahun
    • Namun akun resmi FFmpeg menyebut, "dukungan dari Meta kami hargai, tetapi belum berada pada tingkat yang berkelanjutan"
      Lihat tweet terkait
    • Saya penasaran berapa sebenarnya donasi Meta
      STF Jerman disebut memberikan €157,580 pada 2024/2025
    • Agak ironis jika Meta menghasilkan miliaran dolar tetapi menyumbang lebih sedikit daripada dana negara
    • [komentar dihapus]
  • Untungnya server FFmpeg hanya menangani konten ringan, jadi masih bisa bertahan
    Kalau videonya berat, mungkin sudah kewalahan

  • Posting HN yang sama juga sudah muncul 6 hari lalu
    Saya tidak mengerti kenapa mencantumkan tautan ini malah di-downvote

    • Setahu saya, repost itu tidak masalah selama bukan pengguna yang sama yang mengirimkannya berulang kali
    • [komentar dihapus]