1 poin oleh GN⁺ 2025-03-27 | 1 komentar | Bagikan ke WhatsApp
  • 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

 
GN⁺ 2025-03-27
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

    • Ini salah satu fitur super niche tapi super penting yang terasa jelas setelah tahu, tapi sulit terpikirkan sebelumnya
    • Ini terasa seperti jenis topik yang menjadi dasar podcast 99% Invisible, dan episode tentang lift sangat bagus
  • Ada video yang melacak semua pergantian shot kamera dalam pertunjukan halftime: https://www.youtube.com/watch?v=YXNWfFtgbNI

    • Di kanal YouTube Hamish Hamilton, kita juga bisa melihat seperti apa tampilannya dari ruang kontrol, termasuk saat asisten sutradara memanggil shot: https://m.youtube.com/watch?v=gfjWjkTP4p8
      Hamish Hamilton telah menyutradarai semua pertunjukan halftime Super Bowl sejak 2010
    • John DeMarsico menyutradarai siaran SNY untuk NY Mets, dan kadang mengunggah cuplikan di balik layar tentang bagaimana banyak kamera digabung menjadi satu produksi; cukup menarik untuk ditonton
      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

    • “Tanpa pemasaran” jelas merupakan ungkapan yang keliru
      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

    • Dari sudut pandang pengembang utama, kami memang banyak menggunakan MQTT dan itu inti arsitektur, tetapi Elixir memberi keuntungan besar dalam menangani banyak proses yang longgar keterkaitannya
      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
    • Ini memang salah satu kegunaan inti yang sejak awal dirancang untuk Elixir/Erlang/BEAM
      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
    • Semua bahasa pemrograman bisa melakukan pekerjaan apa pun
      Perbedaannya ada pada seberapa mudah bahasa itu membuat pekerjaan tersebut
    • Artikel itu juga mengatakan, “Kami melihat apa yang bisa dilakukan Erlang VM, dan itu sangat cocok dengan kebutuhan kami. Baru ketika Anda mencoba mengimplementasikannya sendiri, Anda benar-benar memahami hal-hal yang disediakan Elixir secara default.”
  • 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

    • Elixir dan Erlang selalu mendapat rasa hormat dan pujian, jadi saya selalu penasaran kenapa penggunaannya tidak lebih luas
      Saya juga tidak terkecuali; selama puluhan tahun saya mendengar hal-hal baik tentangnya, tetapi belum pernah memakainya di proyek nyata
    • Saya memakai Elixir di startup robotika dan sepenuhnya setuju
      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

    • Saya rasa tidak ada bukti khusus bahwa Gleam menangkap bug runtime lebih cepat daripada Elixir atau Erlang
      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
    • Salah satu keluhan saya tentang Elixir adalah tidak adanya tipe
      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
    • Gleam sudah memiliki subset fitur OTP di https://github.com/gleam-lang/otp
      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 adalah materi yang menunjukkan kisaran parameter yang sejauh ini saya tangani untuk sekitar 200 model kamera siaran: https://pastebin.com/cgeG2r0k
      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
    • Orang yang hanya pernah menangani peralatan video konsumen memerlukan pendidikan tambahan dan materi dasar untuk memahami perbedaan ruang warna 420 dan 422, mengapa kamera sinema serius merekam video sebelum color grading, dan seperti apa proses color grading dalam pascaproduksi
      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