Cloudflare, platformunda özel video işleme hatları oluşturmak için bir deneme ortamı ve açık kaynaklı bir örnek olarak Streamline projesini kullanıma sundu. Proje, canlı yayına dinamik açıklamalar eklemek veya barındırılan bir videonun görüntü içine gömülü altyazılar içeren bir kopyasını oluşturmak gibi Cloudflare Stream'in hazır işlevlerinin yeterli olmadığı durumlara odaklanıyor.
Streamline, Cloudflare platformundaki çeşitli bileşenler arasında görev dağılımına dayanıyor. Containers, medya motorunu uzun süreler boyunca öngörülebilir CPU ve bellek kaynaklarıyla çalıştırırken, Durable Objects oturumların koordinasyonunu, container yaşam döngüsünü ve önizleme aktarımını yönetiyor. Workers ise kontrol sinyallerini, izlemeyi ve tarayıcı uygulaması, programatik aracı veya gömülü sistem olabilen uygulama arayüzünü ele alıyor.
Streamline pratikte ne sunuyor?
Uygulama bir işleme oturumu oluşturabilir, video hattını çalıştırabilir, ona girdiler gönderebilir, ölçümleri izleyebilir ve ardından durdurabilir. İşlem, kontrol uygulamasının bağlantısı kesildikten veya yeniden bağlandıktan sonra da devam eder; uygulama işlemi durdurana ya da oturumun sonsuza kadar açık kalmasını önleyen azami süreye ulaşılana kadar.
Container, mevcut uygulamada Go ile yazılmış bir kontrol katmanı ve çalıştırma için FFmpeg kullanan bir medya işlemcisinden oluşan medya motorunu barındırır. Motor, RTMPS akışını alabilir, Cloudflare Stream üzerinden HLS ile barındırılan bir videoyu okuyabilir veya web kamerası gibi bir kaynaktan doğrudan veri alabilir. Ayrıca çıktıyı RTMPS üzerinden Stream Live'a gönderebilir ya da WebSocket aracılığıyla düşük gecikmeli önizleme sağlayabilir.
Desteklenen değişiklik işlemleri
- Bulanıklık ve doygunluk gibi filtreleri uygulama.
- Sabit bir görüntü veya çalışma sırasında güncellenebilen bir PNG katmanı ekleme.
- Altyazıları videoya gömme.
- Kodlama parametrelerini, codec, bit hızı, çözünürlük ve kare hızı dahil olmak üzere ayarlama.
Cloudflare; grafik katmanı ekleyerek canlı yayını değiştirme, barındırılan bir videoyu altyazı taşıyan bir kopyaya dönüştürme ve kameraların görüntülerini önizleme veya video analizi için kullanılabilecek bir işleme hattına gönderme gibi kullanım alanlarını açıklıyor. Proje ayrıca Worker ve Astro arayüzü kullanılarak oluşturulmuş; katmanlar, altyazılar, filtreler ve resim içinde resim işlevlerine sahip bir uygulama örneği içeriyor.
Güvenlik ve oturum yaşam döngüsü
Cloudflare, modeli Stream Live giriş ve çıkış anahtarlarının kontrol uygulamasına görünmemesi veya tarayıcıda saklanmaması için tasarladı; anahtarlar Workers Secrets'ta veya Durable Objects depolamasında tutuluyor ve uygulama anahtarlarla doğrudan işlem yapmak yerine adlandırılmış profil dosyalarına başvuruyor. Worker ayrıca Cloudflare Access oturumunu doğruluyor ve etkin oturumu yetkili kimliğe bağlıyor; açıklanan dağıtımda tek bir oturuma izin veriliyor.
Şirket, gösterilen özel dağıtım modelinin çok kullanıcılı genel bir hizmet için kullanıma hazır bir model olmadığı konusunda uyarıyor. Genel deneme sürümü ise doğrulanmış her kullanıcı için bir container kimliği, kullanıcı başına tek bir etkin oturum ve eşzamanlılık, medya ve kaynaklar için kontroller kullanıyor.
Bu, geliştiriciler için ne anlama geliyor?
Streamline, geliştiriciyi operasyonel altyapının tamamını platform dışında kurmaya zorlamak yerine yönetilen video hizmeti ile özel işleme arasında esnek bir katman sunuyor. Ancak modelin sınırları önemli: mevcut işleme container'ların CPU'suna dayanıyor; bu da yüksek çözünürlükler veya kare hızları kullanıldığında darboğaz haline gelebilir. Cloudflare, gelecekteki yönelimler arasında bilgisayarlı görü hatlarını, donanım hızlandırmalı medya işlemeyi ve WebRTC ile MoQ desteğini; ayrıca Workers içinde yerel kodlama ve kod çözme ilkellerini sayıyor.
Cloudflare iki açık kaynaklı depo yayımladı: medya motoru ve API paketleri için cloudflare/streamline ile Worker uygulaması, Astro arayüzü, dağıtım araçları ve Access entegrasyonu için cloudflare/streamline-demo. Şirket ayrıca denenebilen veya kullanıcının hesabında dağıtılabilen bir genel deneme sürümü de sundu.