Przewodnik po najlepszych rozwiązaniach dotyczących transmisji strumieniowej na żywo w usłudze Media Services

Klienci często pytają, jak mogą zmniejszyć opóźnienie transmisji strumieniowej na żywo. W tym artykule opisano najlepsze rozwiązania dotyczące osiągania strumieni na żywo o małych opóźnieniach z dodatkiem do kodowania wydarzeń na żywo.

Uwaga

Przed kontynuowaniem czytania tego artykułu przeczytaj artykuł HLS (LL-HLS) o małych opóźnieniach, aby zrozumieć małe opóźnienia związane z kodowaniem zdarzeń na żywo. Następnie wróć do tego przewodnika, aby dowiedzieć się, co jeszcze może mieć wpływ na opóźnienie przesyłania strumieniowego.

Istnieje wiele czynników, które określają kompleksowe opóźnienie strumienia oprócz sposobu kodowania nośnika. Oto niektóre z nich, które należy wziąć pod uwagę:

  1. Opóźnienia po stronie kodera współtworzenia. Gdy klienci używają oprogramowania do kodowania, takiego jak OBS Studio, Wirecast lub inni, wysyłają strumień na żywo RTMP do usługi Media Services. Ustawienia na tym oprogramowaniu mają wpływ na kompleksowe opóźnienie transmisji strumieniowej na żywo.

  2. Opóźnienia w potoku transmisji strumieniowej na żywo w usłudze Azure Media Services

  3. Wydajność usługi CDN

  4. Buforowanie algorytmów odtwarzacza wideo i warunków sieciowych po stronie klienta

  5. Czas aprowizacji

Koder współtworzenia

Kontrolujesz ustawienia ustawień kodera źródłowego, zanim strumień RTMP osiągnie usługę Media Services. Poniżej przedstawiono kilka zaleceń dotyczących ustawień, które zapewniają najmniejsze możliwe opóźnienie:

  1. Wybierz region fizyczny najbliższy koderowi kontu usługi Media Services. Zapewni to doskonałe połączenie sieciowe z kontem usługi Media Services.

  2. Użyj spójnego rozmiaru fragmentu. Zalecamy użycie rozmiaru GOP w wysokości 2 sekund. Wartość domyślna w niektórych koderach, takich jak OBS, wynosi 8 sekund. Upewnij się, że to ustawienie zostanie zmienione.

  3. Użyj kodera procesora GPU, jeśli oprogramowanie do kodowania pozwala na to. Dzięki temu można odciążyć procesor CPU do procesora GPU.

  4. Użyj profilu kodowania zoptymalizowanego pod kątem małych opóźnień. Jeśli na przykład używasz kodera Nvidia H.264 w programie OBS Studio, może zostać wyświetlone ustawienie wstępne "zero opóźnienia".

  5. Wyślij zawartość, która nie jest wyższa w rozdzielczości niż to, co planujesz przesyłać strumieniowo. Jeśli na przykład używasz standardowych zdarzeń na żywo kodowania 720p, wyślij strumień, który jest już na 720p.

  6. Zachowaj szybkość klatek na 30 kl./s lub niższą, chyba że używasz wydarzeń na żywo z przekazywaniem. Chociaż obsługujemy dane wejściowe 60 fps dla wydarzeń na żywo, nasze kodowanie danych wyjściowych wydarzenia na żywo nadal nie przekracza 30 klatek na sekundę. W przypadku HLS o małych opóźnieniach zalecana jest stała częstotliwość klatek, a maksymalny czas trwania ramki nie powinien przekraczać 0,5 sekundy w celu uzyskania najlepszego środowiska.

Konfiguracja wydarzenia na żywo usługi Azure Media Services

Poniżej przedstawiono niektóre konfiguracje, które pomogą Zmniejszyć opóźnienie w potoku:

  1. Użyj opcji strumienia o małych opóźnieniach dla wydarzeń na żywo. W przypadku opcji standardowego kodowania (do 720p) i kodowania Premium (do 1080p) strumienia, chyba że potrzebujesz okna DVR dłuższego niż 6 godzin lub płynnego przesyłania strumieniowego, użyj ustawienia Opóźnienia strumienia o małym opóźnieniu.

  2. Zalecamy wybranie danych wyjściowych CMAF zarówno dla odtwarzania HLS, jak i DASH. Umożliwia to udostępnianie tych samych fragmentów dla obu formatów. Zwiększa współczynnik trafień pamięci podręcznej, gdy jest używana usługa CDN. Na przykład:

    Typ Format Przykład adresu URL
    HLS CMAF format=m3u8-cmaf https://amsv3account-usw22.streaming.media.azure.net/21b17732-0112-4d76-b526-763dcd843449/ignite.ism/manifest(format=m3u8-cmaf)
    MPEG-DASH CMAF format=mpd-time-cmaf https://amsv3account-usw22.streaming.media.azure.net/21b17732-0112-4d76-b526-763dcd843449/ignite.ism/manifest(format=mpd-time-cmaf)
  3. Jeśli musisz wybrać dane wyjściowe TS, użyj współczynnika pakowania HLS 1. Dzięki temu możemy spakować tylko jeden fragment do jednego segmentu HLS. Nie będziesz mieć pełnych korzyści z LL-HLS w rodzimych graczy Apple.

Optymalizacje odtwarzaczy

Podczas wybierania i konfigurowania odtwarzacza wideo upewnij się, że używasz ustawień zoptymalizowanych pod kątem mniejszych opóźnień.

Usługa Media Services obsługuje różne dane wyjściowe protokołu przesyłania strumieniowego — DASH, HLS z danymi wyjściowymi TS i HLS z fragmentami CMAF. W przypadku korzystania z opcji strumienia LowLatencyV2 należy znaleźć odtwarzacz obsługujący protokół HLS o małych opóźnieniach (LL-HLS). W zależności od implementacji odtwarzacza decyzje buforujące wpływają na opóźnienie obserwowane przez widza. Złe warunki sieciowe lub algorytmy domyślne, które faworyzują jakość i stabilność odtwarzania, mogą spowodować, że gracze zdecydują się buforować więcej zawartości z góry, aby zapobiec przerwom podczas odtwarzania. Te bufory przed sesjami odtwarzania i podczas sesji odtwarzania spowodują dodanie do kompleksowego opóźnienia.

Gdy jest używany program Azure Media Player, profil Heurystyki o małych opóźnieniach optymalizuje odtwarzacz, aby miał najmniejsze możliwe opóźnienie po stronie odtwarzacza. Ten odtwarzacz obsługuje tylko funkcję DASH, chyba że jest używany w przeglądarce Safari na urządzeniach firmy Apple.

Wybór i optymalizacje usługi CDN

Punkty końcowe przesyłania strumieniowego to serwery pochodzenia, które dostarczają zawartość strumieniową na żywo i VOD do sieci CDN lub bezpośrednio do klienta. Najlepszym rozwiązaniem jest użycie usługi Content Delivery Network (CDN) z chronionym źródłem w celu zapewnienia wydajnego dostarczania ruchu dla zawartości multimedialnej.

Zalecamy korzystanie z usługi Azure CDN udostępnianej przez firmę Verizon (Standardowa lub Premium). Zoptymalizowaliśmy środowisko integracji, aby klient mógł skonfigurować tę sieć CDN przy użyciu pojedynczego wyboru w Azure Portal. Pamiętaj, aby włączyć funkcję Origin Shield i optymalizacje przesyłania strumieniowego dla punktu końcowego usługi CDN przy każdym uruchomieniu punktu końcowego przesyłania strumieniowego.

Nasi klienci mają również dobre doświadczenia w dostarczaniu własnej sieci CDN. Upewnij się, że środki są podejmowane w sieci CDN w celu ochrony źródła przed nadmiernym ruchem.

Wydajność można również poprawić, konfigurując reguły dla profilu usługi CDN. Zobacz Jak włączyć optymalizacje usługi CDN.

Skalowanie punktu końcowego przesyłania strumieniowego

Uwaga

Standardowy punkt końcowy/źródła przesyłania strumieniowego to zasóbudostępniony, który umożliwia klientom z małymi ilościami ruchu przesyłanie strumieniowe zawartości przy niższych kosztach. Nie należy używać standardowego punktu końcowego przesyłania strumieniowego do skalowania jednostek przesyłania strumieniowego, jeśli oczekujesz dużych ilości ruchu lub planujesz użyć sieci CDN.

Punkt końcowy/źródło przesyłania strumieniowego w warstwie Premium zapewnia większą elastyczność i izolację, którą klienci mogą skalować, dodając lub usuwając dedykowane jednostki przesyłania strumieniowego. Jednostka przesyłania strumieniowego to zasób obliczeniowy przydzielony do punktu końcowego przesyłania strumieniowego. Każda jednostka przesyłania strumieniowego może przesyłać strumieniowo około 200 Mb/s ruchu.

Chociaż jednocześnie można przesyłać strumieniowo wiele zdarzeń na żywo przy użyciu tego samego punktu końcowego przesyłania strumieniowego, maksymalna domyślna liczba jednostek przesyłania strumieniowego wymagana dla jednego punktu końcowego przesyłania strumieniowego wynosi 10. Możesz otworzyć bilet pomocy technicznej, aby zażądać więcej niż domyślne 10.

Określanie potrzebnych jednostek przesyłania strumieniowego w warstwie Premium

Istnieją dwa kroki umożliwiające określenie liczby potrzebnych punktów końcowych przesyłania strumieniowego i jednostek przesyłania strumieniowego:

  1. Określ łączny wymagany ruch wychodzący.

  2. Podziel łączny ruch wychodzący o 200, czyli maksymalną liczbę Mb/s, którą każda jednostka przesyłania strumieniowego może przesyłać strumieniowo.

Określanie wymaganego całkowitego ruchu wychodzącego

Określ łączny ruch wychodzący wymagany przy użyciu poniższej formuły.

Łączna liczba potrzebnych ruchów wychodzących = średnia przepustowość x liczba współbieżnych osób przeglądających x procentobsługiwanych przez punkt końcowy przesyłania strumieniowego.

Przyjrzyjmy się każdemu mnożnikowi z kolei:

Średnia przepustowość. Jaka jest średnia szybkość transmisji bitów, którą planujesz przesyłać strumieniowo? Innymi słowy, jeśli będziesz mieć dostęp do wielu szybkości bitów, jaka jest średnia dla wszystkich szybkości bitów, dla których planujesz? Można to oszacować przy użyciu jednej z następujących metod:

W przypadku wydarzenia na żywo, które obejmuje kodowanie:

  • Jeśli nie wiesz, jaka będzie średnia przepustowość, możesz użyć naszych najwyższych szybkości transmisji bitów jako oszacowania. Nasza maksymalna szybkość transmisji bitów wynosi 5,5 Mb/s dla zdarzeń na żywo zakodowanych w formacie 1080p, dlatego średnia szybkość transmisji bitów będzie gdzieś około 3,5 Mb/s.

  • Przyjrzyj się ustawieniu kodowania używanego do kodowania wydarzenia na żywo, na przykład ustawienia wstępne AdaptiveStreaming(H.264). Zobacz ten przykład danych wyjściowych.

W przypadku wydarzenia na żywo, które po prostu korzysta z przekazywania i nie kodowania:

  • Sprawdź drabinę szybkości transmisji bitów kodowania używaną przez koder lokalny.

Liczba równoczesnych osób przeglądających. Ile równoczesnych osób przeglądających jest oczekiwanych? Może to być trudne do oszacowania, ale najlepiej opierać się na danych klientów. Czy przesyłasz konferencję do odbiorców globalnych? Czy planujesz transmisję strumieniową na żywo, aby sprzedawać klientom zestaw produktów?

Procent ruchuobsługiwanego przezpunkt końcowy przesyłania strumieniowego. Można to również wyrazić jako "procent ruchu, który nie jest obsługiwany przez sieć CDN", ponieważ jest to liczba, która rzeczywiście przechodzi do formuły. Tak więc, mając to na uwadze, jaki jest odciążanie usługi CDN, którego oczekujesz? Jeśli oczekuje się, że sieć CDN obsłuży 90% ruchu na żywo, oczekiwano tylko 10% ruchu w punkcie końcowym przesyłania strumieniowego. Liczba używana w formule to .10, która jest procentem ruchu oczekiwanego w punkcie końcowym przesyłania strumieniowego.

Określanie liczby wymaganych jednostek przesyłania strumieniowego w warstwie Premium

Wymagane jednostki przesyłania strumieniowego w warstwie Premium = średnia przepustowość x liczba osób przeglądających x procent ruchu nieobsługiwalnego przez sieć CDN / 200 Mb/s

Przykład

Niedawno wydano nowy produkt i chcesz przedstawić go swoim ustalonym klientom. Chcesz mieć małe opóźnienie, ponieważ nie chcesz sfrustrować już zajętych odbiorców, więc użyjesz punktów końcowych przesyłania strumieniowego w warstwie Premium i sieci CDN.

Masz około 100 000 klientów, ale prawdopodobnie nie wszyscy będą watch wydarzenie na żywo. Zgadniesz, że w najlepszym przypadku weźmie udział tylko 1% z nich, co przynosi oczekiwanym równoczesnych widzów do 1000.

Liczba równoczesnych użytkowników =1000

Podjęto decyzję, że zamierzasz zakodować strumień na żywo za pomocą usługi Media Services i nie będziesz używać przekazywania. Nie wiesz, jaka będzie średnia przepustowość, ale wiesz, że dostarczysz w 1080p (maksymalna szybkość transmisji bitów 5,5 Mb/s), więc średnia przepustowość szacuje się na 3,5 Mb/s dla obliczeń.

Średnia przepustowość =3,5

Ponieważ odbiorcy są rozproszeni na całym świecie, oczekujesz, że sieć CDN będzie obsługiwać większość (90%) ruchu na żywo. W związku z tym punkty końcowe przesyłania strumieniowego w warstwie Premium będą obsługiwać tylko 10% ruchu.

Procent obsługiwany przez punkt końcowy przesyłania strumieniowego =10% = 0,1

Korzystając z podanej powyżej formuły:

Łączna liczba potrzebnych ruchu wychodzącego = średnia przepustowość x liczba równoczesnych osób przeglądających x procent obsługiwanych przez punkt końcowy przesyłania strumieniowego.

łączny ruch wychodzący wymagany = 3,5 x 1000 x 0,1

łączny ruch wychodzący wymagany = 350 Mb/s

Podzielenie całkowitego ruchu wychodzącego do 200 r. oznacza, że potrzebujesz 1,75 jednostek przesyłania strumieniowego w warstwie Premium.

Wymagane = jednostki przesyłania strumieniowego w warstwie Premiumłączny ruch wychodzący wymagany/200Mpbs

Wymagane jednostki przesyłania strumieniowego w warstwie Premium = 1,75

Zaokrąglimy tę liczbę do 2, dając nam 2 potrzebne jednostki.

Szacowanie potrzeb przy użyciu portalu

Azure Portal może pomóc uprościć obliczenia. Na stronie przesyłania strumieniowego możesz użyć kalkulatora podanego, aby zobaczyć szacowany zasięg odbiorców po zmianie średniej przepustowości, współczynnik trafień sieci CDN i liczbę jednostek przesyłania strumieniowego.

  1. Na stronie konta usługi Media Services wybierz pozycję Punkty końcowe steaming z menu.

  2. Dodaj nowy punkt końcowy przesyłania strumieniowego, wybierając pozycję Dodaj punkt końcowy przesyłania strumieniowego.

  3. Nadaj punktowi końcowemu przesyłania strumieniowego nazwę.

  4. Wybierz pozycję Punkt końcowy przesyłania strumieniowego w warstwie Premium dla typu punktu końcowego przesyłania strumieniowego.

  5. Ponieważ w tym momencie otrzymujesz oszacowanie, nie uruchamiaj punktu końcowego przesyłania strumieniowego po utworzeniu. Wybierz pozycję Nie.

  6. Wybierz pozycję Standardowa Verizon lub Premium Verizon dla warstwy cenowej usługi CDN. Nazwa profilu zmieni się odpowiednio. Pozostaw nazwę tak, jak to jest w tym ćwiczeniu.

  7. W profilu usługi CDN wybierz pozycję Utwórz nowy.

  8. Wybierz przycisk Utwórz. Po wdrożeniu punktu końcowego zostanie wyświetlony ekran punktów końcowych przesyłania strumieniowego.

  9. Wybierz właśnie utworzony punkt końcowy przesyłania strumieniowego. Zostanie wyświetlony ekran punktu końcowego przesyłania strumieniowego z oszacowaniem zasięgu odbiorców.

  10. Domyślne ustawienie punktu końcowego przesyłania strumieniowego z 1 jednostką przesyłania strumieniowego pokazuje, że szacuje się, że przesyłanie strumieniowe do 571 równoczesnych osób przeglądających przy 3,5 Mb/s przy użyciu 90% sieci CDN i 10% punktu końcowego przesyłania strumieniowego.

  11. Zmień wartość procentową źródła ruchu wychodzącego z 90% z pamięci podręcznej CDN na 0%. Kalkulator szacuje, że będzie można przesyłać strumieniowo do 57 równoczesnych osób przeglądających przy 3,5 Mb/s przy 200 Mb/s bez sieci CDN.

  12. Teraz zmień źródło ruchu wychodzącego z powrotem na 90%.

  13. Następnie zmień jednostki przesyłania strumieniowego na 2. Kalkulator szacuje, że będzie można przesyłać strumieniowo do 1143 równoczesnych osób przeglądających przy 3,5 Mb/s z 4000 Mb/s przy użyciu sieci CDN obsługującej 90% ruchu.

  14. Wybierz pozycję Zapisz.

  15. Możesz uruchomić punkt końcowy przesyłania strumieniowego i spróbować wysłać do niego ruch. Metryki w dolnej części ekranu będą śledzić rzeczywisty ruch.

Chronometraż

Możesz chcieć aprowizować jednostki przesyłania strumieniowego 1 godzinę przed oczekiwanym użyciem szczytu, aby zapewnić gotowość jednostek przesyłania strumieniowego.

Uzyskiwanie pomocy i obsługi technicznej

Możesz skontaktować się z usługą Media Services z pytaniami lub postępować zgodnie z naszymi aktualizacjami przy użyciu jednej z następujących metod: