Menyesuaikan fidelitas visual Super Bowl dengan Elixir
(elixir-lang.org)- Cyanview membuat peralatan camera shading yang menyelaraskan warna, eksposur, dan skin tone dari ratusan kamera dalam siaran langsung besar seperti Super Bowl, serta menggunakan Elixir pada jalur kontrol intinya
- Lokasi siaran tidak menoleransi satu kegagalan pun karena dampaknya bisa fatal, sehingga Cyanview menjadikan kontrol jaringan IP dan kemampuan Erlang VM untuk mengoordinasikan perangkat sebagai fondasi produknya
- Perangkat RCP dan RIO berjalan di atas Yocto Linux dengan logika berbasis Elixir dan C, serta mendukung produksi jarak jauh melalui komunikasi berbasis MQTT dan relay cloud terbatas
- Encoding/decoding biner Elixir dan supervision tree dimanfaatkan untuk integrasi berbagai perangkat proprietary, isolasi gangguan koneksi, dan validasi fitur secara cepat
- Tim beranggotakan 9 orang mendukung koneksi lebih dari 200 kamera serta lokasi seperti Le Mans, Ninja Warrior, Australian Open, dan US Open, memperluas cakupan produk tim kecil
Masalah yang diselesaikan Cyanview di lokasi siaran
- Dalam siaran langsung seperti Super Bowl, warna, eksposur, dan tone visual sekitar 200 kamera harus diselaraskan
- Camera shading adalah pekerjaan menyesuaikan setiap kamera agar menampilkan warna rumput yang sama dan skin tone yang sama
- Perangkat targetnya beragam, mulai dari kamera siaran besar, kamera drone, kamera PTZ, hingga kamera mirrorless yang dipasang pada gimbal
- Cyanview adalah perusahaan kecil asal Belgia yang menjual produk untuk industri siaran video langsung, dengan fokus utama pada shading
- Alat di industri siaran harus langsung terbukti dalam satu event live, dan kegagalan keras sulit ditoleransi
Cara RCP menyebar dan lokasi penggunaannya
- Remote Control Panel (RCP) yang dibuat oleh tim kecil beranggotakan 3 orang menyebar di industri berkat fungsinya, bukan pemasaran
- RCP digunakan oleh operator video profesional di lokasi berikut
- Olympics
- Super Bowl
- NFL
- NBA
- ESPN
- Amazon
- Banyak fashion show di Paris
- Ada kasus satu RCP menangani lebih dari 100 kamera tanpa masalah, dan ini diimplementasikan di atas network stack Elixir
- Cyanview memilih Elixir untuk memperoleh kemampuan networking, resiliensi, dan iterasi fitur produk yang cepat
Alasan memilih Elixir
- Tim pendiri Cyanview terutama memiliki pengalaman pengembangan embedded, dan produknya banyak berisi kode C level rendah serta FPGA
- Detail level rendah dalam color science dan kebutuhan timing yang ketat membuat implementasi level rendah diperlukan
- Bahkan setelah digitalisasi penuh, software kamera sering kali masih terikat pada sistem analog atau cara koneksi proprietary
- Sejak awal, mereka menargetkan kontrol berbasis IP, sehingga strukturnya menjadi software yang mengelola perangkat di atas jaringan umum
- Seiring meningkatnya produksi jarak jauh, makin luas pula cara kerja di mana tim produksi beroperasi dari lokasi pusat dan mengurangi personel di lapangan
- Protokol radio frequency khusus atau kabel serial sulit diperluas untuk jarak antarbenua
- Erlang VM dirancang untuk berkomunikasi dan mengoordinasikan banyak perangkat secara stabil melalui jaringan, dan hal ini berujung pada adopsi Elixir
Integrasi protokol dan contoh produksi jarak jauh
- Developer Ghislain mengadopsi Elixir untuk mengintegrasikan kamera dan perangkat video melalui berbagai protokol jaringan
- Elixir menyediakan kemampuan praktis untuk meng-encode dan men-decode data biner hingga tingkat bit individual
- Kekayaan intelektual inti Cyanview terletak pada integrasi perangkat dalam jumlah besar dan reverse engineering
- Produk dirancang agar kompatibel dengan berbagai sistem kamera profesional dan perangkat terkait yang digunakan pelanggan
- API juga disediakan agar dapat terintegrasi mulus dengan perangkat eksternal
-
Contoh kontrol jarak jauh Beijing–Paris
- Dalam contoh Olympics di Tiongkok, studio Beijing menggunakan banyak kamera Panasonic PTZ, dan sebagian besar tim harus mengendalikannya dari Paris secara jarak jauh
- Protokol kamera Panasonic tidak dirancang dengan mempertimbangkan penggunaan internet, dan setiap penyesuaian membutuhkan timing yang presisi serta beberapa pesan
- Latensi jaringan dapat menyebabkan timeout, koneksi terputus, dan kegagalan sistem
- Operasinya dilakukan dengan menempatkan peralatan Cyanview di samping kamera di Beijing dan mengendalikannya dari Paris melalui IP
- Perangkat di lokasi yang sama berkomunikasi dan berkoordinasi di jaringan melalui protokol MQTT kustom
RCP, RIO, dan konfigurasi UI
- Seluruh sistem terdiri dari perangkat RCP yang menjalankan Yocto Linux serta logika berbasis Elixir dan C
- Python masih digunakan untuk scripting dan alat bantu, tetapi perannya semakin berkurang
- Beberapa mikrokontroler dan perangkat on-camera berkomunikasi melalui MQTT
- Relay cloud membantu konektivitas, sementara dashboard dan UI controller menyediakan pemantauan dan kontrol
- Ada dua perangkat inti
- RCP: perangkat kontrol di sisi produksi
- RIO: perangkat yang menangani pengoperasian kamera dengan latensi rendah
- RCP dan RIO sama-sama menjalankan Elixir
- UI konfigurasi saat ini dibangun dengan Elm
- Bergantung pada prioritas, UI konfigurasi dapat beralih ke Phoenix LiveView untuk mengurangi jumlah bahasa yang digunakan
- UI web controller sudah menggunakan LiveView dan berjalan baik bahkan pada mesin embedded Linux berspesifikasi rendah
Cloud terbatas dan cluster perangkat lokal
- Bagian cloud Cyanview saat ini terbatas dan bukan struktur yang berpusat pada SaaS
- Relay cloud menangani distribusi dan berbagi kontrol kamera, penerusan port jaringan antarlokasi, serta fungsi terkait
- Relay cloud juga dibangun dengan Elixir
- Perangkat Elixir di lapangan membentuk cluster IP dengan protokol kustom berbasis MQTT yang disesuaikan untuk pekerjaan tersebut
- Perangkat-perangkat ini berkomunikasi dengan ratusan kamera dan perangkat video lainnya
Isolasi kegagalan dan supervision tree
- Saat berintegrasi dengan banyak perangkat proprietary, keandalan dan kualitas dokumentasi tiap perangkat sangat bervariasi
- Sebagian perangkat umum digunakan sehingga karakteristiknya sudah dikenal baik, sebagian menyediakan dokumentasi bagus, tetapi perangkat lain menunjukkan perilaku yang sulit diprediksi
- Jika terjadi masalah sementara, protokol buggy, atau gangguan koneksi fisik pada satu koneksi kamera, bagian lain harus tetap berjalan
- Supervision tree Elixir menguntungkan untuk mencegah masalah koneksi individual menyebar menjadi kegagalan seluruh sistem
Pembagian peran tim 9 orang
- Cyanview tumbuh perlahan selama 9 tahun, rata-rata menambah 1 orang setiap tahun
- Saat ini tim beranggotakan 9 orang mendukung event siaran berskala terbesar di dunia
- Ada 2 developer Elixir
- Daniil menangani sebagian perombakan UI dan arah menuju lebih banyak fungsi cloud
- Ghislain menangani kamera dan pekerjaan integrasi
- LiveView dan Elm digunakan untuk UI perangkat dan dashboard
- Developer embedded lain tidak banyak menggunakan Elixir dalam pekerjaan sehari-hari, tetapi mereka terbiasa mengimplementasikan protokol dan encoding dengan Elixir
- Alasan utama mereka tidak mempelajari Elixir secara mendalam adalah kurangnya waktu, dan keahlian Elixir yang mendalam tidak mutlak diperlukan
- Pekerjaan tim mencakup desain PCB, pemilihan komponen elektronik, reverse engineering protokol, antarmuka display, implementasi FPGA, manajemen production test, produksi nyata, hingga pembaruan firmware
Perluasan fitur dan pengembangan berpusat pada pelanggan
- Peralatan Cyanview digunakan di lokasi berikut
- Lebih dari 40 kamera onboard kendaraan di 24 Hours of Le Mans
- Ninja Warrior
- Australian Open
- US Open
- Studio di Louvre
- NFL pylons
- Koneksi simultan lebih dari 200 kamera
- Mereka membuat perangkat berbasis Elixir untuk dunia yang berjalan di atas IP, dan melalui itu secara bersamaan mendukung berbagai perangkat serta menyediakan fitur baru
- Perpindahan dari radio frequency lokal, koneksi serial, dan protokol proprietary yang tidak fleksibel ke jaringan IP mengubah cara sistem kamera dioperasikan
- Set fitur mencakup hal berikut
- Multicam tanpa batas
- Tally lights
- Kontrol Pan & Tilt
- Integrasi color corrector
- Produksi jarak jauh berskala global
- Ketika kebutuhan untuk merekam adegan penonton dengan kamera mirrorless yang dipasang pada gimbal meningkat, Cyanview dengan cepat membuat prototipe kontrol gimbal dan memvalidasinya lewat pengujian bersama pelanggan
- Arsitektur yang fleksibel memungkinkan fitur baru dikirim cepat tanpa merusak fondasi inti
- Perusahaan kamera seperti Canon atau RED yang tidak membuat remote shading untuk siaran merekomendasikan Cyanview kepada pelanggan mereka
- Cyanview memandang dirinya sebagai partner bagi sebagian besar perusahaan hardware siaran, bukan pesaing
- Mereka lebih mengutamakan dukungan keberhasilan event pelanggan dan layanan pelanggan yang mendalam daripada pemasaran
Arah ke depan
- David Bourgeois menjawab bahwa jika harus memilih lagi pun ia akan memilih Elixir
- Erlang VM sangat sesuai dengan kebutuhan Cyanview, dan nilai fitur bawaan Elixir sulit dipahami sepenuhnya sebelum mencoba mengimplementasikannya sendiri
- Cyanview ingin memperbesar tim, tetapi berusaha tumbuh secara bertanggung jawab meskipun membutuhkan waktu
- Saat ini ada lebih banyak pekerjaan daripada yang mampu ditangani tim kecil mereka
- Produk pelengkap bersama perangkat RCP utama sudah tersedia, dan lebih banyak produk direncanakan ke depan
- Produk cloud dan proyek hardware berdasarkan pembelajaran sejauh ini sedang direncanakan
- Elixir akan memegang peran yang lebih penting dalam sebagian siaran langsung berskala terbesar di dunia
1 komentar
Komentar Hacker News
Begitu tahu, rasanya sangat masuk akal bahwa kamera yang ditempatkan di berbagai sudut dalam acara olahraga harus dikalibrasi warnanya satu per satu
Sangat menyenangkan membaca tentang masalah sulit yang tidak terlihat oleh kebanyakan orang
Ada video yang melacak semua pergantian shot kamera dalam pertunjukan halftime: https://www.youtube.com/watch?v=YXNWfFtgbNI
Hamish Hamilton telah menyutradarai semua pertunjukan halftime Super Bowl sejak 2010
https://x.com/SNYtv/status/1832250958258036871
Bagian yang mengatakan bahwa mereka “tanpa pemasaran pun memperoleh reputasi di antara para profesional terampil dan menjadi bagian penting dari acara live terbaik di dunia” terdengar sangat khas industri hiburan
Jika mengerjakan pertunjukan yang sama dengan kru yang sama dari tahun ke tahun, pada akhirnya semua orang benar-benar saling kenal dan strukturnya jadi seperti keluarga
Cyanview punya website storefront dan juga posting pemasaran di LinkedIn
Senang melihat Elixir mendapatkan tenaga di sistem penyiaran mission-critical
Saya penasaran seberapa besar keandalan Cyanview berasal dari Elixir itu sendiri, atau hanya karena mereka membuat implementasi MQTT dengan baik
Saya juga penasaran apakah ada fitur spesifik Elixir yang sulit direplikasi dalam bahasa lain
BEAM dan OTP memberikan pendekatan yang sehat terhadap konkurensi, dan Elixir adalah bahasa yang bagus di atasnya
Isolasi prosesnya sangat baik, sampai heap pun dipisah per proses, jadi kode matang yang stabil bisa berjalan berdampingan dengan fitur eksperimental tanpa terlalu khawatir seluruh sistem ambruk, dan komunikasi antaraproses juga mudah
Berkat supervision tree, pengelolaan proses menjadi mudah, dan kami bahkan bisa membuat supervisor khusus dengan strategi restart yang berbeda-beda
Karena lingkungan ini terdiri dari koneksi jaringan yang putus lalu tersambung kembali, ketahanan sistem sering diuji seperti physical chaos monkey
Imutabilitas ala BEAM sangat menyederhanakan penulisan kode konkurensi; di dalam satu proses tidak perlu khawatir data berubah diam-diam, dan proses lain juga tidak bisa mengubah state saya
Jadi mutex atau critical section hampir tidak pernah dibutuhkan, meski deadlock tetap mungkin terjadi, jadi ini bukan solusi ajaib untuk semua hal
Yaitu mengoordinasikan dan merutekan banyak feed real-time dengan failover dan jalur alternatif; target aslinya adalah panggilan telepon
Stream video memang punya data per detik yang jauh lebih besar, tetapi prinsipnya sebagian besar tetap sama
Saya cenderung kritis terhadap sistem ini, tetapi untuk penggunaan seperti ini, bahkan dalam keadaan default pun fondasinya sangat kuat
Perbedaannya ada pada seberapa mudah bahasa itu membuat pekerjaan tersebut
Saya sudah menerapkan Elixir di berbagai tempat seperti aplikasi keuangan penting, B2B growth intelligence, deteksi penipuan, dan belanja scan-and-go
Setiap kali, seperti tim engineering dalam artikel ini, pengalaman developer dan hasil akhirnya melampaui harapan; kalau belum pernah mencoba Elixir, layak diberi kesempatan
Saya juga tidak terkecuali; selama puluhan tahun saya mendengar hal-hal baik tentangnya, tetapi belum pernah memakainya di proyek nyata
Misalnya, kami baru saja merilis fitur di produk cloud yang memungkinkan pengguna memanggil robot dari jarak jauh ke waypoint tertentu di dalam fasilitas, lalu menampilkan posisi robot secara real-time di peta saat robot bergerak
Kami membuatnya hanya dengan MQTT, LiveView, Phoenix PubSub, dan JavaScript yang sangat sedikit untuk manipulasi peta; di luar kode yang sudah ada untuk menampilkan PNG peta dari S3 atau menangani penerimaan MQTT, bagian cloud-nya dikerjakan satu orang dalam sekitar 2–3 minggu
Tentu ini bisa dilakukan dengan bahasa lain, tetapi fitur inti bahasanya begitu bagus sehingga, untuk kebutuhan kami, pilihan lain jadi kalah telak
Saya penasaran apakah Gleam akan praktis untuk aplikasi serupa, bukan hanya karena runtime OTP/BEAM
Sepertinya tetap perlu memanfaatkan library Elixir yang belum ada di Gleam, dan karena tipe statis kompilasinya mungkin lebih lambat, tetapi error runtime bisa tertangkap lebih awal
Saya ingin tahu apakah ini lebih merupakan kompromi antara debugging dan iterasi dinamis yang cepat, dan saya sedang mencoba memutuskan antara Gleam dan Elixir
Saya juga suka sintaks bergaya ML di Gleam versi lama, dan saya menyukai tipe statis
Saya sedang mengganti C dengan Zig, dan selain x64 saya juga mempelajari ARM sambil mengasah lagi assembly
Rekam jejak keandalan Erlang lebih kuat daripada banyak bahasa bertipe statis, termasuk Java
Memang ada jenis error yang bisa dicegah tipe statis, tetapi jauh lebih banyak error yang tidak bisa dicegah
Untuk mengklaim bahwa bahasa seperti TS, Java, Swift, Go, atau Gleam mengurangi cacat runtime nyata dibanding Erlang atau Elixir, dibutuhkan data dunia nyata
Memang sedang dikerjakan sekarang, tetapi saya belum bisa memakainya, jadi Gleam juga tampak masuk akal
Hanya saja saat kami memulai, Gleam bahkan belum mencapai 0.1 dan saya pun belum pernah mendengarnya
Proyek yang mencampur Erlang, Elixir, dan Gleam mungkin saja dilakukan, tetapi saya tidak yakin seberapa praktis itu
Kompilasinya juga sangat cepat
Saya memang belum pernah mengerjakan proyek yang sangat besar, tetapi bahkan saat memakai library yang cukup berat, semuanya tetap terkompilasi sangat cepat
Dunia video digital terasa seperti kerabat dunia IT, tetapi bagi orang di luar industri video, selalu terasa ada hambatan masuk yang tinggi
Cara mereka menyebut resolusi, warna, jaringan, dan media penyimpanan hampir terlihat seolah sengaja dibuat berbeda
Ini hanya item yang dipakai engineer video untuk menyesuaikan kualitas gambar, dan biasanya tidak mencakup fungsi untuk operator kamera
Kesulitannya terletak pada menciptakan konsistensi di antara begitu banyak kamera dan protokol
Setelah itu barulah bisa masuk ke masalah video mentah yuv/y4m tanpa kompresi, video berbitrate sangat tinggi dengan kompresi rendah, dan pembuatan video proxy karena data asli terlalu besar sehingga sulit diedit bahkan di workstation yang kuat
Jika tidak ada alasan profesional, hampir tidak ada manfaat bagi pengguna akhir biasa untuk mendalaminya
Namun jika Anda berniat menghabiskan 7.000 dolar untuk kamera RED lalu menambah 13.000 dolar lagi untuk lensa, gimbal, cage, follow focus, matte box, kartu memori, dan sebagainya demi membuat paket produksi satu kamera yang kecil dan efisien biaya, itu layak didalami
Lebih dari 30 tahun lalu, menyesuaikan keseimbangan warna kamera di lingkungan studio merupakan bagian dari pekerjaan
Tidak perlu komputer, tetapi jumlah kameranya paling banyak hanya lima
Bagian tulisan yang menyebut bahwa “perangkat-perangkat di satu lokasi berkomunikasi dan berkoordinasi di jaringan dengan protokol MQTT kustom, dan dari satu Remote Control Panel (RCP) yang diimplementasikan di atas stack jaringan Elixir dapat menangani lebih dari 100 kamera tanpa masalah” cukup menonjol
Saya memahami MQTT dibangun di atas TCP, dan meskipun saya tidak tahu apakah saya akan menemukan solusi yang sama, itu tampak seperti pilihan yang cukup bagus