- Video.js v10 yang ditulis ulang sepenuhnya untuk pertama kalinya dalam 16 tahun mengurangi ukuran bundle sebesar 88% dan lahir kembali dengan struktur yang sesuai untuk lingkungan pengembangan modern
- Mendukung React, TypeScript, dan Tailwind sebagai warga kelas satu, serta menyediakan UI bawaan yang estetis dan struktur dokumentasi yang ramah AI
- Dengan Streaming Processor Framework (SPF) yang baru, dihadirkan mesin streaming modular yang memungkinkan penggabungan hanya fitur yang dibutuhkan, mencapai bobot ringan setara 12% dibanding HLS.js
- Dengan arsitektur berbasis composition dan sistem skin React/Web Components, UI dan fitur dapat diganti atau dihapus dengan bebas
- Menargetkan rilis resmi pada 2026, dan sedang berkembang menjadi platform media open source generasi berikutnya melalui pengembangan kolaboratif dengan AI dan ekosistem preset yang dapat diskalakan
Gambaran umum beta Video.js v10
- Beta Video.js v10.0.0 adalah penulisan ulang total pertama dalam 16 tahun, hasil kolaborasi tidak hanya dari Video.js tetapi juga berbagai proyek open source seperti Plyr, Vidstack, dan Media Chrome
- Ekosistem dengan total 75 ribu GitHub stars dan skala miliaran pemutaran per bulan ikut berpartisipasi, dan dirancang ulang dengan mempertimbangkan metode pengembangan modern serta lingkungan pengembangan berbantuan AI
- Tujuan utamanya adalah mengurangi ukuran bundle sebesar 88%, memberikan dukungan kelas satu untuk React, TypeScript, dan Tailwind, serta menyediakan UI bawaan yang estetis dan struktur dokumentasi yang ramah AI
Peningkatan ukuran bundle dan performa
- Pemutar dasar Video.js v10 memiliki ukuran bundle dasar 88% lebih kecil dibanding v8, dan bahkan saat fungsi ABR (Adaptive Bitrate) dihapus masih 66% lebih kecil
- Contoh: basis v8 260.5kB (minified) → pemutar video HTML v10 97.4kB (minified), versi React 62.0kB
- Dengan diperkenalkannya Streaming Processor Framework (SPF) yang baru, dimungkinkan membangun mesin streaming modular yang hanya menggabungkan fitur yang diperlukan
- Untuk penggunaan HLS sederhana, v10+SPF hanya 19% dari ukuran file v8+VHS
- Mesin SPF sendiri hanya 12% dari ukuran HLS.js-light (38.5kB minified) dan dioptimalkan untuk pemrosesan ABR sederhana
- SPF kompatibel dengan semua mesin yang ada seperti HLS.js, Shaka, dan dash.js, sehingga bila fitur DRM atau iklan yang kompleks tidak dibutuhkan, pengurangan ukuran ekstrem dapat dicapai
Arsitektur berbasis composition
- v10 memakai struktur komponen yang memisahkan State, UI, dan Media, sehingga setiap elemen dapat diganti atau dihapus secara independen
- Fungsi
createPlayer() menerima array features untuk hanya menyertakan fitur yang diperlukan
- Contoh: jika fitur audio tidak dibutuhkan, kode
volume dan mute tidak akan ikut masuk ke bundle
- Untuk menghapus UI, cukup jangan memuat skin — kode yang tidak diperlukan bisa dikeluarkan sepenuhnya
- Contoh React dengan konfigurasi minimum berjalan dengan ukuran kurang dari 5kB (gzipped) dan hanya mencakup tombol play/pause sederhana
Kustomisasi UI dan sistem skin
- v10 menyediakan sistem skin berbasis React dan Web Components, dan mengadopsi struktur unstyled UI primitives yang terinspirasi dari Base UI dan Radix
- Setiap komponen UI menghasilkan satu elemen HTML sehingga dapat dikendalikan secara langsung
- Handle timeline yang pada v8 dikendalikan dengan pseudo-element CSS kini pada v10 disediakan sebagai elemen DOM nyata, sehingga styling menjadi lebih sederhana
- Beta ini menyertakan dua skin
- Skin bawaan: estetika semi-transparan (frosted), animasi halus
- Skin minimal: bentuk dasar ringkas untuk kustomisasi
- Desain dialog error pada skin juga diseragamkan, sehingga kualitas visual meningkat
Sistem preset
- v10 memperkenalkan konsep preset berdasarkan tujuan penggunaan, menyediakan template pemutar siap pakai yang menggabungkan skin, fitur, dan konfigurasi media
- Video preset: untuk video web umum
- Audio preset: untuk audio saja seperti podcast
- Background video preset: untuk video latar, tanpa kontrol dan audio
- Preset menyediakan titik awal yang cepat, namun semua komponennya tetap dapat diganti, sehingga skalabilitas penuh tetap terjaga
- Ke depannya akan ditambahkan preset untuk pendidikan, short-form, dan platform kreator
Desain yang ramah AI
- v10 menargetkan struktur yang memungkinkan AI agent ikut mengembangkan
- Komponen yang tidak diabstraksikan dan unstyled UI primitives meningkatkan keterpahaman kode
- Menyediakan file llms.txt untuk efisiensi penelusuran dokumentasi, termasuk versi per framework
- Semua dokumentasi disediakan dalam format Markdown, sehingga AI dapat mengaksesnya langsung tanpa konteks HTML yang tidak perlu
- Dukungan pengembangan pengguna di masa depan direncanakan melalui AI skill set dalam repositori
Panduan penggunaan beta
- API masih belum stabil, dan beberapa antarmuka dapat berubah sebelum rilis resmi
- Saat ini berfokus pada fitur pemutaran dasar untuk website; aksesibilitas, subtitle, dan dukungan berbagai format dimungkinkan, tetapi menu pengaturan dan sejenisnya belum diimplementasikan
- Feedback melalui GitHub Issues dan Discord sedang dikumpulkan secara aktif
- Pengguna versi lama disarankan bermigrasi setelah migration guide dipublikasikan
Roadmap berikutnya
- Menargetkan rilis resmi (GA) pada pertengahan 2026
- Direncanakan mencapai kesetaraan fitur dengan Plyr, Vidstack, dan Media Chrome
- Dukungan fitur iklan direncanakan untuk paruh kedua 2026
- Migration guide dan preset tambahan akan disediakan
1 komentar
Komentar Hacker News
Bagi yang penasaran, tema warna syntax highlighting di situs ini adalah “gruvbox”
Secara pribadi saya sangat suka, tapi butuh waktu cukup lama untuk menemukannya
tautan GitHub gruvbox
Saya belum pernah memakai video.js, tapi rasanya situs dan iklannya ditujukan untuk orang yang sudah familiar dengannya
Satu hal yang saya terus tanyakan saat membaca adalah, apa bedanya dengan tag video HTML? Apa cuma controllernya yang berbeda?
Tag video sekarang memang sudah cukup bagus, tapi Video.js punya pembeda seperti styling yang konsisten antar-browser, fitur lanjutan (analitik, DRM, video 360 derajat, dll.), dan dukungan berbagai format streaming (HLS, DASH, dll.)
Pada akhirnya, ini memang bisa dibuat dengan tag video, tapi kalau begitu ujung-ujungnya Anda akan membuat sesuatu seperti Video.js sendiri
Kalau Anda butuh player atau fitur streaming yang stabil, sebaiknya pakai Video.js
Sebagai referensi, saya pernah membuat player siaran TV untuk negara Georgia yang mendukung dari LG SmartTV 2009 sampai browser terbaru
Ini penting karena penyesuaian bitrate dinamis. Caching juga jadi lebih efisien
Saya penasaran apakah situasi soal WebVTT sudah berubah belakangan ini
Dulu saya pernah mencoba mengustomisasi rendering subtitle, dan itu sangat sulit
Saya penasaran kenapa ini tidak didistribusikan sebagai Web Component
Menurut saya ini use case yang sempurna — ada kontrol bawaan pada objek yang bermakna
Pada akhirnya kami menyelesaikannya dengan membuat shim untuk React, tapi itu malah menimbulkan masalah lain
Di VJS 10, kami menemukan titik kompromi dengan arsitektur headless core + lapisan rendering
Hasilnya, React component dan Web Component sama-sama didukung
tautan GitHub media-chrome
Karena bug Shadow DOM dan kompatibilitas antar-framework, akhirnya waktu yang dihabiskan untuk setup lingkungan lebih banyak daripada untuk player itu sendiri
Kebanyakan pengguna tidak peduli soal itu. Menurut saya library JS + API yang rapi jauh lebih baik
Hanya saja, alasan memakai React adalah karena tree-shaking memungkinkan hanya kode yang dibutuhkan yang ikut dimasukkan
Dalam HTML biasa, optimasi seperti ini masih sulit, jadi build pipeline pada dasarnya berperan sebagai semacam generator Web Component
Saya sempat mencoba mengganti audio player saya dari Plyr ke Video.js, tapi ada beberapa kesenjangan fitur pada pengaturan default
Tidak ada kecepatan putar di bawah 1x, tidak bisa mengatur volume di mobile, tidak ada tombol seek, sulit mengustomisasi warna, demo kurang, dan lain-lain
Saat ini kami menargetkan feature parity dengan Plyr dan lain-lain, serta menargetkan GA sekitar pertengahan tahun ini
Saya tidak terlalu paham soal video hosting, tapi pernah memakai HTML5 video player
Saya penasaran apakah di sisi server saya perlu membuat endpoint yang langsung menyajikan chunk video
Jika saya membaginya menjadi unit 2MB dengan ffmpeg, sebaiknya saya taruh di mana? CDN? Server sendiri?
Konfigurasi seperti apa yang paling optimal agar Video.js berjalan semulus mungkin?
Cocok dengan Video.js, dan di LG TV juga bisa memutar berbasis tag
Selama server mendukung permintaan Range, browser akan menanganinya sendiri
Saya memakai kombinasi object storage + CDN seperti DO Spaces, dan itu berjalan baik
Encoding dan segmentasi harus ditangani sekaligus (misalnya dengan formatter dash di ffmpeg)
Untuk menyamakan panjang segmen audio dan video, kalkulator GOP sangat membantu
Umumnya, Anda meng-encode beberapa resolusi dari sumber berkualitas tinggi, lalu mengunggahnya bersama manifest HLS/DASH ke tempat seperti S3
Player kemudian mengikuti satu URL manifest untuk menemukan semua resource yang dibutuhkan
Postingan blognya benar-benar ditulis dengan sangat baik
Cara penjelasannya yang menghormati pembaca sebagai orang yang ahli sangat berkesan. Saya berharap ada lebih banyak pengumuman produk seperti ini
Selamat, Steve!
Dulu saat bekerja di JW Player, saya terkesan dengan kesederhanaan Video.js dan sistem temanya
Semoga versi kali ini juga sukses besar
Menyenangkan bisa berbincang dengan tim JW di FOMS dan berbagai konferensi
Teknologi video masih merupakan bidang yang panas, jadi semoga suatu saat kamu kembali lagi
Angka 88% itu mengejutkan
Saya penasaran apa titik peningkatan terbesar — mungkin sistem plugin
Saya juga ingin tahu apakah fitur integrasi utama sempat rusak selama proses rewrite
Saya penasaran soal perubahan arsitektur selama proses rewrite, dan trade-off dibanding desain Video.js sebelumnya