Usługa Konwersji Mediów

Przegląd przypadku

To usługa konwersji mediów w chmurze, która pobiera pliki wideo i audio i zamienia je na format strumieniowy HLS z obsługą zmiennej przepływności. System nasłuchuje kolejki SQS na nowe pliki, uruchamia zadanie Kubernetes dla każdego z nich i generuje pełen zestaw playlist m3u8 oraz segmentów .ts gotowych do odtwarzania na dowolnym nowoczesnym odtwarzaczu wideo.


Obsługuje wiele rozdzielczości wideo, różne poziomy bitrate audio oraz obsługuje filmy z kilkoma ścieżkami audio — w tym różnymi językami lub komentarzami. Usługa działa jednocześnie dla wielu projektów i organizuje wyniki w oddzielnych folderach na S3 w zależności od projektu lub wydawcy.

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

Image

Kluczowe informacje o projekcie

Branże

Branże

Media i rozrywka, platformy strumieniowania wideo, usługi OTT i nadawanie, wydawnictwa cyfrowe, sieci dostarczania treści — każdy biznes, który musi dostarczać treści wideo lub audio do użytkowników na różnych urządzeniach i przy zmiennych warunkach sieciowych.

Usługi

Usługi

Przetwarzanie kolejki SQS z długim pollowaniem i zarządzaniem czasem widoczności, transkodowanie mediów i analiza strumieni FFmpeg & FFprobe, orkiestracja zadań Kubernetes z wolumenami efemerycznymi i afinitetem do węzłów, równoległy pipeline przesyłania do S3 z czyszczeniem przed przesłaniem.

Rozwiązania

Rozwiązania

Wielorozdzielczościowe wideo HLS — 1080p, 720p, 480p, 360p, 240p z adaptacyjnym bitrate, Wielostopniowe audio HLS — poziomy 32, 64, 96, 128, 192 kbps dla każdej ścieżki audio, Automatyczne wykrywanie wszystkich strumieni audio z metadanymi językowymi, Miniatury przy 2 sekundach, niskoresolucyjny podgląd 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 pojedynczego pliku wejściowego

Wiele formatów wyjściowych�z pojedynczego pliku wejściowego

Jeden plik wideo może wygenerować setki plików — pięć rozdzielczości wideo, pięć bitrate'ów audio na ścieżkę, plus miniatury i podglądy. Musieliśmy wszystko to zorganizować czysto i szybko przesłać.

Wiele ścieżek audio na jeden plik wideo

Wiele ścieżek audio na jeden plik wideo

Niektóre filmy mają kilka ścieżek audio w różnych językach. System musiał wszystkie wykrywać automatycznie, konwertować każdą osobno i tworzyć playlistę główną odwołującą się do każdej ścieżki z odpowiednią etykietą języka.

Niezawodność kolejki�i logika powtórek

Niezawodność kolejki�i logika powtórek

W SQS trzeba poprawnie obsługiwać duplikaty, timeouty widoczności i nieudane zadania. Jeśli zadanie się nie powiedzie, wiadomość powinna wrócić do kolejki do ponownej próby. Jeśli ten sam plik zostanie dodany dwukrotnie, nie powinniśmy go przetwarzać ponownie.

Zarządzanie na Kubernetes

Zarządzanie na Kubernetes

Każde zadanie konwersji zużywa dużo CPU i pamięci. Musieliśmy ustawić wolumeny efemeryczne, zasady afinitetu do węzłów i odpowiednie czyszczenie, aby zadania się nie nawarstwiały ani nie blokowały wzajemnie.

Izolacja wielu projektów na S3

Izolacja wielu projektów na S3

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

Automatyczny dobór kodeka

Automatyczny dobór kodeka

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ły pipeline działa bez udziału człowieka — od momentu pojawienia się pliku na S3 do finalnego wyjścia HLS gotowego do odtwarzania. Każdy krok płynnie przekazuje dalej, z wbudowanymi zabezpieczeniami przed błędami, duplikatami i rywalizacją o zasoby. Poniżej opisano, jak system przetwarza plik przez cały cykl konwersji.

Odczyt kolejki

Odczyt kolejki

Menedżer zadań działa na Kubernetes i odczytuje kolejkę SQS z długim pollowaniem. Gdy pojawia się wiadomość, analizuje kubełek S3 i klucz obiektu, aby zidentyfikować plik źródłowy.

Zapobieganie duplikatom

Zapobieganie duplikatom

Przed utworzeniem nowego zadania menedżer sprawdza, czy istnieje już zadanie Kubernetes dla tego samego pliku. Jeśli tak, wiadomość jest ponownie dodawana do kolejki z opóźnieniem, aby zapobiec podwójnemu przetwarzaniu.

Tworzenie zadań Kubernetes

Tworzenie zadań Kubernetes

Nowy pod tworzony jest na podstawie szablonu z odpowiednimi limitami zasobów, afinitetem do węzłów na bazie 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 głównej

Generowanie playlisty głównej

Pojedynczy plik m3u8 master odnosi się do wszystkich rozdzielczości wideo i ścieżek audio z metadanymi językowymi — umożliwiając adaptacyjne strumieniowanie i zmianę języka w dowolnym nowoczesnym odtwarzaczu.

Przesyłanie, czyszczenie i autoskalowanie

Przesyłanie, czyszczenie i autoskalowanie

Wszystkie pliki są przesyłane do S3 równolegle przez pulę 500 wątków. Stare segmenty HLS są usuwane przed pojawieniem się nowego zestawu. Autoskalowanie zmniejsza liczbę węzłów do zera, gdy kolejka jest pusta.

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 prędkości połączenia.

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

  • Automatyczne wykrywanie kodeków — Wykorzystuje akcelerację NVIDIA / Intel / AMD lub oprogramowanie zastępcze, jeśli brak GPU.

  • Automatyczne skalowanie bez kosztów bezczynności — Węzły EC2 zmniejszają skalę do zera, gdy kolejka jest pusta. Aktywne zadania są chronione przed przedwczesnym zakończeniem.

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


Image

Wyniki w liczbach

Pokrycie jakości wideo

1080p

Pięć poziomów adaptacyjnej przepływności od 240p przy 300 kbps do pełnego HD 1080p przy 5000 kbps — odtwarzacz automatycznie zmienia jakość na podstawie szybkości połączenia.

Równoległe wątki przesyłania

500x

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

Segmentowany czas trwania HLS

4sek

4-sekundowe segmenty HLS równoważą szybkość adaptacyjnego przełączania z efektywnością buforowania — odtwarzacz reaguje na zmiany sieci w granicach pojedynczego segmentu.

Poziomy przepływności audio na ścieżkę

5x

Każda ścieżka audio — w tym komentarze i opisy — 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 multimediów dla swojej platformy!

Zyskaj w pełni automatyczny system konwersji HLS, który skaluje się wraz 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