Video içerik üretimi yoğun veri içeren bir iş akışıdır. Bir Adstacker projesi; kaynak klipler, küçük resimler, normalleştirilmiş videolar, çıkarılmış sesler, yeniden kullanılabilir kaplamalar ve tamamlanmış varyasyonlar içerebilir. Uygulama sunucusunu aşırı yüklemeyen yüklemelere, güvenilir doğrulamaya, öngörülebilir çıktı konumlarına ve terk edilmiş çalışmaların temizlenmesine ihtiyacımız var.
Amazon S3 bu iş akışının arkasındaki dayanıklı varlık katmanıdır. Adstacker, büyük dosyaları doğrudan içerik oluşturuculardan depolama alanına taşımak, bir projenin her aşamasını organize etmek ve bitmiş videoları indirilmeye hazır hale getirmek için onu kullanır.
Zorluk: video varlıkları hızla çoğalıyor
Yaratıcı testler, küçük bir klip setinin birçok varyasyon üretmesine olanak tanır ve bu da bir varlık yönetimi sorunu yaratır. Bir proje; başlangıç, gövde ve CTA görüntüleriyle başlayıp, ardından normalleştirilmiş kopyalar, ses, alt yazılı kaplamalar, küçük resimler ve son MP4 veya MOV çıktıları üretebilir.
Her baytı API üzerinden taşımak, yüklemeleri yavaşlatacak ve sunucu bant genişliğini tüketecektir. Rastgele dosya adları yeniden denemeleri zorlaştıracak ve bir içerik oluşturucunun yükleme sırasında bir sekme kapatması durumunda sahipsiz varlıklar bırakacaktır.
Depolama, üretim hattının kasıtlı bir parçası olmalıdır.
Yaklaşımımız: Varlık yaşam döngüsü boyunca S3
S3, proje oluşturmadan nihai indirmeye kadar tüm süreçte yer alır. Backend yetkilendirme, manifestler, doğrulama ve iş durumunu yönetirken; S3 büyük nesneleri işler.
Mimari

Bu ayrım, medya dosyalarına depolama alanına doğrudan, kalıcı bir yol sağlar.
1. Büyük videoları doğrudan tarayıcıdan yükleyin
Bir içerik oluşturucu bir proje başlattığında, Adstacker bir kaynak video manifesti oluşturur ve her dosya için önceden imzalanmış bir S3 POST isteği döndürür. Tarayıcı, dosyayı backend aracılığıyla proxy yapmak yerine doğrudan S3'e gönderir.
S3, imzalı yükleme kısıtlamalarını uygular: sabit bir içerik türü ve izin verilen boyut aralığı. Bunlar, boş veya aşırı büyük yüklemeleri ulaşmadan önce durdururken, kısa ömürlü istekler tarayıcının yükleyebileceği şeyi sınırlar.
Bir oturum kesintiye uğrarsa, Adstacker bekleyen videolar için yeni URL'ler yeniden yayınlar. Ayrıca devam ettirme sırasında S3'ü kontrol eder, böylece tamamlama geri bildirimini kaçıran bir nesne bile yine de uzlaştırılabilir ve doğrulanabilir.
2. İşlemeden önce gelenleri doğrulayın
Tarayıcıda bir yüklemenin tamamlanması, oluşturmaya başlamak için yeterli değildir. Backend, nesneyi doğrulamak, boyutunu ve ETag'ini okumak ve bu ETag'i doğrulanmış video ile kaydetmek için S3 HEAD kullanır.
Ardından, Adstacker nesneyi FFprobe doğrulaması için geçici olarak indirir. Okunabilir olduğunu ve sürenin ile etkin çözünürlüğün proje gereksinimlerini karşıladığını onaylarız. Geçersiz dosyalar faydalı bir red nedeni alır ve silinir; geçici okuma hataları, nesneyi yeniden deneme için yerinde bırakır.
Her video net bir yaşam döngüsünden geçer: beklemede, yükleniyor, yüklendi, doğrulanıyor, doğrulandı veya reddedildi. Bir proje, beklenen her varlık doğrulandıktan sonra ilerler ve atomik güncellemeler, yinelenen geri bildirimlerin bir videoyu iki kez saymasını engeller.
3. Her çıktıyı öngörülebilir ve yeniden kullanılabilir hale getirin
Adstacker, proje, varlık türü, kategori ve varyasyona dayalı deterministik S3 yolları kullanır. Normalleştirilmiş medya ve çıkarılmış ses, işlenmiş kaplamalar ve nihai kombinasyonlardan ayrı olarak bulunur.
Bu organizasyon, iş akışına üç şekilde yardımcı olur:
- Doğrudan arama: Çalışanlar, bir proje ve varyasyonla ilişkili tam girdiyi veya çıktıyı bulabilir.
- Verimli yeniden kullanım: Yeniden kullanılabilir kaplamalar bir kez depolanır ve birden fazla nihai kombinasyonu destekleyebilir.
- Idempotent yeniden denemeler: Bir yeniden deneme, aynı beklenen anahtara yazar ve giderek artan yinelenen dışa aktarım izlerinden kaçınır.
Nihai video kayıtları, çıktı, küçük resim ve -ilgili olduğunda- MOV varyantı için S3 anahtarlarını ve URL'lerini tutar. Uygulama daha sonra hazır olan formatı sağlayabilir.
4. Erişimi güvenli bir şekilde sağlayın ve eksik işleri temizleyin
S3 bucket özeldir. Adstacker, isteğe bağlı olarak bir indirme dosya adıyla zaman sınırlı imzalı indirme URL'leri yayınlar, böylece varlıkların genel olarak ifşa edilmesine gerek kalmaz.
Her yükleme bitmiş bir proje haline gelmez. Planlı temizlik, eski eksik projeleri tanımlar ve kalan S3 kaynak nesnelerini siler. Reddedilen yüklemeler, doğrulama başarısız olduktan hemen sonra silinir.
Bu yaşam döngüsü kuralları, proje geçmişini korurken terk edilmiş depolamayı sınırlar.
Gerçek dünya örneği: kesintiye uğramış bir yükleme, yeniden başlamak anlamına gelmez
Bir pazarlamacının altı klip yüklediğini, ardından dördü S3'e ulaştıktan sonra tarayıcıyı kapattığını düşünün. Geri döndüğünde, Adstacker yükleme oturumunu geri yükler ve tamamlanmamış klipler için yeni önceden imzalanmış istekler sağlar. Ayrıca, tamamlama geri bildirimi kaybolsa bile bir dosyanın S3'e ulaşıp ulaşmadığını kontrol eder.
Altı dosyanın tamamı doğrulandıktan ve onaylandıktan sonra, proje işlenmeye başlar. Kaynaklar, hazırlanmış medya, kaplamalar, küçük resimler ve son varyasyonlar, sonraki her adım için bilinen anahtarlar altında düzenli kalır.
Yaratıcı hıza yönelik tasarlanmış depolama
Amazon S3, Adstacker'ın video varlıklarını yönetilen bir yaşam döngüsü olarak ele almasına olanak tanır: doğrudan yükleme, nesneyi doğrulama, medyayı doğrulama, öngörülebilir çıktılar oluşturma, indirmeleri yetkilendirme ve eksik işleri temizleme. Bu, yaratıcı iş akışının klipleri test edilebilir varyasyonlara dönüştürmeye odaklanmasını sağlar.
Varlıklarınızı Adstacker'a yükleyin, test etmek istediğiniz kombinasyonları oluşturun ve platformun her oluşturma işleminin arkasındaki depolama iş akışını yönetmesine izin verin.
Technology stack: Amazon S3 · AWS SDK for JavaScript · Presigned S3 POSTs · NestJS · FFprobe · AWS ECS Fargate · MongoDB
Ekibimizden daha fazlasını okuyun
1. Export Service vs. Video Editor Pipeline
2. Normal Bir Video Düzenleyici Oluşturmak
3. Farklı Video Çözünürlükleri İçin Kanal Logosunu Optimize Etme

