Usługa konwersji mediów

Przegląd przypadku

To usługa konwersji mediów w chmurze, która przetwarza pliki wideo i audio na format HLS z obsługą adaptacyjnego bitrate. System nasłuchuje kolejki SQS na nowe pliki, uruchamia zadanie Kubernetes dla każdego z nich i generuje pełny zestaw playlist m3u8 oraz segmentów .ts gotowych do odtwarzania w nowoczesnych odtwarzaczach wideo.


Obsługuje wiele rozdzielczości wideo, wiele poziomów bitrate dla audio oraz obsługuje filmy z wieloma ścieżkami dźwiękowymi – w tym w różnych językach lub komentarzach. Usługa działa jednocześnie dla wielu projektów i organizuje wyniki w osobnych folderach na S3 w zależności od projektu lub wydawcy.

Cel: Zbudować w pełni zautomatyzowaną usługę, która konwertuje dowolny plik wideo lub audio do formatu HLS bez ręcznej ingerencji - działającą na wielu projektach, obsługującą różnorodne typy treści i skalującą się do zera w stanie bezczynności.

Image

Kluczowe informacje o projekcie

Branże

Branże

Media i rozrywka, platformy strumieniowania wideo, usługi OTT i nadawcze, publikacje cyfrowe, sieci dostarczania treści — każdy biznes potrzebujący dostarczania treści wideo lub audio użytkownikom końcowym na różnych urządzeniach i przy zmiennych warunkach sieciowych.

Usługi

Usługi

Przetwarzanie kolejki SQS z długim pollingiem i zarządzaniem czasem widoczności, transcoding mediów FFmpeg i analiza strumieni FFprobe, orkiestracja zadań Kubernetes z wolumenami efemerycznymi i regułami affiniteci węzłów, równoległy pipeline uploadu do S3 z czyszczeniem przed wysłaniem.

Rozwiązania

Rozwiązania

Wideo HLS o wielu rozdzielczościach — 1080p, 720p, 480p, 360p, 240p z adaptacyjnym bitrate, audio HLS o wielu poziomach bitrate — 32, 64, 96, 128, 192 kbps na ścieżkę audio, automatyczne wykrywanie wszystkich strumieni audio z metadanymi językowymi, miniaturki na 2 sekundzie, podgląd w niskiej rozdzielczości MP4, kopie MP3 i WAV.

Technologie

Technologie

AWS SQS, S3, Kubernetes, FFmpeg, FFprobe, H.264, AAC/HE-AAC, HLS/m3u8, NVIDIA NVENC, Intel Quick Sync, EC2 Auto Scaling, Docker, Helm

Wyzwania

Wiele formatów wyjściowych z jednego pliku wejściowego

Wiele formatów wyjściowych z jednego pliku wejściowego

Jeden plik wideo może wygenerować setki plików — pięć rozdzielczości wideo, pięć bitrate’ów audio na każdą ścieżkę dźwiękową, plus miniaturki i podglądy. Musieliśmy to wszystko uporządkować i szybko przesłać.

Wiele strumieni audio na plik wideo

Wiele strumieni audio na plik wideo

Niektóre filmy mają kilka ścieżek audio w różnych językach. System musiał wykryć je automatycznie, konwertować każdą osobno i zbudować playlistę master, która odwołuje się do każdej ścieżki z odpowiednim tagiem językowym.

Niezawodność kolejki i logika ponawiania

Niezawodność kolejki i logika ponawiania

W przypadku SQS trzeba odpowiednio obsłużyć duplikaty, timeouty widoczności i błędne zadania. Jeśli zadanie się nie powiedzie, wiadomość powinna wrócić do kolejki do ponownego przetworzenia. Jeśli ten sam plik zostanie zduplikowany w kolejce, nie powinniśmy go ponownie przetwarzać.

Zarządzanie na Kubernetes

Zarządzanie na Kubernetes

Każde zadanie konwersji zużywa dużo CPU i pamięci. Musieliśmy skonfigurować wolumeny efemeryczne, reguły affiniteci węzłów oraz odpowiednie czyszczenie, aby zadania nie blokowały się ani nie nakładały.

Izolacja wielu projektów na S3

Izolacja wielu projektów na S3

Usługa działa jednocześnie dla wielu projektów. Każdy potrzebuje własnej ścieżki wyjściowej na S3, a my musieliśmy obsłużyć zarówno struktury folderów oparte na wydawcy, jak i na serii, bez błędów.

Automatyczny dobór kodeków

Automatyczny dobór kodeków

Nie każda maszyna ma akcelerację GPU. System musiał wykrywać dostępne kodeki — NVIDIA, Intel Quick Sync, AMD lub tylko programowe — i automatycznie wybierać najlepszy.

Proces

Cała procedura przebiega bez udziału człowieka — od momentu załadowania pliku na S3 aż do gotowego wyjścia HLS do odtwarzania. Każdy etap płynnie przekazuje zadanie do następnego, z wbudowanymi zabezpieczeniami na wypadek awarii, duplikatów i konfliktów zasobów. Poniżej opisano, jak system przetwarza plik przez cały cykl konwersji.

Monitorowanie kolejki

Monitorowanie kolejki

Manager zadań działa na Kubernetes i nasłuchuje kolejki SQS za pomocą długiego pollingu. Gdy przychodzi wiadomość, analizuje bucket S3 i klucz obiektu, aby zidentyfikować plik źródłowy.

Zapobieganie duplikatom

Zapobieganie duplikatom

Przed utworzeniem nowego zadania manager sprawdza, czy dla tego pliku istnieje już zadanie Kubernetes. Jeśli tak, wiadomość jest ponownie umieszczana w kolejce z opóźnieniem, aby zapobiec podwójnemu przetwarzaniu.

Tworzenie zadań Kubernetes

Tworzenie zadań Kubernetes

Nowy pod tworzony jest z szablonu z poprawnymi limitami zasobów, affinitetą węzłów dla instancji ARM oraz wolumenami efemerycznymi na pliki tymczasowe, wejście, wyjście i logi.

Konwersja wideo i audio

Konwersja wideo i audio

FFmpeg konwertuje wideo na pięć rozdzielczości HLS (1080p→240p) z segmentami 4-sekundowymi. Każda ścieżka audio jest wykrywana i konwertowana na pięć poziomów bitrate – od 32 do 192 kbps.

Generowanie playlisty master

Generowanie playlisty master

Jeden plik m3u8 master odwołuje się do wszystkich rozdzielczości wideo i ścieżek audio z metadanymi językowymi — umożliwiając adaptacyjne strumieniowanie i przełączanie języków w każdym nowoczesnym odtwarzaczu.

Przesyłanie, czyszczenie i autoskalowanie

Przesyłanie, czyszczenie i autoskalowanie

Wszystkie pliki są przesyłane do S3 równolegle za pomocą puli 500 wątków. Stare segmenty HLS są usuwane przed pojawieniem się nowych. Autoskalowacz zmniejsza liczbę węzłów do zera, gdy kolejka się opróżnia.

Rozwiązania

Kluczowe cechy rozwiązania

  • Adaptacyjne wideo z bitrate - 5 poziomów — 240p (300 kbps) → 1080p (5000 kbps) w jednej playliście. Automatyczny dobór jakości na podstawie szybkości połączenia.

  • Wielościeżkowe audio z tagami językowymi — Wykrywa i konwertuje wszystkie ścieżki audio, w tym komentarze i opisy, zachowując metadane językowe.

  • Automatyczne wykrywanie kodeka — Wykorzystuje przyspieszenie NVIDIA / Intel / AMD lub software'owy fallback, jeśli brak GPU.

  • Automatyczne skalowanie Zero Idle Cost — Węzły EC2 zmniejszają się do zera, gdy kolejka jest pusta. Aktywne zadania są chronione przed przedwczesnym zakończeniem.

  • Izolacja Multi-Project S3 — Każdy projekt ma swoją własną ścieżkę wyjściową S3. Obsługuje zarówno struktury folderów oparte na wydawcy, jak i na serii.


Image

Wyniki w liczbach

Pokrycie jakości wideo

1080p

Pięć warstw adaptacyjnej przepływności od 240p przy 300 kbps do pełnego HD 1080p przy 5000 kbps — odtwarzacz automatycznie zmienia jakość w zależności od szybkości łącza.

Równoległe watki ładowania

500x

Setki plików wyjściowych — segmenty, playlisty, miniatury, podglądy — są przesyłane do S3 jednocześnie za pomocą puli wątków, minimalizując czas dostawy.

Czas trwania segmentu HLS

4sek

4-sekundowe segmenty HLS balansują szybkość adaptacyjnej zmiany jakości z wydajnością buforowania — odtwarzacz reaguje na zmiany sieci w granicach jednego segmentu.

Poziomy przepływności audio dla każdej ścieżki

5x

Każda ścieżka audio — w tym komentarze i opis — ma do pięciu poziomów jakości od 32 kbps (HE-AAC) do 192 kbps (LC-AAC) z normalizacją głośności.

Zbuduj skalowalną linię przetwarzania mediów dla swojej platformy!

Uzyskaj w pełni zautomatyzowany system konwersji HLS, który skaluje się z Twoimi treściami – a my pomożemy Ci znaleźć optymalną architekturę dla Twojego projektu.

Message not sent.
Message not sent.
×
Nie wiesz, od czego zacząć? Pomożemy Ci wyznaczyć kolejne kroki!
Zgoda na przetwarzanie danych osobowych
×
Masz wyzwanie? Nasz zespół zamieni je w rozwiązanie.
Zgoda na przetwarzanie danych osobowych