Dynamiczne tworzenie pakietów w usłudze Media Services w wersji 3

Logo usługi Media Services w wersji 3


Ostrzeżenie

Usługa Azure Media Services zostanie wycofana 30 czerwca 2024 r. Aby uzyskać więcej informacji, zobacz Przewodnik po wycofaniu usługi AMS.

Usługa Azure Media Services udostępnia wbudowane funkcje serwera pochodzenia i pakowania w celu dostarczania zawartości w formatach protokołów przesyłania strumieniowego HLS i MPEG DASH. W systemie AMS punkt końcowy przesyłania strumieniowego działa jako serwer "origin" wysyłający sformatowaną zawartość HLS i DASH do odtwarzaczy klienckich obsługujących przesyłanie strumieniowe z adaptacyjną szybkością transmisji bitów przy użyciu tych popularnych formatów. Punkt końcowy przesyłania strumieniowego obsługuje również wiele funkcji, takich jak just-in-time, dynamiczne pakowanie z ochroną zawartości lub bez tej ochrony, aby uzyskać dostęp do wszystkich głównych urządzeń (takich jak urządzenia z systemami iOS i Android).

Większość przeglądarek i urządzeń przenośnych na rynku obsługuje obecnie i rozumie protokoły przesyłania strumieniowego HLS lub DASH. Na przykład system iOS wymaga dostarczenia strumieni w formacie HTTP Live Streaming (HLS) i urządzeniach z systemem Android obsługują HLS, a także MPEG DASH w niektórych modelach (lub za pomocą odtwarzacza poziomu aplikacji Exoplayer dla urządzeń z systemem Android.

W usłudze Media Services punkt końcowy przesyłania strumieniowego (źródło) reprezentuje dynamiczne (just in time) pakowanie i usługę pochodzenia, która może dostarczać zawartość na żywo i na żądanie bezpośrednio do aplikacji odtwarzacza klienta. Używa on jednego z typowych protokołów multimediów przesyłania strumieniowego wymienionych w poniższej sekcji. Dynamiczne pakowanie to funkcja, która jest standardem we wszystkich punktach końcowych przesyłania strumieniowego.

dynamiczne pakowanie

Zalety pakowania just in time są następujące:

  • Wszystkie pliki można przechowywać w standardowym formacie pliku MP4.
  • Nie musisz przechowywać wielu kopii statycznych formatów HLS i DASH w magazynie obiektów blob, co zmniejsza ilość przechowywanej zawartości wideo i obniża koszty magazynowania.
  • Możesz natychmiast skorzystać z nowych aktualizacji protokołu i zmian specyfikacji bez konieczności ponownego spakowania zawartości statycznej w katalogu.
  • Zawartość z szyfrowaniem lub bez szyfrowania i odzyskiwania po awarii można dostarczać przy użyciu tych samych plików MP4 w magazynie.
  • Można dynamicznie filtrować lub zmieniać manifesty za pomocą prostych filtrów na poziomie zasobów lub globalnych, aby usunąć określone ścieżki, rozdzielczości, języki lub zapewnić krótsze klipy wyróżnienia z tych samych plików MP4 bez ponownego kodowania lub ponownego renderowania zawartości.

Aby przygotować pliki źródłowe do dostarczenia

Aby skorzystać z dynamicznego tworzenia pakietów, zakoduj plik mezzanine (źródłowy) do zestawu plików MP4 o pojedynczej lub wielu szybkościach transmisji bitów (ISO Base Media 14496-12). Zakodowane pliki wideo i pliki konfiguracji przesyłania strumieniowego będą znajdować się w zasobie wyjściowym. Z tego zestawu plików można używać dynamicznego tworzenia pakietów do dostarczania wideo za pośrednictwem protokołów multimediów przesyłania strumieniowego.

Zazwyczaj używasz standardowego kodera usługi Azure Media Services do generowania tej zawartości przy użyciu ustawień wstępnych kodowania obsługującego zawartość lub ustawień wstępnych adaptacyjnej szybkości transmisji bitów. Oba generują zestaw plików MP4 gotowych do przesyłania strumieniowego i dynamicznego tworzenia pakietów.

Alternatywnie możesz zakodować przy użyciu usługi zewnętrznej, lokalnej lub na własnych maszynach wirtualnych lub aplikacjach funkcji bezserwerowych. Zawartość zakodowana zewnętrznie można przekazać do zasobu na potrzeby przesyłania strumieniowego, pod warunkiem że spełnia wymagania kodowania dla formatów przesyłania strumieniowego z adaptacyjną szybkością transmisji bitów. Przykładowy projekt przekazywania wstępnie zakodowanego pliku MP4 do przesyłania strumieniowego jest dostępny w przykładach zestawu SDK platformy .NET — zobacz Przesyłanie strumieniowe istniejących plików Mp4.

Dynamiczne pakowanie usługi Azure Media Services obsługuje tylko pliki wideo i audio w formacie kontenera MP4. Pliki audio muszą być zakodowane w kontenerze MP4, a także w przypadku korzystania z alternatywnych koderów, takich jak Dolby.

Udostępnianie filmów wideo do przesyłania strumieniowego

Aby udostępnić filmy wideo w zakodowanym zasobie klientom do odtwarzania, opublikuj zasób przy użyciu lokalizatora przesyłania strumieniowego i skompiluj odpowiednie adresy URL przesyłania strumieniowego HLS i DASH. Zmieniając protokół używany w zapytaniu formatu adresu URL, usługa dostarczy odpowiedni manifest przesyłania strumieniowego (HLS, MPEG DASH).

W związku z tym wystarczy przechowywać i płacić za pliki w jednym formacie magazynu (MP4), a usługa Media Services wygeneruje i będzie obsługiwać odpowiednie manifesty HLS lub DASH na podstawie żądań od klientów.

Jeśli planujesz chronić zawartość przy użyciu szyfrowania dynamicznego usługi Media Services, zobacz Przesyłanie strumieniowe protokołów i typów szyfrowania.

Dostarczanie usługi HLS

Dynamiczne pakowanie HLS

Klient przesyłania strumieniowego może określić następujące formaty HLS. Zalecamy używanie formatu CMAF w celu zapewnienia zgodności z najnowszymi odtwarzaczami i urządzeniami z systemem iOS. W przypadku starszych urządzeń dostępne są również formaty v4 i v3, po prostu zmieniając ciąg zapytania w formacie.

Protokół Ciąg formatu Przykład
HLS CMAF format=m3u8-cmaf https://amsv3account-usw22.streaming.media.azure.net/21b17732-0112-4d76-b526-763dcd843449/ignite.ism/manifest(format=m3u8-cmaf)
HLS V4 format=m3u8-aapl https://amsv3account-usw22.streaming.media.azure.net/21b17732-0112-4d76-b526-763dcd843449/ignite.ism/manifest(format=m3u8-aapl)
HLS V3 format=m3u8-aapl-v3 https://amsv3account-usw22.streaming.media.azure.net/21b17732-0112-4d76-b526-763dcd843449/ignite.ism/manifest(format=m3u8-aapl-v3)

Uwaga

Poprzednie wytyczne firmy Apple zaleciły, aby rezerwa sieci o niskiej przepustowości zapewniała strumień tylko audio. Obecnie koder usługi Media Services automatycznie generuje ścieżkę tylko do dźwięku. Wytyczne firmy Apple stanowią teraz, że utwór tylko do audio nie powinien być uwzględniony, zwłaszcza w przypadku dystrybucji Apple TV. Aby uniemożliwić odtwarzaczowi domyślne używanie ścieżki tylko do dźwięku, zalecamy użycie tagu "audio-only=false" w adresie URL, który usuwa odwzorowanie tylko audio w systemie HLS lub po prostu używamy HLS-V3. Na przykład http://host/locator/asset.ism/manifest(format=m3u8-aapl,audio-only=false).

Współczynnik pakowania HLS dla VOD

Aby kontrolować współczynnik pakowania zawartości VOD dla starszych formatów HLS, można ustawić tag metadanych fragmentówPerHLSSegment w pliku .ism, aby kontrolować domyślny współczynnik pakowania 3:1 dla segmentów TS dostarczonych ze starszych manifestów formatu v3 i v4 HLS. Ta zmiana ustawienia wymaga bezpośredniego zmodyfikowania pliku ism w magazynie w celu dostosowania współczynnika pakowania.

Przykładowy manifest serwera ism z fragmentamiPerHLSSegment ustawiony na 1.

   <?xml version="1.0" encoding="utf-8" standalone="yes"?>
   <smil xmlns="http://www.w3.org/2001/SMIL20/Language">
      <head>
         <meta name="formats" content="mp4" />
         <meta name="fragmentsPerHLSSegment" content="1"/>
      </head>
      <body>
         <switch>
         ...
         </switch>
      </body>
   </smil>

Dostarczanie KRESKI

Dynamiczne pakowanie DASH

Klient przesyłania strumieniowego może określić następujące formaty MPEG-DASH:

Protokół Ciąg formatu Przykład
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)
MPEG-DASH CSF (starsza wersja) format=mpd-time-csf https://amsv3account-usw22.streaming.media.azure.net/21b17732-0112-4d76-b526-763dcd843449/ignite.ism/manifest(format=mpd-time-csf)

Dostarczanie manifestów smooth streamingu

Dynamiczne pakowanie Smooth Streaming

Klient przesyłania strumieniowego może określić następujące formaty smooth streaming:

Protokół Uwagi/przykłady
Smooth Streaming https://amsv3account-usw22.streaming.media.azure.net/21b17732-0112-4d76-b526-763dcd843449/ignite.ism/manifest
Smooth Streaming 2.0 (starszy manifest) Domyślnie format manifestu Smooth Streaming zawiera tag powtórzeń (r-tag). Jednak niektórzy gracze nie obsługują r-tagelementu . Klienci z tymi graczami mogą używać formatu, który wyłącza tag r::

https://amsv3account-usw22.streaming.media.azure.net/21b17732-0112-4d76-b526-763dcd843449/ignite.ism/manifest(format=fmp4-v20)

Uwaga

Smooth Streaming wymaga obecności zarówno dźwięku, jak i wideo w strumieniu.

Przepływ pracy przesyłania strumieniowego na żądanie

W poniższych krokach przedstawiono typowy przepływ pracy przesyłania strumieniowego usługi Media Services, w którym jest używane dynamiczne pakowanie wraz z koderem standardowym w usłudze Azure Media Services.

  1. Przekaż plik wejściowy, taki jak MP4, QuickTime/MOV lub inny obsługiwany format pliku. Ten plik jest również nazywany plikiem mezzanine lub źródłowym. Aby uzyskać listę obsługiwanych formatów, zobacz Formaty obsługiwane przez koder standardowy.

  2. Zakoduj plik mezzanine do zestawu adaptacyjnej szybkości transmisji bitów H.264/AAC MP4.

    Jeśli masz już zakodowane pliki i chcesz skopiować i przesłać strumieniowo pliki, użyj: CopyVideo i CopyAudio API. Nowy plik MP4 z manifestem przesyłania strumieniowego (plik ism) zostanie utworzony w wyniku.

    Ponadto można po prostu wygenerować plik ism i ismc na wstępnie zakodowanym pliku, o ile jest on zakodowany przy użyciu odpowiednich ustawień przesyłania strumieniowego z adaptacyjną szybkością transmisji bitów (zazwyczaj jest to 2-sekundowy kod GOPs, odległości klatek kluczowych 2s min i maksimum oraz kodowanie trybu stałej szybkości transmisji bitów (CBR).

    Aby uzyskać szczegółowe informacje na temat generowania pliku MPM (manifestu serwera) i .ismc (manifestów klienta) na potrzeby przesyłania strumieniowego z istniejącego, wstępnie zakodowanego pliku MP4, zobacz strumień istniejący .

  3. Opublikuj zasób wyjściowy zawierający zestaw MP4 o adaptacyjnej szybkości transmisji bitów. Publikowanie jest tworzone przez utworzenie lokalizatora przesyłania strumieniowego.

  4. Twórz adresy URL przeznaczone dla różnych formatów (HLS, MPEG-DASH i Smooth Streaming). Punkt końcowy przesyłania strumieniowego zajmie się obsługą poprawnego manifestu i żądań dla wszystkich tych różnych formatów.

Ścieżka pobierania znajduje się na powyższej ilustracji, aby pokazać, że można pobrać plik MP4 bezpośrednio za pośrednictwem punktu końcowego przesyłania strumieniowego (pochodzenia) (określasz zasady przesyłania strumieniowego do pobrania w lokalizatorze przesyłania strumieniowego).
Dynamiczny program packager nie zmienia pliku. Opcjonalnie możesz użyć interfejsów API usługi Azure Blob Storage, aby uzyskać dostęp do pliku MP4 bezpośrednio do pobierania progresywnego, jeśli chcesz pominąć funkcje punktu końcowego przesyłania strumieniowego (źródła).

Kodowanie do adaptacyjnej szybkości transmisji bitów MP4

W poniższych artykułach pokazano przykłady kodowania wideo za pomocą usługi Media Services:

Zapoznaj się z listą obsługiwanych formatów wejściowych i koderów koderów standardowych.

Przepływ pracy transmisji strumieniowej na żywo

Wydarzenie na żywo można ustawić na przekazywanie (lokalny koder na żywo wysyła strumień o wielu szybkościach transmisji bitów) lub kodowanie na żywo (lokalny koder na żywo wysyła strumień o pojedynczej szybkości transmisji bitów).

Oto typowy przepływ pracy transmisji strumieniowej na żywo z dynamicznym tworzeniem pakietów:

  1. Utwórz wydarzenie na żywo.
  2. Pobierz adres URL pozyskiwania i skonfiguruj koder lokalny, aby używał adresu URL do wysyłania kanału informacyjnego współtworzenia.
  3. Pobierz adres URL podglądu i użyj go, aby sprawdzić, czy dane wejściowe z kodera są odbierane.
  4. Utwórz nowy zasób.
  5. Utwórz dane wyjściowe na żywo i użyj utworzonej nazwy zasobu.
    Dane wyjściowe na żywo archiwizowają strumień do elementu zawartości.
  6. Utwórz lokalizator przesyłania strumieniowego z wbudowanymi typami zasad przesyłania strumieniowego.
    Jeśli zamierzasz zaszyfrować zawartość, zapoznaj się z omówieniem ochrony zawartości.
  7. Wyświetl listę ścieżek lokalizatora przesyłania strumieniowego, aby uzyskać adresy URL do użycia.
  8. Pobierz nazwę hosta dla punktu końcowego przesyłania strumieniowego, z którego chcesz przesyłać strumieniowo.
  9. Twórz adresy URL przeznaczone dla różnych formatów (HLS, MPEG-DASH i Smooth Streaming). Punkt końcowy przesyłania strumieniowego obsługuje prawidłowy manifest i żądania dla różnych formatów.

Aby uzyskać informacje o transmisji strumieniowej na żywo w usłudze Media Services w wersji 3, zobacz Omówienie transmisji strumieniowej na żywo.

Koderowanie wideo obsługiwane przez funkcję dynamicznego tworzenia pakietów

Dynamiczne tworzenie pakietów obsługuje pliki wideo, które znajdują się w formacie pliku kontenera MP4 i zawierają wideo zakodowane przy użyciu formatu H.264 (MPEG-4 AVC lub AVC1) lub H.265 (HEVC, hev1 lub hvc1).

Uwaga

Rozdzielczości do 4K i klatek 60 ramek na sekundę zostały przetestowane przy użyciu dynamicznego tworzenia pakietów.

Koderów audio obsługiwanych przez dynamiczne tworzenie pakietów

Dynamiczne tworzenie pakietów obsługuje również pliki audio przechowywane w formacie kontenera plików MP4 zawierającym zakodowany strumień audio w jednym z następujących koderów kodujących:

  • AAC (AAC-LC, HE-AAC v1 lub HE-AAC v2).

  • Dolby Digital Plus (enhanced AC-3 lub E-AC3). Zakodowany dźwięk musi być przechowywany w formacie kontenera MP4 do pracy z pakietem dynamicznym.

  • Dolby Atmos

    Przesyłanie strumieniowe zawartości Dolby Atmos jest obsługiwane w przypadku standardów, takich jak protokół MPEG-DASH z protokołem Common Streaming Format (CSF) lub Common Media Application Format (CMAF) pofragmentowany mp4, a za pośrednictwem HTTP Live Streaming (HLS) za pomocą narzędzia CMAF.

  • DTS
    Kodetki DTS obsługiwane przez formaty pakietów DASH-CSF, DASH-CMAF, HLS-M2TS i HLS-CMAF:

    • DtS Digital Surround (dtsc)
    • DTS-HD High Resolution i DTS-HD Master Audio (dtsh)
    • DTS Express (dtse)
    • DTS-HD Lossless (bez rdzenia) (dtsl)

Dynamiczne tworzenie pakietów obsługuje wiele ścieżek audio z funkcją DASH lub HLS (w wersji 4 lub nowszej) dla zasobów przesyłania strumieniowego, które mają wiele ścieżek audio z wieloma koderami koderowymi i językami.

W przypadku wszystkich powyższych koderów audio kodowany dźwięk musi być przechowywany w formacie kontenera MP4, aby pracować z pakietem dynamicznym. Usługa nie obsługuje nieprzetworzonych formatów plików strumienia podstawowego w magazynie obiektów blob (na przykład następujące nie będą obsługiwane — .dts, .ac3).

Tylko pliki z .mp4 rozszerzenia mp4a są obsługiwane w przypadku pakowania audio.

Ograniczenia

Ograniczenie systemu iOS dotyczące dźwięku w usłudze AAC 5.1

Urządzenia z systemem iOS firmy Apple nie obsługują kodera-dekodera audio AAC w wersji 5.1. Dźwięk wielokanałowy musi być zakodowany przy użyciu kodeków Dolby Digital lub Dolby Digital Plus.

Aby uzyskać szczegółowe informacje, zobacz Specyfikacja tworzenia w usłudze HLS dla urządzeń firmy Apple.

Uwaga

Usługa Media Services nie obsługuje kodowania plików Dolby Digital, Dolby Digital Plus ani Dolby Digital Plus z wielokanałowymi formatami audio Dolby Atmos.

Dźwięk cyfrowy dolby

Dynamiczne tworzenie pakietów usługi Media Services nie obsługuje obecnie plików zawierających dźwięk Dolby Digital (AC3) (ponieważ jest to uznawane za starszy koder-dekoder firmy Dolby).

Manifesty

W dynamicznym pakowaniu usługi Media Services manifesty klienta przesyłania strumieniowego dla HLS, MPEG-DASH i Smooth Streaming są generowane dynamicznie na podstawie zapytania formatu w adresie URL.

Plik manifestu zawiera metadane przesyłania strumieniowego, takie jak typ śledzenia (audio, wideo lub tekst), nazwa śledzenia, czas rozpoczęcia i zakończenia, szybkość transmisji bitów (cechy), języki śledzenia, okno prezentacji (okno przewijania o stałym czasie trwania) i koder-dekoder wideo (FourCC). Instruuje również odtwarzaczowi, aby pobrał następny fragment, podając informacje o kolejnych fragmentach wideo, które są dostępne i ich lokalizacji. Fragmenty (lub segmenty) to rzeczywiste "fragmenty" zawartości wideo.

Przykłady

HLS

Oto przykład pliku manifestu HLS, nazywanego również HLS główną listą odtwarzania:

#EXTM3U
#EXT-X-VERSION:4
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio",NAME="aac_eng_2_128041_2_1",LANGUAGE="eng",DEFAULT=YES,AUTOSELECT=YES,URI="QualityLevels(128041)/Manifest(aac_eng_2_128041_2_1,format=m3u8-aapl)"
#EXT-X-STREAM-INF:BANDWIDTH=536608,RESOLUTION=320x180,CODECS="avc1.64000d,mp4a.40.2",AUDIO="audio"
QualityLevels(381048)/Manifest(video,format=m3u8-aapl)
#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=536608,RESOLUTION=320x180,CODECS="avc1.64000d",URI="QualityLevels(381048)/Manifest(video,format=m3u8-aapl,type=keyframes)"
#EXT-X-STREAM-INF:BANDWIDTH=884544,RESOLUTION=480x270,CODECS="avc1.640015,mp4a.40.2",AUDIO="audio"
QualityLevels(721495)/Manifest(video,format=m3u8-aapl)
#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=884544,RESOLUTION=480x270,CODECS="avc1.640015",URI="QualityLevels(721495)/Manifest(video,format=m3u8-aapl,type=keyframes)"
#EXT-X-STREAM-INF:BANDWIDTH=1327398,RESOLUTION=640x360,CODECS="avc1.64001e,mp4a.40.2",AUDIO="audio"
QualityLevels(1154816)/Manifest(video,format=m3u8-aapl)
#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=1327398,RESOLUTION=640x360,CODECS="avc1.64001e",URI="QualityLevels(1154816)/Manifest(video,format=m3u8-aapl,type=keyframes)"
#EXT-X-STREAM-INF:BANDWIDTH=2413312,RESOLUTION=960x540,CODECS="avc1.64001f,mp4a.40.2",AUDIO="audio"
QualityLevels(2217354)/Manifest(video,format=m3u8-aapl)
#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=2413312,RESOLUTION=960x540,CODECS="avc1.64001f",URI="QualityLevels(2217354)/Manifest(video,format=m3u8-aapl,type=keyframes)"
#EXT-X-STREAM-INF:BANDWIDTH=3805760,RESOLUTION=1280x720,CODECS="avc1.640020,mp4a.40.2",AUDIO="audio"
QualityLevels(3579827)/Manifest(video,format=m3u8-aapl)
#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=3805760,RESOLUTION=1280x720,CODECS="avc1.640020",URI="QualityLevels(3579827)/Manifest(video,format=m3u8-aapl,type=keyframes)"
#EXT-X-STREAM-INF:BANDWIDTH=139017,CODECS="mp4a.40.2",AUDIO="audio"
QualityLevels(128041)/Manifest(aac_eng_2_128041_2_1,format=m3u8-aapl)

MPEG-DASH

Oto przykład pliku manifestu MPEG-DASH, nazywanego również opisem prezentacji multimediów MPEG-DASH (MPD):

<?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" profiles="urn:mpeg:dash:profile:isoff-live:2011" type="static" mediaPresentationDuration="PT1M10.315S" minBufferTime="PT7S">
   <Period>
      <AdaptationSet id="1" group="5" profiles="ccff" bitstreamSwitching="false" segmentAlignment="true" contentType="audio" mimeType="audio/mp4" codecs="mp4a.40.2" lang="en">
         <SegmentTemplate timescale="10000000" media="QualityLevels($Bandwidth$)/Fragments(aac_eng_2_128041_2_1=$Time$,format=mpd-time-csf)" initialization="QualityLevels($Bandwidth$)/Fragments(aac_eng_2_128041_2_1=i,format=mpd-time-csf)">
            <SegmentTimeline>
               <S d="60160000" r="10" />
               <S d="41386666" />
            </SegmentTimeline>
         </SegmentTemplate>
         <Representation id="5_A_aac_eng_2_128041_2_1_1" bandwidth="128041" audioSamplingRate="48000" />
      </AdaptationSet>
      <AdaptationSet id="2" group="1" profiles="ccff" bitstreamSwitching="false" segmentAlignment="true" contentType="video" mimeType="video/mp4" codecs="avc1.640020" maxWidth="1280" maxHeight="720" startWithSAP="1">
         <SegmentTemplate timescale="10000000" media="QualityLevels($Bandwidth$)/Fragments(video=$Time$,format=mpd-time-csf)" initialization="QualityLevels($Bandwidth$)/Fragments(video=i,format=mpd-time-csf)">
            <SegmentTimeline>
               <S d="60060000" r="10" />
               <S d="42375666" />
            </SegmentTimeline>
         </SegmentTemplate>
         <Representation id="1_V_video_1" bandwidth="3579827" width="1280" height="720" />
         <Representation id="1_V_video_2" bandwidth="2217354" codecs="avc1.64001F" width="960" height="540" />
         <Representation id="1_V_video_3" bandwidth="1154816" codecs="avc1.64001E" width="640" height="360" />
         <Representation id="1_V_video_4" bandwidth="721495" codecs="avc1.640015" width="480" height="270" />
         <Representation id="1_V_video_5" bandwidth="381048" codecs="avc1.64000D" width="320" height="180" />
      </AdaptationSet>
   </Period>
</MPD>

Smooth Streaming

Oto przykład pliku manifestu smooth streaming:

<?xml version="1.0" encoding="UTF-8"?>
<SmoothStreamingMedia MajorVersion="2" MinorVersion="2" Duration="703146666" TimeScale="10000000">
   <StreamIndex Chunks="12" Type="audio" Url="QualityLevels({bitrate})/Fragments(aac_eng_2_128041_2_1={start time})" QualityLevels="1" Language="eng" Name="aac_eng_2_128041_2_1">
      <QualityLevel AudioTag="255" Index="0" BitsPerSample="16" Bitrate="128041" FourCC="AACL" CodecPrivateData="1190" Channels="2" PacketSize="4" SamplingRate="48000" />
      <c t="0" d="60160000" r="11" />
      <c d="41386666" />
   </StreamIndex>
   <StreamIndex Chunks="12" Type="video" Url="QualityLevels({bitrate})/Fragments(video={start time})" QualityLevels="5">
      <QualityLevel Index="0" Bitrate="3579827" FourCC="H264" MaxWidth="1280" MaxHeight="720" CodecPrivateData="0000000167640020ACD9405005BB011000003E90000EA600F18319600000000168EBECB22C" />
      <QualityLevel Index="1" Bitrate="2217354" FourCC="H264" MaxWidth="960" MaxHeight="540" CodecPrivateData="000000016764001FACD940F0117EF01100000303E90000EA600F1831960000000168EBECB22C" />
      <QualityLevel Index="2" Bitrate="1154816" FourCC="H264" MaxWidth="640" MaxHeight="360" CodecPrivateData="000000016764001EACD940A02FF9701100000303E90000EA600F162D960000000168EBECB22C" />
      <QualityLevel Index="3" Bitrate="721495" FourCC="H264" MaxWidth="480" MaxHeight="270" CodecPrivateData="0000000167640015ACD941E08FEB011000003E90000EA600F162D9600000000168EBECB22C" />
      <QualityLevel Index="4" Bitrate="381048" FourCC="H264" MaxWidth="320" MaxHeight="180" CodecPrivateData="000000016764000DACD941419F9F011000003E90000EA600F14299600000000168EBECB22C" />
      <c t="0" d="60060000" r="11" />
      <c d="42375666" />
   </StreamIndex>
</SmoothStreamingMedia>

Nazewnictwo ścieżek w manifeście

Jeśli nazwa ścieżki audio jest określona w pliku ism, usługa Media Services dodaje Label element w obiekcie AdaptationSet w celu określenia informacji tekstowych dla określonej ścieżki audio. Przykład wyjściowego manifestu DASH:

<AdaptationSet codecs="mp4a.40.2" contentType="audio" lang="en" mimeType="audio/mp4" subsegmentAlignment="true" subsegmentStartsWithSAP="1">
  <Label>audio_track_name</Label>
  <Role schemeIdUri="urn:mpeg:dash:role:2011" value="main"/>
  <Representation audioSamplingRate="48000" bandwidth="131152" id="German_Forest_Short_Poem_english-en-68s-2-lc-128000bps_seg">
    <BaseURL>German_Forest_Short_Poem_english-en-68s-2-lc-128000bps_seg.mp4</BaseURL>
  </Representation>
</AdaptationSet>

Odtwarzacz może używać Label elementu do wyświetlania w interfejsie użytkownika.

Sygnalizowanie ścieżek opisu audio

Możesz dodać ścieżkę narracji do wideo, aby ułatwić klientom niedowidzącym śledzenie nagrywania wideo, słuchając narracji. Musisz dodać adnotację do ścieżki audio jako opis dźwięku w manifeście. W tym celu dodaj parametry "accessibility" i "role" do pliku .ism. Twoim zadaniem jest poprawne ustawienie tych parametrów w celu zasygnalizowania ścieżki audio jako opisu audio. Na przykład dodaj <param name="accessibility" value="description" /> element i <param name="role" value="alternate" do pliku ism dla określonej ścieżki audio.s

Manifest smooth streaming

Jeśli odtwarzasz strumień Smooth Streaming, manifest będzie przewozić wartości i AccessibilityRole atrybuty dla tej ścieżki dźwiękowej. Na przykład Role="alternate" Accessibility="description" zostanie dodany w elemecie StreamIndex , aby wskazać, że jest to opis dźwięku.

Manifest DASH

W przypadku manifestu DASH następujące dwa elementy zostaną dodane, aby zasygnalizować opis dźwięku:

<Accessibility schemeIdUri="urn:mpeg:dash:role:2011" value="description"/>
<Role schemeIdUri="urn:mpeg:dash:role:2011" value="alternate"/>

Lista odtwarzania HLS

W przypadku systemu HLS w wersji 7 lub nowszej (format=m3u8-cmaf)jego lista odtwarzania będzie nosić AUTOSELECT=YES,CHARACTERISTICS="public.accessibility.describes-video" sygnał, gdy ścieżka opisu dźwięku jest sygnalizowana.

Filtrowanie manifestu dynamicznego

Aby kontrolować liczbę ścieżek, formatów, szybkości bitów i okien czasu prezentacji wysyłanych do odtwarzaczy, można użyć dynamicznego filtrowania za pomocą dynamicznego pakietu usługi Media Services. Aby uzyskać więcej informacji, zobacz Wstępne filtrowanie manifestów za pomocą dynamicznego modułu pakietów.

Szyfrowanie dynamiczne dla funkcji DRM

Za pomocą szyfrowania dynamicznego można dynamicznie szyfrować zawartość na żywo lub na żądanie za pomocą algorytmu AES-128 lub dowolnego z trzech głównych systemów zarządzania prawami cyfrowymi (DRM): Technologia PlayReady firmy Microsoft, Google Widevine i Apple FairPlay. Usługa Media Services udostępnia również usługę dostarczania kluczy AES i licencji DRM autoryzowanym klientom. Aby uzyskać więcej informacji, zobacz szyfrowanie dynamiczne.

Uwaga

Widevine jest usługą dostarczaną przez Google Inc. i podlega warunkom świadczenia usług i zasadom ochrony prywatności Google, Inc.

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: