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.
Nuta
Przed kontynuowaniem czytania tego artykułu przeczytaj artykuł HLS o małym opóźnieniu (LL-HLS), aby zrozumieć małe opóźnienia z kodowaniem wydarzeń 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 kilka, które należy wziąć pod uwagę:
Opóźnienia po stronie kodera współtworzenia. Gdy klienci używają oprogramowania do kodowania, takiego jak OBS Studio, Wirecast lub inni, do wysyłania strumienia na żywo RTMP do usługi Media Services. Ustawienia tego oprogramowania mają wpływ na kompleksowe opóźnienie transmisji strumieniowej na żywo.
Opóźnienia w potoku transmisji strumieniowej na żywo w usłudze Azure Media Services
Wydajność usługi CDN
Buforowanie algorytmów odtwarzacza wideo i warunków sieciowych po stronie klienta
Czas aprowizacji
Koder współtworzenia
Masz kontrolę nad ustawieniami 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:
Wybierz region fizyczny najbliższy koderowi kontu usługi Media Services. Zapewni to doskonałe połączenie sieciowe z kontem usługi Media Services.
Użyj spójnego rozmiaru fragmentu. Zalecamy rozmiar GOP 2 sekundy. Wartość domyślna w niektórych koderach, takich jak OBS, wynosi 8 sekund. Upewnij się, że to ustawienie zostanie zmienione.
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.
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żesz zobaczyć ustawienie wstępne "zero latency".
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ń 720p kodowania na żywo, wyślij strumień, który jest już na 720p.
Zachowaj szybkość klatek na 30fps lub niższą, chyba że używasz wydarzeń na żywo z przekazywaniem. Chociaż obsługujemy 60 klatek na sekundę 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ą Ci zmniejszyć opóźnienie w naszym potoku:
Użyj opcji strumienia o małych opóźnieniach dla wydarzeń na żywo. W przypadku opcji kodowania standardowego (do 720p) i kodowania Premium (do 1080p), 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łych opóźnieniach.
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 sieć 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)
Jeśli musisz wybrać dane wyjściowe TS, użyj współczynnika pakowania HLS wynoszący 1. Dzięki temu możemy spakować tylko jeden fragment do jednego segmentu HLS. Nie uzyskasz pełnych korzyści z LL-HLS w rodzimych odtwarzaczach firmy Apple.
Optymalizacje odtwarzacza
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 buforowanie decyzji wpływa na opóźnienie obserwowane przez widza. Słabe 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 w odtwarzaniu. Te, przed i podczas sesji odtwarzania, dodają do kompleksowego opóźnienia.
Gdy jest używana usługa Azure Media Player, Heurystyka o małych opóźnieniach profilu optymalizuje zawodnika tak, aby miał najmniejsze możliwe opóźnienia po stronie gracza. 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 sieci CDN
Punkty końcowe przesyłania strumieniowego to serwery pochodzenia, które dostarczają zawartość strumieniową na żywo i VOD bezpośrednio do sieci CDN lub bezpośrednio do klienta. Najlepszym rozwiązaniem jest użycie usługi Content Delivery Network (CDN) z osłoną źródła w celu zapewnienia wydajnego dostarczania ruchu dla zawartości multimedialnej.
Zalecamy korzystanie z usługi Azure CDN, która jest dostarczana przez Firmę Verizon (Standardowa lub Premium). Zoptymalizowaliśmy środowisko integracji, aby klient mógł skonfigurować tę sieć CDN za pomocą pojedynczego wyboru w witrynie 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 działania są podejmowane w sieci CDN w celu ochrony źródła przed nadmiernym ruchem.
Możesz również zwiększyć wydajność, konfigurując reguły dla profilu usługi CDN. Zobacz Jak włączyć optymalizacje usługi CDN.
Skalowanie punktu końcowego przesyłania strumieniowego
Nuta
Standardowy punkt końcowy/źródła przesyłania strumieniowego to udostępniony zasób, który umożliwia klientom z niskim natężeniem ruchu przesyłanie strumieniowe zawartości przy niższych kosztach. Nie 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żywać sieci CDN.
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 wymaganych 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:
Określ łączny wymagany ruch wychodzący.
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 ruchu wychodzącego = średnia przepustowość x liczba równoczesnych 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 masz dostęp do wielu szybkości bitów, jaka jest średnia dla wszystkich zaplanowanych szybkości bitów? Można to oszacować przy użyciu jednej z następujących metod:
W przypadku wydarzenia na żywo, które zawiera 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 najwyższą szybkość transmisji bitów wynosi 5,5 Mb/s dla 1080p zakodowanych wydarzeń na żywo, 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, a nie kodowania:
- Sprawdź drabinę szybkości transmisji bitów kodowania używaną przez koder lokalny.
Liczba współbieżnych osób przeglądających. Ilu równoczesnych widzów oczekuje się? Może to być trudne do oszacowania, ale najlepiej zrobić na podstawie danych klientów. Czy przesyłasz strumieniowo 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 NIE obsługiwanego 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, czyli procent oczekiwanego ruchu w punkcie końcowym przesyłania strumieniowego.
Określanie liczby potrzebnych jednostek przesyłania strumieniowego w warstwie Premium
wymagane jednostki przesyłania strumieniowego 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. Potrzebujesz małych opóźnień, 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ą oglądać wydarzenie na żywo. Domyślasz się, że w najlepszym przypadku tylko 1% z nich weźmie udział, co przynosi oczekiwanym równoczesnych widzów do 1000.
liczba współbieżnych użytkowników =1000
Zdecydowano, że zamierzasz zakodować strumień na żywo przy użyciu usługi Media Services i nie będziesz używać przekazywania. Nie wiesz, jaka będzie średnia przepustowość, ale wiesz, że dostarczysz w 1080p (najwyższej szybkości transmisji bitów 5,5 Mb/s), więc średnia przepustowość szacowana jest 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 powyższej formuły:
łączna liczba potrzebnych ruchu wychodzącego = średnia przepustowość x liczba współbieżnych 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 o 200 pozwala określić, że potrzebujesz 1,75 jednostek przesyłania strumieniowego w warstwie Premium.
jednostki przesyłania strumieniowego w warstwie Premium potrzebne = całkowitego ruchu wychodzącego/200Mpbs
jednostki przesyłania strumieniowego w warstwie Premium potrzebne = 1,75
Zaokrąglimy tę liczbę do 2, dając nam 2 potrzebne jednostki.
Szacowanie potrzeb przy użyciu portalu
Witryna Azure Portal może pomóc uprościć obliczenia. Na stronie przesyłania strumieniowego możesz użyć podanego kalkulatora, aby zobaczyć szacowany zasięg odbiorców w przypadku zmiany średniej przepustowości, współczynnika trafień sieci CDN i liczby jednostek przesyłania strumieniowego.
Na stronie konta usługi Media Services wybierz punkty końcowe Steaming z menu.
Dodaj nowy punkt końcowy przesyłania strumieniowego, wybierając pozycję Dodaj punkt końcowy przesyłania strumieniowego.
Nadaj punktowi końcowemu przesyłania strumieniowego nazwę.
Wybierz punkt końcowy przesyłania strumieniowego Premium dla typu punktu końcowego przesyłania strumieniowego.
Ponieważ w tym momencie otrzymujesz oszacowanie, nie uruchamiaj punktu końcowego przesyłania strumieniowego po utworzeniu. Wybierz pozycję Brak.
Wybierz pozycję Standard Verizon lub Premium Verizon dla warstwy cenowej usługi CDN. Nazwa profilu zmieni się odpowiednio. Pozostaw nazwę tak jak w tym ćwiczeniu.
W przypadku profilu usługi CDN wybierz pozycję Utwórz nowy.
Wybierz pozycję Utwórz. Po wdrożeniu punktu końcowego zostanie wyświetlony ekran punktów końcowych przesyłania strumieniowego.
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.
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.
Zmień wartość procentową źródła ruchu wychodzącego z 90% z pamięci podręcznej CDN na 0%. Kalkulator oszacowa, ż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.
Teraz zmień źródło ruchu wychodzącego z powrotem na 90%.
Następnie zmień jednostek przesyłania strumieniowego na 2. Kalkulator oszacowa, ż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, a sieć CDN obsługuje 90% ruchu.
Wybierz pozycję Zapisz.
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.
Czas
Możesz aprowizować jednostki przesyłania strumieniowego 1 godzinę przed oczekiwanym szczytowym użyciem, aby upewnić się, że jednostki przesyłania strumieniowego są gotowe.
Uzyskiwanie pomocy i obsługi technicznej
Możesz skontaktować się z usługą Media Services z pytaniami lub postępować zgodnie z naszymi aktualizacjami, korzystając z jednej z następujących metod:
- Q & A
-
Stack Overflow. Tagowanie pytań przy użyciu
azure-media-services
. - @MSFTAzureMedia lub użyj @AzureSupport, aby poprosić o pomoc techniczną.
- Otwórz bilet pomocy technicznej za pośrednictwem witryny Azure Portal.