Anahtar Kare Sistemli ve Şeffaf Video Dışa Aktarma Özellikli Web Tabanlı Animasyon Düzenleyici
Bir yaratıcı araçlar ekibi, tasarımcıların birden fazla nesneyle akıcı, anahtar kare tabanlı animasyonlar oluşturmasına ve bunları tam alpha channel şeffaflığına sahip videolar olarak dışa aktarmasına olanak tanıyan, böylece diğer video içeriklerinin üzerine sorunsuz bir şekilde yerleştirilebilen, tarayıcı tabanlı bir animasyon düzenleyiciye ihtiyaç duyuyordu.
Projenizi Tartışın
Zorluk
Video prodüksiyonu için şeffaf arka planlara sahip animasyonlu varlıklar oluşturmak zahmetliydi:
- Yalnızca Masaüstü Araçları — Mevcut animasyon araçları (After Effects, Motion) pahalı lisanslar ve masaüstü kurulumu gerektiriyordu
- Alpha Channel Dışa Aktarma Yok — Çoğu web tabanlı animasyon aracı, şeffaflık desteği olmadan opak videolar dışa aktarıyordu
- Karmaşık Anahtar Kareleme — Tasarımcılar, yalnızca CSS geçişleri yerine, yumuşatma kontrolü ile sezgisel anahtar kare tabanlı animasyona ihtiyaç duyuyordu
- Gerçek Zamanlı Önizleme — Editörlerin animasyonları dışa aktarmadan önce sorunsuz bir şekilde oynatıldığını görmeleri gerekiyordu
- Birden Fazla Nesne Türü — Animasyonlar, bağımsız animasyon zaman çizelgelerine sahip şekiller ve metinler gerektiriyordu
- Dışa Aktarma Kalitesi — Çıktının profesyonel düzenleme iş akışlarında kullanılabilecek prodüksiyon seviyesinde video dosyaları olması gerekiyordu
Çözümümüz
Donanım hızlandırmalı oluşturma için React ve Pixi.js, 30'dan fazla yumuşatma fonksiyonuna sahip bir anahtar kare motoru ve tam VP9 alpha channel desteğiyle WebM videoları dışa aktarmak için FFmpeg destekli bir backend kullanarak web tabanlı bir animasyon düzenleyici oluşturduk.
Mimari
- Frontend: WebGL hızlandırmalı canvas oluşturma için React ve TypeScript, Pixi.js
- Durum Yönetimi: Merkezi sahne durumu için Zustand
- Animasyon Motoru: Yumuşatma kütüphanesine sahip özel anahtar kare enterpolasyon motoru
- Backend: Gerçek zamanlı kare akışı için WebSocket destekli Express.js
- Video Kodlama: Alpha channel ile VP9 WebM kodlama için FFmpeg (fluent-ffmpeg aracılığıyla)
- Monorepo: Frontend ve backend arasında paylaşılan TypeScript türlerine sahip pnpm workspace
Animasyon Motoru
Anahtar Kare Sistemi
Çekirdek animasyon motoru, birden fazla özellikte anahtar kare tabanlı animasyonu destekler:
- Konum — Hareket yolları için X/Y koordinatları
- Döndürme — Derece tabanlı döndürme animasyonu
- Renk — Akıcı geçişlerle Hex renk enterpolasyonu
- Alfa — Solma efektleri için opaklık animasyonu
- Boyut — Genişlik, yükseklik ve yarıçap ölçekleme
Her anahtar kare, zamanı (milisaniye cinsinden), animasyonlu özelliklerin bir alt kümesini ve seçilen bir yumuşatma fonksiyonunu saklar. Motor, herhangi bir zamanda çevresindeki anahtar kareler arasında enterpolasyon yapar ve uygun yumuşatma eğrisini uygular.
Yumuşatma Kütüphanesi (30+ Fonksiyon)
Tüm standart animasyon eğrilerini kapsayan kapsamlı bir yumuşatma kütüphanesi:
- Linear, Quadratic, Cubic, Quartic, Quintic
- Sinusoidal, Exponential, Circular
- Elastic (yay benzeri aşım), Back (beklenti), Bounce
- Her biri ease-in, ease-out ve ease-in-out varyantlarında mevcuttur
Enterpolasyon
Herhangi bir zaman damgası için motor:
- Çevredeki anahtar kareleri bulur (önceki ve sonraki)
- Arlarındaki normalize edilmiş ilerlemeyi hesaplar (0 ila 1)
- Seçilen yumuşatma fonksiyonunu ilerleme değerine uygular
- Özellik değerlerini enterpole eder (sayılar için doğrusal, hex değerleri için renk lerp)
- Oluşturma için animasyonlu özelliklerin tam setini döndürür
Canvas ve Oluşturma
Nesne Türleri
- Dikdörtgenler — Yapılandırılabilir genişlik, yükseklik, renk, alfa, döndürme
- Çemberler — Yapılandırılabilir yarıçap, renk, alfa, döndürme
- Metin — Yapılandırılabilir yazı tipi ailesi, yazı tipi boyutu, içerik, renk, alfa
Donanım Hızlandırmalı Oluşturma
- Akıcı 60fps önizleme oynatımı için Pixi.js WebGL oluşturma
- Yapılandırılabilir canvas çözünürlüğü (varsayılan 1920x1080 @ 30fps)
- Ayarlanabilir arka plan alfa değeri ile şeffaf arka plan desteği
- Görsel vurgulama ile etkileşimli nesne seçimi
- Oynatma, duraklatma ve zaman çizelgesi kaydırma ile gerçek zamanlı animasyon oynatma
Düzenleyici Arayüzü
Araç Çubuğu
Varsayılan özelliklerle sahneye dikdörtgenler, çemberler ve metin eklemek için nesne oluşturma düğmeleri, bu özellikler hemen özelleştirilebilir.
Özellikler Paneli
Seçilen nesne özellikleri gerçek zamanlı olarak düzenlenebilir: konum, boyut, renk, alfa, döndürme ve türe özgü özellikler (metin içeriği, yazı tipi ayarları).
Zaman Çizelgesi
Görsel zaman çizelgesi aşağıdakileri gösterir:
- Her nesne için zaman konumlarındaki anahtar kare işaretleyicileri
- Kaydırma özellikli mevcut zaman için oynatma kafası
- Anahtar kare başına yumuşatma fonksiyonu seçimi
- Mevcut oynatma kafası konumunda anahtar kare ekleme/kaldırma kontrolleri
Video Dışa Aktırma Akışı
Kare Yakalama
- Animasyon süresi ve FPS, toplam kare sayısını belirler
- Her kare, tam çözünürlükte ayrı ayrı oluşturulur
- Canvas içeriği, kare başına PNG blob olarak yakalanır
- Kareler, kodlama backend'ine yüklenmek üzere toplanır
Kodlama Backend'i
Express.js backend'i, iş tabanlı bir sistem aracılığıyla video kodlamasını yönetir:
- İş Oluşturma — İstemci yeni bir dışa aktarma işi talep eder (UUID tabanlı)
- Kare Yükleme — Kareler toplu olarak (veya WebSocket aracılığıyla akış olarak) yüklenir
- FFmpeg Kodlama — Kareler, VP9 codec ile WebM videosuna dönüştürülür
- Alpha Channel — Tam şeffaflık desteği için yuva420p piksel formatını kullanır
- İlerleme Takibi — Kodlama sırasında gerçek zamanlı ilerleme güncellemeleri
- İndirme — Tamamlanmış video, şeffaflık doğrulaması ile indirilmeye hazır olur
WebSocket Alternatifi
Gerçek zamanlı dışa aktarım için, HTTP toplu yükleme yerine kareler doğrudan WebSocket aracılığıyla aktarılabilir, yakalama, yükleme ve kodlama aşamaları boyunca canlı ilerleme güncellemeleriyle birlikte.
Temel Özellikler
- Anahtar Kare Animasyonu — Özellik başına anahtar karelere sahip zaman çizelgesi tabanlı animasyon
- 30+ Yumuşatma Fonksiyonu — Profesyonel animasyon eğrileri için eksiksiz yumuşatma kütüphanesi
- Şeffaf Video Dışa Aktarma — Tam alpha channel desteğine sahip VP9 WebM
- Donanım Hızlandırmalı Canvas — Akıcı gerçek zamanlı önizleme için Pixi.js WebGL oluşturma
- Birden Fazla Nesne Türü — Bağımsız animasyona sahip dikdörtgenler, çemberler ve metinler
- Gerçek Zamanlı Önizleme — Animasyonları anında oynatma, duraklatma ve kaydırma
- Toplu ve Akışlı Dışa Aktarma — HTTP toplu yükleme veya WebSocket gerçek zamanlı kare akışı
- Yapılandırılabilir Çıktı — Dışa aktarma için çözünürlük, FPS ve bit hızı ayarları
- Tip Güvenli Monorepo — Frontend ve backend arasında paylaşılan TypeScript türleri
- Özel Arka Planlar — Görüntü/video desteği ile ayarlanabilir arka plan rengi ve alfa
Sonuçlar
Teknoloji Yığını
caseStudyDetail.more Vaka Çalışmaları
Daha fazla teknik uygulamamızı keşfedin
AI Destekli Fatura İşleme (OCR ve QuickBooks Entegrasyonu ile)
Ayda yüzlerce satıcı faturasını işleyen orta ölçekli bir işletme, fatura verilerini AI/OCR kullanarak otomatik olarak çıkarıp muhasebe ve ödeme takibi için doğrudan QuickBooks'a senkronize ederek manuel veri girişini ortadan kaldırmak istedi.
İstemci Tarafında Reklam Ekleme (CSAI), SCTE-35 İşaretleyici Ayrıştırma ve Çok Platformlu Oynatıcı Entegrasyonu ile
Bir video akış platformu, sunucu tarafı reklam eklemenin sağlayamadığı tam reklam etkileşimi desteğiyle (tıklanabilir katmanlar, yardımcı banner'lar, atlama düğmeleri) kişiselleştirilmiş, cihaz düzeyinde reklam deneyimleri sunarak web, mobil ve akıllı TV uygulamaları genelinde Client-Side Ad Insertion (CSAI) uygulamasına ihtiyaç duyuyordu.
İşletmenizi Dönüştürmeye Hazır mısınız?
Zorluklarınıza benzer çözümler uygulamamızın yollarını konuşalım.