Studia przypadków
Instagram i Facebook zapewniają natychmiastowe odtwarzanie i zwiększają zaangażowanie użytkowników dzięki Media3 PreloadManager
Czas czytania: 4 minuty
W dynamicznym świecie mediów społecznościowych uwaga użytkowników jest szybko zdobywana i tracona. Aplikacje Meta (Facebook i Instagram) należą do największych platform społecznościowych na świecie i obsługują miliardy użytkowników na całym świecie. Dla firmy Meta płynne odtwarzanie filmów to nie tylko funkcja, ale podstawa wrażeń użytkowników. Krótkie filmy, zwłaszcza te publikowane na Facebooku i Instagramie, stały się głównym źródłem zaangażowania. Umożliwiają one kreatywną ekspresję i szybkie konsumowanie treści, łącząc i dostarczając rozrywki ludziom na całym świecie.
W tym poście na blogu opisujemy, jak Meta przekształciła odtwarzanie filmów dla miliardów użytkowników, zapewniając prawdziwe natychmiastowe odtwarzanie.
Opóźnienie w krótkich filmach
Krótkie filmy prowadzą do bardzo szybkich interakcji, ponieważ użytkownicy szybko przewijają swoje kanały. Płynne przechodzenie między filmami w stale zmieniającym się kanale stwarza wyjątkowe trudności w przypadku natychmiastowego odtwarzania. Dlatego potrzebujemy rozwiązań, które wykraczają poza tradycyjne buforowanie na dysku i standardowe reaktywne strategie odtwarzania.
Dalsze kroki w przypadku Menedżera wstępnego wczytywania Media3
Aby dostosować się do zmian w nawykach konsumpcji treści, które wynikają ze wzrostu popularności filmów Short i ograniczeń tradycyjnej architektury odtwarzania długich treści, w Jetpack Media3 wprowadziliśmy PreloadManager. Ten komponent umożliwia programistom wyjście poza buforowanie na dysku, oferując szczegółową kontrolę i dostosowywanie, aby multimedia były gotowe w pamięci, zanim użytkownik kliknie przycisk odtwarzania. Więcej informacji technicznych o odtwarzaniu multimediów za pomocą PreloadManager znajdziesz w tej serii postów na blogu.
Jak Meta osiągnęła prawdziwe błyskawiczne odtwarzanie
Istniejące komplikacje
Wcześniej Meta używała do wyświetlania filmów połączenia rozgrzewki (przygotowania odtwarzaczy) i pobierania z wyprzedzeniem (buforowania treści na dysku). Chociaż te metody pomogły zwiększyć wydajność sieci, wiązały się z poważnymi wyzwaniami. Rozgrzewka wymagała kolejnego tworzenia wielu instancji odtwarzacza, co zużywało dużo pamięci i ograniczało wstępne wczytywanie tylko do kilku filmów. Tak duże zapotrzebowanie na zasoby oznaczało, że można zastosować bardziej skalowalne i niezawodne rozwiązanie, które zapewni natychmiastowe odtwarzanie oczekiwane w nowoczesnych, szybko przewijanych kanałach społecznościowych.
Integracja menedżera wstępnego wczytywania Media3
Aby uzyskać prawdziwie natychmiastowe odtwarzanie, zespół Meta Media Foundation Client zintegrował Jetpack Media3 PreloadManager z Facebookiem i Instagramem. Wybrali DefaultPreloadManager, aby ujednolicić systemy wstępnego wczytywania i odtwarzania. Ta integracja wymagała refaktoryzacji dotychczasowej architektury Meta, aby umożliwić efektywne udostępnianie zasobów między instancjami PreloadManager i ExoPlayer. Ta zmiana strategiczna zapewniła kluczową przewagę architektoniczną: możliwość równoległego wykonywania zadań wstępnego wczytywania i zarządzania wieloma filmami za pomocą jednej instancji odtwarzacza. Dzięki temu znacznie zwiększyliśmy możliwości wstępnego wczytywania, eliminując jednocześnie złożoność pamięci, która była problemem w przypadku poprzedniego podejścia.
Optymalizacja i dostrajanie wydajności
Zespół przeprowadził następnie obszerne testy i iteracje, aby zoptymalizować wydajność w różnorodnym globalnym ekosystemie urządzeń Meta. Początkowe agresywne wstępne wczytywanie czasami powodowało problemy, w tym zwiększone wykorzystanie pamięci i spowolnienie przewijania. Aby rozwiązać ten problem, zespół dopracował implementację, przeprowadzając dokładne pomiary pamięci, uwzględniając fragmentację urządzeń i dostosowując system do konkretnych wzorców interfejsu.
Dostosowywanie implementacji do konkretnych wzorców interfejsu
Meta zastosowała różne strategie wstępnego wczytywania i dostosowała zachowanie do konkretnych wzorców interfejsu użytkownika każdej aplikacji:
- Aktualności na Facebooku: interfejs użytkownika priorytetowo traktuje film, który jest aktualnie widoczny. Menedżer wstępnie wczytuje tylko bieżący film, aby rozpoczął się w momencie, gdy użytkownik wstrzyma przewijanie. Takie podejście „tylko bieżące” minimalizuje ilość danych i zajętość pamięci w środowisku, w którym użytkownicy mogą widzieć wiele statycznych postów między filmami. Obecnie system jest zaprojektowany tak, aby wstępnie wczytywać tylko widoczny film, ale można go dostosować, aby wstępnie wczytywał też przyszłe filmy.
- Rolki na Instagramie: to środowisko, w którym użytkownicy przewijają filmy w pionie. W tym interfejsie zespół wdrożył strategię „sąsiadującego wstępnego wczytywania”. Menedżer wstępnego wczytywania przechowuje w pamięci filmy bezpośrednio po bieżącej rolce. Dzięki temu dwukierunkowemu podejściu przejście jest natychmiastowe i płynne niezależnie od tego, czy użytkownik przesunie palcem w górę czy w dół. Dzięki temu znacznie poprawiła się jakość usług, w tym czas rozpoczęcia odtwarzania i czas do wyświetlenia pierwszej klatki.
Skalowanie w różnorodnym ekosystemie urządzeń
Skalowanie wydajnego stosu wideo na miliardach urządzeń wymaga czegoś więcej niż tylko agresywnego wstępnego wczytywania. Wymaga inteligencji. Meta początkowo miała problemy z obciążeniem pamięci i opóźnieniami przewijania, zwłaszcza na urządzeniach ze średniej i niższej półki. Aby rozwiązać ten problem, stworzyli system wykrywania obciążenia urządzenia oparty na implementacji Media3. Aplikacje monitorują teraz sygnały wejścia/wyjścia i procesora w czasie rzeczywistym. Jeśli urządzenie jest mocno obciążone, wstępne wczytywanie jest wstrzymywane, aby nadać priorytet szybkości reakcji interfejsu.
Ta optymalizacja uwzględniająca urządzenie zapewnia, że korzyści z natychmiastowego odtwarzania nie są osiągane kosztem stabilności systemu, dzięki czemu nawet użytkownicy starszych urządzeń mogą korzystać z płynniejszego i nieprzerwanego przesyłania strumieniowego.
Sukcesy architektoniczne i kondycja kodu
Oprócz danych widocznych dla użytkowników przejście na Media3 PreloadManager przyniosło długoterminowe korzyści architektoniczne. Proces integracji i dostrajania wymagał wielu iteracji, aby zrównoważyć wydajność, ale powstała baza kodu jest łatwiejsza w utrzymaniu. Zespół stwierdził, że interfejs API PreloadManager jest dobrze zintegrowany z istniejącym ekosystemem Media3, co pozwala na lepsze udostępnianie zasobów. Wdrożenie PreloadManagera w Media3 było dla firmy Meta strategiczną inwestycją w przyszłość konsumpcji treści wideo.
Dzięki zastosowaniu wstępnego wczytywania i dodaniu inteligentnych bramek na urządzeniach udało im się zwiększyć łączny czas oglądania w aplikacjach i poprawić ogólne zaangażowanie globalnej społeczności.
Wpływ na Instagrama i Facebooka
Proaktywna architektura przyniosła natychmiastowe i wymierne korzyści na obu platformach.
- Facebook odnotował szybsze uruchamianie odtwarzania, mniejszą liczbę przerw w odtwarzaniu i spadek liczby nieudanych sesji (np. ponowne buforowanie, opóźnione uruchamianie, niższa jakość itp.), co ogólnie przełożyło się na dłuższy czas oglądania.
- Na Instagramie odnotowaliśmy szybsze rozpoczęcie odtwarzania i wzrost całkowitego czasu oglądania. Wyeliminowanie opóźnienia dołączenia (odstępu między działaniem użytkownika a wyświetleniem pierwszej klatki) bezpośrednio zwiększyło wskaźniki zaangażowania. Mniejsza liczba przerw spowodowanych mniejszym buforowaniem oznaczała, że użytkownicy oglądali więcej treści, co było widoczne w statystykach zaangażowania.
Najważniejsze wnioski dotyczące inżynierii na dużą skalę
Wraz z ewolucją sposobów korzystania z mediów będzie rosło zapotrzebowanie na natychmiastowe doświadczenia. Wdrożenie proaktywnego zarządzania pamięcią i optymalizacja pod kątem skalowania oraz różnorodności urządzeń zapewniają, że aplikacja będzie w stanie skutecznie spełnić te oczekiwania.
- Określanie priorytetu inteligentnego wstępnego wczytywania
Zadbaj o niezawodność, minimalizując zacięcia i czas wczytywania dzięki wstępnemu wczytywaniu. Zamiast prostego buforowania na dysku, wstępne wczytywanie na poziomie pamięci zapewnia, że treści są gotowe w momencie, gdy użytkownik wchodzi z nimi w interakcję.
- Dopasowywanie implementacji do wzorców interfejsu
Dostosuj działanie wstępnego wczytywania do interfejsu aplikacji. Na przykład w przypadku mieszanych plików danych, takich jak Facebook, używaj ustawienia „tylko bieżące”, aby oszczędzać pamięć, a w przypadku środowisk pionowych, takich jak Reels na Instagramie, stosuj strategię „wstępne wczytywanie sąsiednich”.
- Korzystanie z Media3 w celu zapewnienia długoterminowej kondycji kodu
Integracja z interfejsami Media3 API zamiast z niestandardowym rozwiązaniem do buforowania umożliwia lepsze udostępnianie zasobów między odtwarzaczem a klasą PreloadManager, co pozwala zarządzać wieloma filmami za pomocą jednej instancji odtwarzacza. Dzięki temu baza kodu jest odporna na zmiany w przyszłości i łatwiejsza w utrzymaniu i optymalizacji przez zespoły inżynieryjne, a także umożliwia korzystanie z najnowszych aktualizacji funkcji.
- Wdrażanie optymalizacji uwzględniających urządzenia
Zwiększ zasięg rynkowy, testując aplikację na różnych urządzeniach, w tym na modelach ze średniej i niższej półki. Korzystaj z sygnałów w czasie rzeczywistym, takich jak procesor, pamięć i wejście/wyjście, aby dynamicznie dostosowywać funkcje i wykorzystanie zasobów.
Więcej informacji
Aby rozpocząć i dowiedzieć się więcej, wejdź na stronę
- Zapoznaj się z dokumentacją PreloadManager w Media3.
- Szczegółowe informacje techniczne i dotyczące implementacji znajdziesz w serii artykułów na blogu.
- Aby zobaczyć, jak działa wstępne wczytywanie, zapoznaj się z przykładową aplikacją.
Teraz znasz już tajniki błyskawicznego odtwarzania. Wypróbuj je!
Czytaj dalej
-
Studia przypadków
Monzo to brytyjski bank cyfrowy, który ma 15 milionów klientów i stale się rozwija. W miarę skalowania aplikacji zespół inżynierów uznał czas uruchamiania aplikacji za kluczowy obszar wymagający poprawy, ale obawiał się, że będzie to wymagało znacznych zmian w bazie kodu.
Ben Weiss • Czas czytania: 2 minuty
-
Studia przypadków
TikTok to globalna platforma z krótkimi filmami, która jest znana z ogromnej bazy użytkowników i innowacyjnych funkcji.
Ben Trengrove, Ajesh Pai • Czas czytania: 2 minuty
-
Studia przypadków
Tworzenie aplikacji na Androida na urządzenia do noszenia oznacza, że prawdziwa praca zaczyna się, gdy ekran się wyłącza.
Breana Tate • Czas czytania: 4 minuty
Bądź na bieżąco
Otrzymuj co tydzień najnowsze informacje o tworzeniu aplikacji na Androida na swoją skrzynkę odbiorczą.