Відеокреатив – це робочий процес, що інтенсивно використовує дані. Один Adstacker проект може включати вихідні кліпи, ескізи, нормалізовані відео, витягнутий звук, багаторазові накладки та готові варіації. Нам потрібні завантаження, які не перевантажують сервер додатків, надійна перевірка, передбачувані місця виведення та очищення для незавершеної роботи.
Amazon S3 є надійним шаром для зберігання активів, що стоїть за цим робочим процесом. Adstacker використовує його для переміщення великих файлів безпосередньо від творців до сховища, організації кожного етапу проекту та надання готових відео для завантаження.
Виклик: відеоактиви швидко множаться
Креативне тестування дозволяє невеликому набору кліпів створювати багато варіацій — і породжує проблему управління активами. Проект може починатися з матеріалів для зачіпки (hook), основної частини (body) та заклику до дії (CTA), а потім створювати нормалізовані копії, аудіо, накладки з субтитрами, ескізи та кінцеві виводи у форматі MP4 або MOV.
Передача кожного байта через API уповільнила б завантаження та споживала б пропускну здатність сервера. Нечіткі імена файлів ускладнили б повторні спроби та залишили б осиротілі активи, коли творець закриває вкладку під час завантаження.
Сховище має бути невід'ємною частиною виробничого конвеєра.
Наш підхід: S3 протягом усього життєвого циклу активів
S3 задіяний від створення проекту до фінального завантаження. Бекенд обробляє авторизацію, маніфести, валідацію та стан завдань; S3 обробляє великі об'єкти.
Архітектура

Такий поділ забезпечує медіафайлам прямий, надійний шлях до сховища.
1. Завантажуйте великі відео безпосередньо з браузера
Коли творець починає проект, Adstacker створює маніфест вихідного відео та повертає попередньо підписаний S3 POST запит для кожного файлу. Браузер надсилає файл безпосередньо в S3 замість того, щоб проксіювати його через бекенд.
S3 застосовує обмеження для підписаного завантаження: фіксований тип вмісту та дозволений діапазон розмірів. Це зупиняє порожні або занадто великі завантаження до їх фактичного надходження, тоді як короткочасний запит обмежує те, що може завантажити браузер.
Якщо сеанс переривається, Adstacker повторно видає нові URL-адреси для відео, що очікують. Він також перевіряє S3 під час відновлення, тому об'єкт, який пропустив зворотний виклик завершення, все ще може бути узгоджений та перевірений.
2. Перевіряйте, що надійшло, перш ніж обробляти це
Завершення завантаження в браузері недостатньо для початку рендерингу. Бекенд використовує S3 HEAD для підтвердження об'єкта, зчитування його розміру та ETag, а також збереження цього ETag разом з перевіреним відео.
Далі Adstacker тимчасово завантажує об'єкт для валідації за допомогою FFprobe. Ми підтверджуємо, що його можна прочитати, а тривалість та ефективна роздільна здатність відповідають вимогам проекту. Недійсні файли отримують чітку причину відхилення та видаляються; тимчасові помилки читання залишають об'єкт на місці для повторної спроби.
Кожне відео проходить чіткий життєвий цикл: очікування, завантаження, завантажено, валідація, валідовано або відхилено. Проект просувається лише після того, як кожен очікуваний актив перевірено, а атомарні оновлення запобігають подвійному підрахунку відео через дублікати зворотних викликів.
3. Зробіть кожен вихід передбачуваним та багаторазовим
Adstacker використовує детерміновані шляхи S3, засновані на проекті, типі активу, категорії та варіації. Нормалізовані медіа та витягнутий звук зберігаються окремо від відрендерених накладок та фінальних комбінацій.
Ця організація допомагає конвеєру трьома способами:
- Прямий пошук: Воркери можуть знайти саме той вхід або вихід, пов'язаний з проектом та варіацією.
- Ефективне повторне використання: Багаторазові накладки зберігаються один раз і можуть підтримувати більше однієї фінальної комбінації.
- Ідемпотентні повторні спроби: Повторна спроба записує за тим самим очікуваним ключем, уникаючи зростаючого сліду дублікатів експорту.
Записи фінального відео зберігають ключі S3 та URL-адреси для виводу, ескізів та — якщо це доречно — варіанту MOV. Потім програма може надати готовий формат.
4. Забезпечуйте безпечний доступ та очищайте незавершену роботу
Бакет S3 є приватним. Adstacker видає обмежені за часом підписані URL-адреси для завантаження, за бажанням із назвою файлу для завантаження, тому активам не потрібна публічна доступність.
Не кожне завантаження стає завершеним проектом. Заплановане очищення ідентифікує застарілі незавершені проекти та видаляє їхні залишені вихідні об'єкти S3. Відхилені завантаження видаляються негайно після збою валідації.
Ці правила життєвого циклу обмежують залишені сховища, зберігаючи при цьому історію проекту.
Реальний приклад: перерване завантаження не означає починати все спочатку
Уявіть, що маркетолог завантажує шість кліпів, а потім закриває браузер після того, як чотири досягають S3. При поверненні Adstacker відновлює сеанс завантаження та надає нові попередньо підписані запити для незавершених кліпів. Він також перевіряє, чи досяг файл S3, навіть якщо його зворотний виклик завершення було втрачено.
Як тільки всі шість файлів перевірено та валідовано, проект переходить до обробки. Джерела, підготовлені медіа, накладки, ескізи та фінальні варіації залишаються організованими під відомими ключами для кожного наступного кроку.
Сховище, розроблене для креативної швидкості
Amazon S3 дозволяє Adstacker розглядати відеоактиви як керований життєвий цикл: завантажувати безпосередньо, перевіряти об'єкт, валідувати медіа, створювати передбачувані виходи, авторизувати завантаження та очищати незавершену роботу. Це дозволяє креативному конвеєру зосередитися на перетворенні кліпів на варіації, що піддаються тестуванню.
Завантажуйте свої активи в Adstacker, створюйте комбінації, які ви хочете протестувати, і дозвольте платформі керувати робочим процесом зберігання за кожним рендером.
Стек технологій: Amazon S3 · AWS SDK for JavaScript · Presigned S3 POSTs · NestJS · FFprobe · AWS ECS Fargate · MongoDB
Читайте більше від нашої команди
1. Експортний сервіс проти конвеєра відеоредактора
2. Створення звичайного відеоредактора
3. Оптимізація логотипу каналу для різних роздільних здатностей відео

