1 puan yazan GN⁺ 2025-03-27 | 1 yorum | WhatsApp'ta paylaş
  • Cyanview, Super Bowl gibi büyük canlı yayınlarda yüzlerce kameranın renk, pozlama ve cilt tonlarını eşleştiren kamera shading ekipmanları üretiyor ve temel kontrol yolunda Elixir kullanıyor
  • Yayın sahasında tek bir arıza bile kritik olduğundan Cyanview, IP ağ kontrolünü ve Erlang VM’in cihazları koordine etme yeteneğini ürününün temeli olarak benimsiyor
  • RCP ve RIO cihazları, Yocto Linux üzerinde Elixir ve C mantığıyla çalışıyor; MQTT tabanlı iletişim ve sınırlı bulut rölesiyle uzaktan prodüksiyonu destekliyor
  • Elixir’in ikili veri kodlama/kod çözme özellikleri ve supervision tree yapısı, çeşitli tescilli ekipman entegrasyonlarında, bağlantı arızalarının yalıtılmasında ve hızlı özellik doğrulamada kullanılıyor
  • 9 kişilik ekip, 200’den fazla kamera bağlantısını ve Le Mans, Ninja Warrior, Australian Open, US Open gibi etkinlikleri destekleyerek küçük bir ekibin ürün kapsamını genişletiyor

Yayın sahasında Cyanview’ın çözdüğü sorun

  • Super Bowl gibi canlı yayınlarda yaklaşık 200 kameranın renk, pozlama ve görsel tonunun eşleştirilmesi gerekir
  • Kamera shading, her kameranın aynı çim rengini ve aynı cilt tonlarını göstermesi için yapılan ayarlama işidir
  • Hedef ekipmanlar; büyük yayın kameralarından drone kameralarına, PTZ kameralara ve gimbal takılı aynasız kameralara kadar çeşitlidir
  • Cyanview, canlı video yayın endüstrisine ürün satan küçük bir Belçika şirketidir; ana uzmanlık alanı shadingdir
  • Yayın endüstrisindeki araçların tek bir canlı etkinlikte hemen kendini kanıtlaması gerekir ve donanımsal arızaya tolerans göstermek zordur

RCP’nin yayılma biçimi ve kullanıldığı sahalar

  • 3 kişilik küçük bir ekibin geliştirdiği Remote Control Panel (RCP), pazarlamadan çok işlevleri sayesinde sektöre yayıldı
  • RCP, profesyonel video operatörleri tarafından şu sahalarda kullanılıyor
    • Olympics
    • Super Bowl
    • NFL
    • NBA
    • ESPN
    • Amazon
    • Paris’teki çok sayıda defile
  • Tek bir RCP’den 100’den fazla kameranın sorunsuz yönetildiği örnekler var; bu, Elixir ağ yığını üzerinde uygulanmış durumda
  • Cyanview, ağ özellikleri, dayanıklılık ve ürün özelliklerinde hızlı yineleme elde etmek için Elixir’i seçti

Elixir’in seçilme nedeni

  • Cyanview’ın kurucu ekibi çoğunlukla gömülü geliştirme deneyimine sahipti; üründe çok miktarda düşük seviyeli C kodu ve FPGA bulunuyor
  • Renk biliminin düşük seviyeli ayrıntıları ve sıkı zamanlama gereksinimleri nedeniyle düşük seviyeli uygulama gerekiyor
  • Kamera yazılımları, tamamen dijitalleştikten sonra bile çoğu zaman analog sistemlere veya tescilli bağlantı yöntemlerine bağlı kalıyor
  • En baştan IP tabanlı kontrol hedeflendiği için yapı, yazılımın genel amaçlı ağlar üzerinden ekipmanları yönettiği bir modele dönüştü
  • Uzaktan prodüksiyon arttıkça, prodüksiyon ekiplerinin merkezi bir konumdan çalıştığı ve sahadaki personelin azaltıldığı yöntem yaygınlaştı
  • Özel radyo frekansı veya seri kablo protokollerini kıtalar arası mesafelere ölçeklemek zordur
  • Erlang VM, ağ üzerinden çok sayıda cihazın güvenilir biçimde iletişim kurup koordine edilmesi için tasarlandı; bu da Elixir’in benimsenmesine yol açtı

Protokol entegrasyonu ve uzaktan prodüksiyon örneği

  • Geliştirici Ghislain, kameraları ve video ekipmanlarını çeşitli ağ protokolleriyle entegre etmek için Elixir’i devreye aldı
  • Elixir, ikili verileri tek tek bit düzeyine kadar kodlama ve kod çözme için pratik özellikler sunuyor
  • Cyanview’ın temel fikri mülkiyeti, çok sayıda ekipman entegrasyonu ve tersine mühendislikte yatıyor
  • Ürün, müşterilerin kullandığı çeşitli profesyonel kamera sistemleri ve ilgili ekipmanlarla uyumlu olacak şekilde tasarlandı
  • Harici ekipmanlarla sorunsuz entegrasyon için API de sağlanıyor
  • Beijing–Paris uzaktan kontrol örneği

    • Çin’deki Olympics örneğinde Beijing stüdyosu çok sayıda Panasonic PTZ kamera kullanıyordu ve ekibin büyük bölümünün bunları Paris’ten uzaktan kontrol etmesi gerekiyordu
    • Panasonic kamera protokolü internet kullanımı düşünülerek tasarlanmamıştı; her ayar için hassas zamanlama ve birden fazla mesaj gerekiyordu
    • Ağ gecikmesi timeout’lara, bağlantı kopmalarına ve sistem arızalarına yol açabilirdi
    • Cyanview ekipmanı Beijing’de kameraların yanına yerleştirilip Paris’ten IP üzerinden kontrol edilerek işletildi
    • Aynı konumdaki ekipmanlar, özel bir MQTT protokolüyle ağ üzerinde iletişim kurup koordine edildi

RCP, RIO ve UI yapısı

  • Tüm sistem, Yocto Linux çalıştıran RCP cihazlarından ve Elixir/C tabanlı mantıktan oluşur
  • Python hâlâ betikleme ve araç amaçlı kullanılıyor, ancak rolü giderek azalıyor
  • Birden çok mikrodenetleyici ve kamera üstü cihaz MQTT ile iletişim kuruyor
  • Bulut rölesi bağlantıya yardımcı oluyor; dashboard ve denetleyici UI’ları izleme ve kontrol sağlıyor
  • Temel ekipmanlar iki türdür
    • RCP: prodüksiyon tarafındaki kontrol cihazı
    • RIO: kameranın düşük gecikmeli kullanımından sorumlu cihaz
  • RCP ve RIO’nun ikisi de Elixir çalıştırır
  • Ayar UI’ı şu anda Elm ile oluşturulmuş durumda
  • Önceliklere bağlı olarak ayar UI’ı, dil sayısını azaltmak için Phoenix LiveView’a taşınabilir
  • Denetleyici web UI’ı zaten LiveView ile yapılmış ve düşük güçlü gömülü Linux makinelerinde de iyi çalışıyor

Sınırlı bulut ve yerel ekipman kümesi

  • Cyanview’ın bulut bölümü şu anda sınırlı; SaaS merkezli bir yapı değil
  • Bulut rölesi kamera kontrolünün dağıtımını ve paylaşımını, konumlar arası ağ portu iletimini ve ilgili işlevleri üstleniyor
  • Bulut rölesi de Elixir ile inşa edilmiş
  • Sahadaki Elixir cihazları, işe özel MQTT tabanlı özel bir protokolle IP kümesi oluşturuyor
  • Bu cihazlar yüzlerce kamera ve diğer video cihazlarıyla iletişim kuruyor

Arıza yalıtımı ve supervision tree

  • Çok sayıda tescilli ekipmanla entegrasyon yapıldığında cihazların güvenilirliği ve dokümantasyon kalitesi büyük farklılık gösterir
  • Bazı cihazlar yaygın kullanıldığı için özellikleri iyi bilinir, bazıları iyi dokümantasyon sunar; bazılarıysa öngörülmesi zor davranışlar sergiler
  • Bir kamera bağlantısında geçici sorun, hatalı protokol veya fiziksel bağlantı arızası oluşsa bile geri kalanların çalışmaya devam etmesi gerekir
  • Elixir’in supervision tree yapısı, tekil bağlantı sorunlarının tüm sistem arızasına dönüşmesini önlemede avantaj sağlar

9 kişilik ekibin iş bölümü

  • Cyanview 9 yıl boyunca yavaş büyüdü; ortalama olarak her yıl 1 kişi eklendi
  • Bugün 9 kişilik ekip, dünyanın en büyük yayın etkinliklerinden bazılarını destekliyor
  • 2 Elixir geliştiricisi var
    • Daniil, bazı UI yenilemelerinden ve daha fazla bulut özelliğine yönelik çalışmalardan sorumlu
    • Ghislain, kamera ve entegrasyon çalışmalarından sorumlu
  • LiveView ve Elm, cihaz UI’ları ve dashboard’larda kullanılıyor
  • Diğer gömülü geliştiriciler günlük işlerinde Elixir’i çok kullanmıyor, ancak protokol ve kodlama işlerini Elixir ile uygulamaya alışkınlar
  • Elixir’i derinlemesine öğrenmemelerinin başlıca nedeni zaman eksikliği ve derin Elixir uzmanlığının zorunlu olmamasıydı
  • Ekibin işleri PCB tasarımı, elektronik bileşen seçimi, protokol tersine mühendisliği, ekran arayüzleri, FPGA uygulaması, üretim testi yönetimi, gerçek prodüksiyon ve firmware güncellemelerine kadar uzanıyor

Özellik genişletme ve müşteri odaklı geliştirme

  • Cyanview ekipmanları şu sahalarda kullanılıyor
    • 24 Hours of Le Mans’ta 40’tan fazla araç içi kamera
    • Ninja Warrior
    • Australian Open
    • US Open
    • Louvre’daki stüdyo
    • NFL pylons
    • 200’den fazla kameranın eşzamanlı bağlantısı
  • IP üzerinde çalışan bir dünyaya yönelik Elixir tabanlı cihazlar geliştirildi; bu sayede çeşitli ekipman desteği ile yeni özellik sunumu aynı anda yürütülebiliyor
  • Yerel radyo frekansı, seri bağlantılar ve esnek olmayan tescilli protokollerden IP ağlarına geçiş, kamera sistemlerinin işletilme biçimini değiştirdi
  • Özellik seti şunları içerir
    • Sınırsız multi-cam
    • Tally lights
    • Pan & Tilt kontrolü
    • Renk düzeltici entegrasyonu
    • Dünya çapında uzaktan prodüksiyon
  • Gimbal takılı aynasız kameralarla seyirci görüntüleri çekme talebi artınca Cyanview, gimbal kontrolünü hızla prototipleyip müşterilerle test ederek doğruladı
  • Esnek mimari, temel altyapıyı bozmadan yeni özelliklerin hızlıca gönderilmesini sağlıyor
  • Canon veya RED gibi yayın shading remote’u üretmeyen kamera şirketleri müşterilerine Cyanview’ı öneriyor
  • Cyanview, kendisini çoğu yayın donanımı şirketiyle rakip olmaktan çok partner olarak görüyor
  • Pazarlamadan çok müşteri etkinliklerinin başarılı olmasını desteklemeye ve derin müşteri hizmetine önem veriyor

Bundan sonraki yön

  • David Bourgeois, yeniden seçim yapacak olsa yine Elixir’i seçeceğini söylüyor
  • Erlang VM, Cyanview’ın gereksinimlerine iyi uydu; Elixir’in kutudan çıktığı gibi sunduğu özelliklerin değerini, bunları kendi başınıza uygulamayı denemeden tam olarak anlamanın zor olduğunu düşünüyor
  • Cyanview ekibi büyütmek istiyor, ancak zaman alsa da sorumlu biçimde büyümeyi hedefliyor
  • Şu anda küçük ekibin kaldırabileceğinden daha fazla iş var
  • Ana RCP cihazlarının yanında tamamlayıcı ürünler zaten mevcut ve gelecekte daha fazla ürün planlanıyor
  • Bulut ürünü ve bugüne kadarki öğrenimlere dayanan donanım projeleri planlanıyor
  • Elixir, dünyanın en büyük canlı yayınlarından bazılarında daha önemli bir rol üstlenecek

1 yorum

 
GN⁺ 2025-03-27
Hacker News yorumları
  • Bir spor etkinliğinde farklı açılara yerleştirilmiş kameraların her biri için renk düzeltmesi yapılması gerektiği, öğrenince çok bariz geliyor
    Çoğu kişinin görmediği zor bir problemi okumak gerçekten keyifli

    • Öğrenince bariz ama bilmeden akla getirmesi zor olan aşırı niş ve aşırı önemli işlevlerden biri
    • Bu, 99% Invisible podcast’inin temelindeki konulara benziyor; asansör bölümü özellikle iyiydi
  • Devre arası şovundaki tüm kamera planı geçişlerini takip eden bir video var: https://www.youtube.com/watch?v=YXNWfFtgbNI

    • Hamish Hamilton’ın YouTube kanalında bunun kontrol odasından nasıl göründüğünü de görebiliyorsunuz; yardımcı yönetmenin planları çağırdığı sahneler bile var: https://m.youtube.com/watch?v=gfjWjkTP4p8
      Hamish Hamilton, 2010’dan bu yana tüm Super Bowl devre arası şovlarını yönetiyor
    • John DeMarsico, NY Mets’in SNY yayınlarını yönetiyor ve birçok kameranın tek bir prodüksiyonda nasıl birleştiğini gösteren kamera arkası görüntüleri ara sıra paylaşıyor; izlemeye oldukça değer
      https://x.com/SNYtv/status/1832250958258036871
  • “Pazarlama olmadan bile deneyimli profesyoneller arasında itibar kazandı ve dünyanın en büyük canlı etkinliklerinin vazgeçilmezi oldu” kısmı eğlence sektörüne çok uygun geliyor
    Aynı şovu aynı ekiple yıllar boyunca yaptığınızda gerçekten herkes birbirini tanıyor ve bir tür aile yapısı oluşuyor

    • “Pazarlama olmadan” açıkça yanlış bir ifade
      Cyanview’in bir vitrin web sitesi de var, LinkedIn pazarlama gönderileri de
  • Elixir’in görev açısından kritik yayın sistemlerinde güç kazandığını görmek sevindirici
    Cyanview’in güvenilirliğinin ne kadarının Elixir’in kendisinden, ne kadarının MQTT’yi iyi uygulamalarından geldiğini merak ediyorum
    Elixir’in başka dillerde yeniden üretmesi zor olan belirli bir özelliği olup olmadığını da merak ediyorum

    • Ana geliştirici açısından, MQTT’yi çok kullanıyoruz ve mimarinin çekirdeğinde yer alıyor; ama Elixir gevşek bağlı çok sayıda süreci yönetmede büyük avantaj sağlıyor
      BEAM ve OTP eşzamanlılığa sağlıklı bir yaklaşım sunuyor; Elixir de bunun üzerine oturan iyi bir dil
      Süreç izolasyonu iyi; heap bile süreç başına ayrıldığı için kararlı ve olgun kodla deneysel özellikleri birlikte çalıştırırken her şeyin çökmesinden daha az endişe ediyorsunuz, süreçler arası iletişim de kolay
      Supervisor tree sayesinde süreç yönetimi kolay; farklı yeniden başlatma stratejilerine sahip özel supervisor’lar da oluşturabildik
      Ağ bağlantılarının kopup yeniden geldiği ortamlarda sistem dayanıklılığı, fiziksel bir chaos monkey varmış gibi sık sık sınanıyor
      BEAM tarzı değişmezlik, eşzamanlı kod yazmayı ciddi biçimde basitleştiriyor: bir süreç içinde verinin gizlice değişmesinden endişe etmiyorsunuz ve başka bir süreç de sizin durumunuzu değiştiremiyor
      Bu yüzden mutex’lere veya kritik bölgelere neredeyse hiç ihtiyaç olmuyor; ancak deadlock hâlâ mümkün, yani her derde deva değil
    • Bu, zaten Elixir/Erlang/BEAM’in baştan tasarlandığı temel kullanım alanı
      Çok sayıda gerçek zamanlı akışı failover ve alternatif yollarla koordine edip yönlendirme işi; asıl hedef telefon görüşmeleriydi
      Video stream’leri saniye başına çok daha fazla veri taşıyor ama ilkeler büyük ölçüde geçerli
      Bu sisteme eleştirel bakan biriyim, ancak bu tür bir kullanım için varsayılan hâliyle bile çok güçlü bir temel sunuyor
    • Her programlama dili herhangi bir işi yapabilir
      Fark, o işi ne kadar kolaylaştırdığıdır
    • Yazıda da “Erlang VM’in neler yapabildiğini gördük ve ihtiyaçlarımıza çok iyi uydu. Elixir’in varsayılan olarak sunduklarını, ancak kendiniz uygulamaya çalışınca gerçekten anlıyorsunuz” deniyor
  • Elixir’i kritik finans uygulamaları, B2B büyüme istihbaratı, dolandırıcılık tespiti, scan-and-go alışveriş gibi birçok yerde uyguladım
    Her seferinde, bu yazıdaki mühendislik ekibinde olduğu gibi geliştirici deneyimi ve nihai sonuç beklentileri aştı; Elixir’i henüz denemediyseniz bir şans vermeye değer

    • Elixir ve Erlang her zaman saygı ve övgü gördü; neden daha yaygın kullanılmadıklarını hep merak etmişimdir
      Ben de istisna değilim: onlarca yıldır iyi şeyler duydum ama gerçek bir projede kullanmadım
    • Bir robotik startup’ında Elixir kullanıyoruz ve tamamen katılıyorum
      Örneğin bulut ürünümüzde, kullanıcının bir tesisteki belirlenmiş waypoint’lere robotu uzaktan çağırmasını ve robot hareket ederken harita üzerindeki konumunu gerçek zamanlı göstermesini sağlayan bir özelliği yeni yayınladık
      Bunu MQTT, LiveView, Phoenix PubSub ve harita manipülasyonu için çok az JavaScript ile yaptık; mevcut S3 harita PNG gösterme kodu veya MQTT alma işleme gibi kısımlar hariç tutulursa bulut tarafı tek kişi tarafından yaklaşık 2-3 haftada uygulandı
      Elbette başka dillerle de yapılabilir, ama temel dil özellikleri o kadar iyi ki bizim kullanımımızda diğer seçenekleri açık ara geride bırakıyor
  • Benzer uygulamalar için Gleam'in OTP/BEAM çalışma zamanı dışında da pratik olup olmayacağını merak ediyorum
    Henüz Gleam'de olmayan Elixir kütüphanelerinden yararlanmak gerekecek gibi; statik tipler yüzünden derleme yavaşlayabilir ama çalışma zamanı hatalarını daha erken yakalamayı sağlayabilir
    Bunun hata ayıklama ile hızlı dinamik yineleme arasında bir ödünleşime daha yakın olup olmadığını merak ediyorum ve Gleam ile Elixir arasında karar vermeye çalışıyorum
    Eski Gleam'in ML tarzı sözdizimini de sevmiştim, statik tipleri de seviyorum
    C'yi Zig ile değiştiriyorum; x64'e ek olarak ARM öğrenirken assembly'yi de yeniden pekiştiriyorum

    • Gleam'in Elixir veya Erlang'a göre çalışma zamanı hatalarını daha erken yakaladığına dair pek kanıt olduğunu sanmıyorum
      Erlang'ın güvenilirlik geçmişi, Java dahil birçok statik tipli dilden daha güçlü
      Statik tiplerin engellediği hata sınıfları var, ama engelleyemediği hatalar çok daha fazla
      TS, Java, Swift, Go, Gleam gibi dillerin Erlang veya Elixir'e göre gerçek çalışma zamanı kusurlarını azalttığını iddia etmek için gerçek dünya verisi gerekir
    • Elixir'le ilgili şikâyetlerimden biri tiplerin olmaması
      Şu anda bunun üzerinde çalışılıyor ama henüz kullanmadım; bu yüzden Gleam de iyi bir seçenek olabilir gibi geliyor
      Ancak biz başladığımızda Gleam 0.1 bile değildi ve adını da duymamıştık
      Erlang, Elixir ve Gleam'i karıştıran bir proje de mümkün olabilir, ama pratikliği konusunda emin değilim
    • Gleam'de zaten OTP özelliklerinin bir alt kümesi var https://github.com/gleam-lang/otp
      Derleme de çok hızlı
      Henüz çok büyük bir proje yapmadım ama epey ağır kütüphaneler kullansam da hepsi çok hızlı derlendi
  • Dijital video dünyası IT'nin akrabası gibi olsa da, video sektörünün dışındaki biri için her zaman giriş bariyeri yüksek hissediliyor
    Çözünürlük, renk, ağ ve depolama için kullanılan adlandırmalar neredeyse özellikle farklıymış gibi görünüyor

    • Şu ana kadar yaklaşık 200 yayın kamerası modeli için ele aldığımız parametrelerin hangi aralıkta olduğunu gösteren bir kaynak: https://pastebin.com/cgeG2r0k
      Bunlar yalnızca bir görüntü mühendisinin görüntü kalitesini ayarlaması için olan kalemler; kamera operatörüne yönelik işlevler genellikle ele alınmıyor
      Zor olan, bu kadar çok kamera ve protokol arasında tutarlılık oluşturmak
    • Yalnızca tüketici tipi video ekipmanlarıyla uğraşmış birinin 420 ile 422 renk uzayları arasındaki farkı, ciddi sinema kameralarının neden renk düzeltmesi öncesi görüntü kaydettiğini ve post prodüksiyonda renk düzeltme sürecinin nasıl göründüğünü anlaması için ek eğitim ve temel kaynaklara ihtiyacı var
      Ancak ondan sonra ham yuv/y4m sıkıştırılmamış video, çok yüksek bit hızlı düşük sıkıştırmalı video ve özgün veriler çok büyük olduğu için güçlü iş istasyonlarında bile kurgusu zor olduğundan proxy video üretme meselesine geçilebilir
      Profesyonel bir neden yoksa sıradan son kullanıcıların derine inmesinin pek bir faydası yok
      Bir RED kameraya 7.000 dolar harcayıp lensler, gimbal, cage, follow focus, matte box, hafıza kartları vb. için 13.000 dolar daha harcayarak küçük ve maliyet etkin tek kameralı bir prodüksiyon paketi oluşturmayı düşünüyorsanız, derine inmeye değer
  • Yaklaşık 30 yıl önce stüdyo ortamında kameraların renk dengesini eşlemek işimin bir parçasıydı
    Bilgisayar gerekmiyordu ama en fazla 5 kamera vardı

  • Yazıda “tek bir lokasyondaki cihazlar özel bir MQTT protokolüyle ağ üzerinde iletişim kurup koordine oluyor ve Elixir ağ yığını üzerinde uygulanmış tek bir Remote Control Panel (RCP), 100'den fazla kamerayı sorunsuzca yönetiyor” kısmı dikkatimi çekti
    MQTT'nin TCP üzerine inşa edildiğini anlıyorum; aynı çözümü ben bulur muydum bilmiyorum ama oldukça iyi bir seçim gibi görünüyor