Case Studies
Instagram i Facebook zapewniają natychmiastowe odtwarzanie i zwiększają zaangażowanie użytkowników dzięki Media3 PreloadManager
4 minuty czytania
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 Meta płynne odtwarzanie filmów to nie tylko funkcja, ale też podstawa komfortu użytkowników. Krótkie filmy, zwłaszcza w Aktualnościach na Facebooku i Rolkach na Instagramie, stały się głównym czynnikiem zwiększającym zaangażowanie. Umożliwiają one kreatywne wyrażanie siebie i szybkie konsumowanie treści, łącząc i bawiąc ludzi na całym świecie.
Z tego posta na blogu dowiesz się, jak Meta zmieniła odtwarzanie filmów dla miliardów użytkowników, wprowadzając prawdziwie natychmiastowe odtwarzanie.
Opóźnienie w przypadku krótkich filmów
Krótkie filmy prowadzą do bardzo szybkich interakcji, ponieważ użytkownicy szybko przewijają swoje kanały. Zapewnienie płynnego przejścia 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 z Media3 PreloadManager
Aby rozwiązać problemy związane ze zmianą nawyków konsumpcyjnych wynikającą z rosnącej popularności krótkich treści oraz ograniczeniami tradycyjnej architektury odtwarzania długich treści, Jetpack Media3 wprowadził PreloadManager. Ten komponent umożliwia deweloperom 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. Aby poznać szczegóły techniczne dotyczące odtwarzania multimediów za pomocą PreloadManager, przeczytaj tę serię postów na blogu.
Jak Meta osiągnęła prawdziwie natychmiastowe odtwarzanie
Istniejące złożoności
Wcześniej Meta używała do dostarczania filmów kombinacji rozgrzewania (aby przygotować odtwarzacze) i pobierania z wyprzedzeniem (aby buforować treści na dysku). Chociaż te metody pomogły zwiększyć wydajność sieci, wprowadziły też poważne problemy. Rozgrzewanie wymagało sekwencyjnego tworzenia instancji wielu odtwarzaczy, co zużywało dużo pamięci i ograniczało pobieranie z wyprzedzeniem do zaledwie kilku filmów. To duże zapotrzebowanie na zasoby oznaczało, że można zastosować bardziej skalowalne i niezawodne rozwiązanie, aby zapewnić natychmiastowe odtwarzanie oczekiwane w nowoczesnych, szybko przewijanych kanałach społecznościowych.
Integracja Media3 PreloadManager
Aby osiągnąć prawdziwie natychmiastowe odtwarzanie, zespół Media Foundation Client w Meta zintegrował Jetpack Media3 PreloadManager z Facebookiem i Instagramem. Aby ujednolicić systemy pobierania z wyprzedzeniem i odtwarzania, wybrał DefaultPreloadManager. Ta integracja wymagała refaktoryzacji dotychczasowej architektury Meta, aby umożliwić efektywne udostępnianie zasobów między instancjami PreloadManager i ExoPlayer. Ta strategiczna zmiana zapewniła kluczową przewagę architektoniczną: możliwość równoległego pobierania z wyprzedzeniem i zarządzania wieloma filmami za pomocą jednej instancji odtwarzacza. Dzięki temu znacznie zwiększono możliwości pobierania z wyprzedzeniem, eliminując jednocześnie złożoność związaną z dużym zużyciem pamięci, która występowała w poprzednim podejściu.
Optymalizacja i dostrajanie wydajności
Następnie zespół przeprowadził obszerne testy i iteracje, aby zoptymalizować wydajność w różnorodnym ekosystemie urządzeń Meta na całym świecie. Początkowe agresywne wstępne ładowanie czasami powodowało problemy, w tym zwiększone wykorzystanie pamięci i spowolnienie przewijania. Aby rozwiązać ten problem, zespół dostroił implementację, stosując dokładne pomiary pamięci, uwzględniając fragmentację urządzeń i dostosowując system do konkretnych wzorców interfejsu.
Dostrajanie implementacji do konkretnych wzorców interfejsu
Meta zastosowała różne strategie pobierania z wyprzedzeniem i dostosowała zachowanie do konkretnych wzorców interfejsu każdej aplikacji:
- Aktualności na Facebooku: interfejs użytkownika priorytetowo traktuje film, który jest aktualnie wyświetlany. Menedżer pobiera z wyprzedzeniem tylko bieżący film, aby zapewnić jego rozpoczęcie w momencie, gdy użytkownik zatrzyma przewijanie. To podejście "tylko bieżący" minimalizuje zużycie danych i pamięci w środowisku, w którym użytkownicy mogą widzieć wiele statycznych postów między filmami. Chociaż system jest obecnie zaprojektowany tak, aby pobierać z wyprzedzeniem tylko wyświetlany film, można go dostosować tak, aby pobierał też filmy, które będą wyświetlane w przyszłości.
- Rolki na Instagramie: to środowisko, w którym użytkownicy przewijają filmy w pionie. W przypadku tego interfejsu zespół wdrożył strategię „pobierania z wyprzedzeniem sąsiednich filmów”. PreloadManager przechowuje w pamięci filmy bezpośrednio po bieżącej Rolce. To dwukierunkowe podejście zapewnia, że przejście pozostaje natychmiastowe i płynne niezależnie od tego, czy użytkownik przewija w górę czy w dół. Dzięki temu znacznie poprawiła się jakość obsługi (QoE), w tym czas rozpoczęcia odtwarzania i czas do wyświetlenia pierwszej klatki.
Skalowanie w różnorodnym ekosystemie urządzeń na całym świecie
Skalowanie stosu wideo o wysokiej wydajności na miliardy urządzeń wymaga czegoś więcej niż tylko agresywnego pobierania z wyprzedzeniem – wymaga inteligencji. Meta początkowo miała problemy z obciążeniem pamięci i opóźnieniem przewijania, zwłaszcza w przypadku urządzeń z niższej i średniej półki. Aby rozwiązać ten problem, zespół zbudował 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, pobieranie z wyprzedzeniem jest wstrzymywane, aby nadać priorytet responsywności interfejsu.
Ta optymalizacja uwzględniająca urządzenie zapewnia, że korzyści z natychmiastowego odtwarzania nie są osiągane kosztem stabilności systemu, co pozwala nawet użytkownikom starszych urządzeń korzystać z płynniejszego i nieprzerwanego kanału.
Korzyści architektoniczne i jakość kodu
Oprócz wskaźników widocznych dla użytkowników migracja do Media3 PreloadManager przyniosła długoterminowe korzyści architektoniczne. Chociaż proces integracji i dostrajania wymagał wielu iteracji, aby zrównoważyć wydajność, powstała baza kodu jest łatwiejsza w utrzymaniu. Zespół stwierdził, że interfejs API PreloadManager jest dobrze zintegrowany z dotychczasowym ekosystemem Media3, co umożliwia lepsze udostępnianie zasobów. Dla Meta wdrożenie Media3 PreloadManager było strategiczną inwestycją w przyszłość konsumpcji wideo.
Dzięki wdrożeniu pobierania z wyprzedzeniem i dodaniu bramek inteligentnych urządzeń zespół z powodzeniem zwiększył łączny czas oglądania w swoich aplikacjach i poprawił ogólne zaangażowanie społeczności na całym świecie.
Wpływ na Instagrama i Facebooka
Proaktywna architektura przyniosła natychmiastowe i mierzalne ulepszenia na obu platformach.
- Na Facebooku skrócił się czas rozpoczęcia odtwarzania, zmniejszyła się liczba wstrzymań odtwarzania i liczba nieudanych sesji (np. ponowne buforowanie, opóźniony czas rozpoczęcia, niższa jakość itp.), co ogólnie przełożyło się na dłuższy czas oglądania.
- Na Instagramie skrócił się czas rozpoczęcia odtwarzania i zwiększył się łączny czas oglądania. Eliminacja opóźnienia dołączenia (odstępu między działaniem użytkownika a wyświetleniem pierwszej klatki) bezpośrednio zwiększyła wskaźniki zaangażowania. Mniejsza liczba przerw spowodowana zmniejszeniem buforowania oznaczała, że użytkownicy oglądali więcej treści, co było widoczne we wskaźnikach zaangażowania.
Kluczowe wnioski inżynieryjne na dużą skalę
Wraz ze zmianą nawyków konsumpcyjnych mediów będzie rosło zapotrzebowanie na natychmiastowe wrażenia. Wdrożenie proaktywnego zarządzania pamięcią i optymalizacja pod kątem skali i różnorodności urządzeń zapewniają, że aplikacja może skutecznie spełniać te oczekiwania.
- Priorytetowe traktowanie inteligentnego pobierania z wyprzedzeniem
Skup się na zapewnieniu niezawodności, minimalizując zacięcia i czasy wczytywania dzięki pobieraniu z wyprzedzeniem. Zamiast prostego buforowania na dysku, korzystanie z pobierania z wyprzedzeniem na poziomie pamięci zapewnia, że treści są gotowe w momencie, gdy użytkownik wchodzi z nimi w interakcję.
- Dostosowanie implementacji do wzorców interfejsu
Dostosuj zachowanie pobierania z wyprzedzeniem do interfejsu aplikacji. Na przykład w przypadku kanałów mieszanych, takich jak Facebook, użyj podejścia „tylko bieżący”, aby oszczędzać pamięć, a w przypadku środowisk pionowych, takich jak Rolki na Instagramie, strategii „wstępnego wczytywania sąsiednich filmów”.
- Korzystanie z Media3 w celu zapewnienia długoterminowej jakości kodu
Integracja z interfejsami API Media3 zamiast z niestandardowym rozwiązaniem do buforowania umożliwia lepsze udostępnianie zasobów między odtwarzaczem a PreloadManager, co pozwala zarządzać wieloma filmami za pomocą jednej instancji odtwarzacza. Dzięki temu baza kodu jest przyszłościowa i łatwiejsza w utrzymaniu i optymalizacji przez zespoły inżynierów, a także umożliwia korzystanie z najnowszych aktualizacji funkcji.
- Wdrożenie optymalizacji uwzględniających urządzenie
Poszerz swój zasięg rynkowy, testując aplikację na różnych urządzeniach, w tym na modelach z niższej i średniej półki. Używaj 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, odwiedź:
- Zapoznaj się z dokumentacją Media3 PreloadManager.
- Przeczytaj serię postów na blogu, aby poznać zaawansowane szczegóły techniczne i implementacyjne.
- Aby zobaczyć pobieranie z wyprzedzeniem w działaniu, zapoznaj się z przykładową aplikacją.
Teraz znasz tajniki natychmiastowego odtwarzania. Wypróbuj je!
Czytaj dalej
-
r.r.
Case Studies
Karrot to hiperlokalna aplikacja marketplace typu peer-to-peer oparta na społeczności, która umożliwia użytkownikom kupowanie, sprzedawanie i wymienianie przedmiotów z innymi zweryfikowanymi użytkownikami. Od czasu uruchomienia w Korei Południowej w 2015 roku platforma rozszerzyła się na rynki globalne, zdobywając ponad 43 miliony zarejestrowanych użytkowników.
Thomas Ezan, Tracy Agyemang • 2 minuty czytania
-
Case Studies
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 do poprawy, ale obawiał się, że będzie to wymagało znacznych zmian w bazie kodu.
Ben Weiss, Tracy Agyemang • 2 minuty czytania
-
r.r.
Case Studies
Tworzenie aplikacji na Androida na urządzenia do noszenia oznacza, że prawdziwa praca zaczyna się, gdy ekran się wyłącza.
Breana Tate, Tracy Agyemang • 4 minuty czytania
Bądź na bieżąco
Otrzymuj co tydzień najnowsze informacje o tworzeniu aplikacji na Androida na swoją skrzynkę odbiorczą.