FMUSER Wirless Transmituj wideo i audio łatwiejsze!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikaans
sq.fmuser.org -> albański
ar.fmuser.org -> arabski
hy.fmuser.org -> Armeński
az.fmuser.org -> Azerbejdżański
eu.fmuser.org -> baskijski
be.fmuser.org -> białoruski
bg.fmuser.org -> bułgarski
ca.fmuser.org -> kataloński
zh-CN.fmuser.org -> chiński (uproszczony)
zh-TW.fmuser.org -> chiński (tradycyjny)
hr.fmuser.org -> chorwacki
cs.fmuser.org -> czeski
da.fmuser.org -> duński
nl.fmuser.org -> holenderski
et.fmuser.org -> estoński
tl.fmuser.org -> filipiński
fi.fmuser.org -> fiński
fr.fmuser.org -> francuski
gl.fmuser.org -> galicyjski
ka.fmuser.org -> gruziński
de.fmuser.org -> niemiecki
el.fmuser.org -> grecki
ht.fmuser.org -> kreolski haitański
iw.fmuser.org -> hebrajski
hi.fmuser.org -> hindi
hu.fmuser.org -> węgierski
is.fmuser.org -> islandzki
id.fmuser.org -> indonezyjski
ga.fmuser.org -> irlandzki
it.fmuser.org -> włoski
ja.fmuser.org -> japoński
ko.fmuser.org -> koreański
lv.fmuser.org -> łotewski
lt.fmuser.org -> litewski
mk.fmuser.org -> macedoński
ms.fmuser.org -> malajski
mt.fmuser.org -> maltański
no.fmuser.org -> norweski
fa.fmuser.org -> perski
pl.fmuser.org -> polski
pt.fmuser.org -> portugalski
ro.fmuser.org -> rumuński
ru.fmuser.org -> rosyjski
sr.fmuser.org -> serbski
sk.fmuser.org -> słowacki
sl.fmuser.org -> słoweński
es.fmuser.org -> hiszpański
sw.fmuser.org -> suahili
sv.fmuser.org -> szwedzki
th.fmuser.org -> Tajski
tr.fmuser.org -> turecki
uk.fmuser.org -> ukraiński
ur.fmuser.org -> Urdu
vi.fmuser.org -> wietnamski
cy.fmuser.org -> walijski
yi.fmuser.org -> jidysz
tło
MP4 to nasz wspólny format wideo i często, gdy odtwarzamy filmy z serwera, jest to bezpośrednio żądane źródło wideo MP4. Ale w rzeczywistości to nie jest dobre. Plik nagłówkowy MP4 [ftyp + moov] jest duży i podczas początkowego odtwarzania należy pobrać cały plik nagłówkowy i przeanalizować go, a następnie pobrać w celu odtworzenia pewną długość odtwarzanego klipu wideo. Ponadto wraz ze wzrostem rozmiaru wideo plik nagłówkowy będzie się powiększał, a początkowy czas odtwarzania będzie dłuższy. W tej sytuacji potrzebna jest metoda, która może przyspieszyć wstępną analizę wideo. HLS to rozwiązanie zaproponowane przez Apple w celu rozwiązania tego problemu.
HLS
HLS to skrót od HTTP Live Streaming. Jest to protokół transmisji sieciowej mediów strumieniowych oparty na protokole HTTP zaproponowany przez firmę Apple. Może obsługiwać jednocześnie na żywo i na żądanie, a także funkcje multi-definition, podwójną ścieżkę audio i wideo, napisy i inne funkcje. Jego zasadą jest podzielenie całego wideo na wiele małych filmów, a pełne odtwarzanie jest tworzone przez łączenie tych segmentów.
HLS jest szeroko stosowany w terminalach mobilnych. Obecni klienci obsługujący protokół HLS obejmują:
iOS 3.0 i nowsze wersje, AVPlayer natywnie obsługuje HLS
Android 3.0 i wyżej
Adobe Flash Player 11.0 i nowsze
Jego ogólna zasada jest taka:
1. Zbierz audio i wideo
2. Zakoduj audio i wideo na serwerze
3. Po zakodowaniu przekaż go do Stream Segmenter w postaci strumienia transportowego MPEG-2
4. Fragmentator tworzy plik indeksu i listę odtwarzania ts, plik indeksu służy do wskazania pozycji audio i wideo, a ts jest prawdziwym klipem multimedialnym
5. Umieść zasoby z poprzedniego kroku na serwerze HTTP
6. Klient żąda pliku indeksu do odtworzenia, a odtwarzaną zawartość można znaleźć w pliku indeksu
M3U8
Kluczowym krokiem do realizacji HLS jest czwarty krok powyżej, a mianowicie organizacja plików indeksowych i list odtwarzania ts. Używany jest format M3U8. M3U8 to wersja M3U w standardzie Unicode, 8 oznacza, że używane jest kodowanie UTF-8, a zarówno M3U, jak i M3U8 to formaty plików dla list multimedialnych.
Opis formatu M3U8
Czasami może być konieczne ręczne zmodyfikowanie zawartości pliku M3U8 do testowania lub w niektórych szczególnych przypadkach, więc musimy mieć pewne zrozumienie jego formatu. Definicja tego formatu jest opisana w dokumencie RFC 8216. Oto kilka uwag:
Pliki M3U8 muszą być zakodowane w UTF-8 i nie mogą używać kolejności bajtów Byte Order Mark (BOM) i nie mogą zawierać znaków sterujących utf-8 (U + 0000 ~ U_001F i U + 007F ~ u + 009F)
Każda linia zawartości pliku M3U8 jest pustą linią, identyfikatorem URI lub ciągiem zaczynającym się od # i nie mogą pojawić się puste znaki.
Wbudowane znaczniki to ciągi zaczynające się od #EXT i uwzględniające wielkość liter.
URI to ścieżka do treści, która może być ścieżką względną lub ścieżką bezwzględną
Główny plik listy M3U8
Główny plik indeksu M3U8 jest zwykle używany do określania wielu źródeł indeksów. Przeanalizujmy najpierw zawartość głównego pliku m3u8 hls_vod_mvp.m3u8, jego nagłówek jest taki
Format nagłówka
#EXTM3U
# EXT-X-WERSJA: 7
# EXT-X-INDEPENDENT-SEGMENTS Skopiuj kod
# EXTM3U wskazuje, że plik jest w formacie M3U, a wszystkie pliki w formacie M3U powinny umieszczać zawartość w pierwszym wierszu.
# EXT-X-VERSIOn wskazuje kompatybilną wersję listy odtwarzania, która jest obecnie 7.
# EXT-X-INDEPENDENT-SEGMENTS Ten znacznik wskazuje, że wszystkie próbki mediów w segmencie mediów mogą być dekodowane niezależnie, bez polegania na innych informacjach o segmencie mediów.
Format napisów
Poniższa treść to kilka napisów, treść napisów nie jest konieczna.
# EXT-X-MEDIA: TYPE = SUBTITLES, GROUP-ID = "subs", NAME = "English", DEFAULT = YES, AUTOSELECT = YES, FORCED = NO, LANGUAGE = "eng", URI = "subtitles / eng / prog_index.m3u8 "
# EXT-X-MEDIA: TYPE = SUBTITLES, GROUP-ID = "subsC", NAME = "English", DEFAULT = YES, AUTOSELECT = YES, FORCED = NO, LANGUAGE = "eng", URI = "subtitles / engc / prog_index.m3u8 "
# EXT-X-MEDIA: TYPE = SUBTITLES, GROUP-ID = "subs", NAME = "Japanese", DEFAULT = YES, AUTOSELECT = YES, FORCED = NO, LANGUAGE = "jpn", URI = "subtitles / jpn / prog_index.m3u8 "
# EXT-X-MEDIA: TYPE = SUBTITLES, GROUP-ID = "subsC", NAME = "Japanese", DEFAULT = YES, AUTOSELECT = YES, FORCED = NO, LANGUAGE = "jpn", URI = "subtitles / jpnc / prog_index.m3u8 "
# EXT-X-MEDIA: TYPE = SUBTITLES, GROUP-ID = "subs", NAME = "Chinese", DEFAULT = YES, AUTOSELECT = YES, FORCED = NO, LANGUAGE = "zho", URI = "subtitles / zho / prog_index.m3u8 "
# EXT-X-MEDIA: TYPE = SUBTITLES, GROUP-ID = "subsC", NAME = "Chinese", DEFAULT = YES, AUTOSELECT = YES, FORCED = NO, LANGUAGE = "zho", URI = "subtitles / zhoc / prog_index.m3u8 "Kopiuj kod
# EXT-X-MEDIA służy do określenia zasobów list multimediów w wielu językach o tej samej treści.
TYP to typ zasobu, a opcjonalna zawartość to: AUDIO, WIDEO, NAPISY, ZAMKNIĘTE-NAPISY.
Powyższa treść ustawia TYPE = SUBTITLES, czyli typ napisów.
GROUP-ID to grupa, do której należy wielojęzyczne tłumaczenie i jest wymaganym parametrem
NAZWA to czytelna informacja opisowa strumienia tłumaczenia, a ta wartość odpowiada displayName elementu AVMediaSelectionOption.
DEFAULT, AUTOSELECT, FORCED to trzy wartości typu BOOL odpowiadające temu, czy strumień tłumaczenia jest wybrany domyślnie, jeśli brakuje niezbędnych informacji. Strumień odtwarzania jest odtwarzany, gdy użytkownik nie wyświetla ustawień. WYMUSZONY jest ważny tylko dla typu napisów i służy do zaznaczania bieżącego automatycznego wyboru strumienia tłumaczenia. .
JĘZYK służy do określenia typu języka, który jest ustawiany zgodnie z [kodem języka ISO 639] (https://www.w3.org/WAI/ER/WD-AERT/iso639.htm „Kod języka ISO 639”). Gdy domyślny odtwarzacz systemowy wybiera napisy, nazwa wyświetlanej listy napisów jest ustawiana zgodnie z tą wartością.
Identyfikator URI to informacja o lokalizacji zasobu, gdzie odpowiada plikowi M3U8 z napisami. subtitles / eng / prog_index.m3u8 to ścieżka względna,
Dzięki powyższym informacjom możemy przeanalizować znaczenie powyższych treści jako: Bieżące wideo obsługuje trzy napisy: angielskie, japońskie i chińskie. Ale każdy język ma dwa komunikaty EXT-X-MEDIA. Różnica między nimi polega na grupowaniu, jeden jest zgrupowany w podrzędnych, a drugi jest zgrupowany w podrzędnych. Dlaczego są dwie grupy? Porozmawiam o tym później.
Format wideo
Spójrz ponownie w dół, aby znaleźć indeks zawartości wideo:
#EXT-X-STREAM-INF:BANDWIDTH=827299,AVERAGE-BANDWIDTH=747464,CODECS="avc1.64001f,mp4a.40.2",RESOLUTION=640x360,FRAME-RATE=29.970,AUDIO="program_audio",SUBTITLES=" subs"
0640 / 0640.m3u8
#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=360849,AVERAGE-BANDWIDTH=320932,CODECS="avc1.64001f",RESOLUTION=640x360,URI="0640/0640_I-Frame.m3u8"Copy code
EXT-X-STREAM-INF: Ten atrybut określa źródło zapasowe, to znaczy ścieżkę odtwarzania wideo i niektóre informacje wideo. Poniżej przedstawiono konfigurację odpowiednich treści: BANDWIDTH to szczytowa przepływność, 827299 to 827299bit / s, czyli najwyższy czas szczytu. Zużywa 101 KB ruchu na sekundę.
AVERAGE-BANDWIDTH to średnia przepływność, 747464
CODECS to kodowanie informacji, avc1.64001f, mp4a.40.2, avc reprezentuje format kodowania h264, następujące 64001f to parametr kodowania reprezentowany przez szesnastkową, 64, 00, 1f reprezentują odpowiednio trzy różne wartości parametrów. mp4a to format kodowania dźwięku, a poniższe 40.2 przedstawia parametry kodowania dźwięku.
ROZDZIELCZOŚĆ to rozdzielczość wideo. Bieżąca rozdzielczość źródła wideo to 640x360.
FRAME-RATE to maksymalna liczba klatek na sekundę, 29.970 to maksymalna liczba klatek na sekundę bieżącego odtwarzania wynosząca 29.970 klatek na sekundę.
AUDIO to grupa audio, a program_audio to nazwa odpowiedniej grupy audio.
SUBTITLES wskazuje odpowiednią grupę napisów, a subs to nazwa odpowiedniej grupy napisów. Powyższe informacje o napisach mają identyfikator GROUP-ID i odpowiada mu ta wartość.
URI to ścieżka do treści, 0640 / 0640.m3u8 odpowiada ścieżce pliku m3u8 źródła wideo. Można to zobaczyć w informacjach dotyczących przechwytywania pakietów.
Poniżej EXT-X-STREAM-INF znajduje się EXT-XI-FRAME-STREAM-INF, które reprezentuje klatkę I (klatkę kluczową) zasobu multimedialnego zawartego w pliku listy odtwarzania. Ponieważ ramka I jest tylko obrazem, nie zawiera treści audio, a pozostałe parametry są zgodne z formatem treści wideo.
Następnie dostępne są źródła wideo odpowiadające różnym rozdzielczościom, 1920x1080, 1280x720, 960x540, 480x270. Ponieważ HLS automatycznie przełącza rozdzielczość w zależności od sytuacji w sieci, do wyboru jest zazwyczaj przygotowanych wiele rozdzielczości. Zgodnie z analizą przechwyconych danych, pierwszy odtwarzany segment ma rozdzielczość 640, drugi do 8 kolejnych segmentów ma rozdzielczość 480, a następnie jest przełączany na rozdzielczość 640.
format audio
Spojrzenie w dół to indeks odpowiedniego dźwięku
# EXT-X-MEDIA: TYPE = AUDIO, GROUP-ID = "program_audio", LANGUAGE = "pol", NAME = "Alternatywny dźwięk", AUTOSELECT = TAK, DEFAULT = TAK, URI = "audio1 / audio1.m3u8" Kopiuj Kod
# EXT-X-MEDIA pojawiło się powyżej, ale nie wspomniało o liście dla wielu języków.
TYPE = AUDIO, tym razem typem jest audio.
GROUP-ID to identyfikator grupy, odpowiadający zawartości AUDIO w EXT-X-STREAM-INF.
URI = audio1 / audio1.m3u8 odpowiada ścieżce audio.
Alternatywne źródła różnych formatów kodowania
W głównym pliku M3U8 widzimy również źródło wideo o rozdzielczości 640, która nie jest taka sama jak powyższa rozdzielczość 640. Jego treść jest następująca:
#EXT-X-STREAM-INF:BANDWIDTH=1922391,AVERAGE-BANDWIDTH=1276855,VIDEO-RANGE=SDR,CODECS="hvc1.2.4.H150.B0,mp4a.40.2",RESOLUTION=640x360,FRAME-RATE=29.970 ,AUDIO="program_audio_0",SUBTITLES="subsC"
0640c / prog_index.m3u8
#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=1922391,AVERAGE-BANDWIDTH=1276855,CODECS="hvc1.2.4.H150.B0",RESOLUTION=640x360,URI="0640c/iframe_index.m3u8"
# EXT-X-MEDIA: TYPE = AUDIO, GROUP-ID = "program_audio_0", LANGUAGE = "pol", NAME = "Alternatywny dźwięk", AUTOSELECT = TAK, DEFAULT = TAK, URI = "audioc / prog_index.m3u8" Kopiuj Kod
Format kodowania CODECS to hvc1.2.4.H150.B0, mp4a.40.2, format kodowania dźwięku nie uległ zmianie, ale format kodowania wideo uległ zmianie. hvc1 jest jednym z formatów kodowania HEVC (H265). Jest to format kodowania wideo nowej generacji wprowadzony przez firmę Apple. Ze względu na problemy ze zgodnością wielu klientów nie może przeanalizować tego formatu, więc nie jest on zbyt popularny. Pojawiają się źródła wideo w tym formacie. Powinna to być kopia zapasowa. Porównując dwie treści o tej samej rozdzielczości, można stwierdzić, że szybkość transmisji w formacie hvc1 jest wyższa niż w formacie avc1, co pokazuje, że zawartość hvc1 jest większa, a współczynnik kompresji avc1 jest wyższy przy tej samej rozdzielczości.
Odpowiadając źródłu wideo w formacie hvc1, zmieniło się również grupowanie treści napisów i grupowanie treści audio, dlatego powyższe napisy mają dwie kopie tego samego języka i odpowiadają źródłom wideo w formatach avc1 i hvc1.
To jest główna lista M3U8. Dźwięk i obraz tej treści są przetwarzane osobno, ale można je również łączyć.
Plik M3u8 zawierający informacje o multimediach
Jako przykład weźmy plik 0640.m3u8
#EXTM3U
# EXT-X-WERSJA: 4
# EXT-X-TARGETDURATION: 7
# EXT-X-MEDIA-SEQUENCE: 1
# EXT-X-PLAYLIST-TYPE: VOD
#EXTINF: 6.006,
0640_00001.ts
#EXTINF: 6.006,
0640_00002.ts
#EXTINF: 6.006,
0640_00003.ts
....
# EXT-X-ENDLIST Kopiuj kod
# EXTM3U i # EXT-X-VERSION to odpowiednio nagłówek pliku M3U i zgodny numer wersji. Ten format jest wczesną wersją, więc numer wersji jest niższy niż plik główny.
EXT-X-TARGETDURATION reprezentuje maksymalny czas trwania każdego segmentu odtwarzania, 7 oznacza 7 sekund, a segmenty w tym katalogu nie mogą przekraczać 7 sekund.
EXT-X-MEDIA-SEQUENCE reprezentuje numer kolejny pierwszego segmentu listy odtwarzania, a 1 oznacza, że segment odtwarzania zaczyna się od 1.
#EXTINF oznacza czas trwania segmentu, 6.006 oznacza, że bieżący segment to 6.006 s. Informacje o całkowitym czasie trwania wideo uzyskuje się poprzez zgromadzenie tej wartości.
0640_00001.ts jest względną ścieżką klipu. Plik ts reprezentuje fragment wideo lub audio i może mieć format ts, mp4, aac i inne. Ponieważ określono, że ma otwierać się od 1
|
Wpisz e-mail, aby otrzymać niespodziankę
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikaans
sq.fmuser.org -> albański
ar.fmuser.org -> arabski
hy.fmuser.org -> Armeński
az.fmuser.org -> Azerbejdżański
eu.fmuser.org -> baskijski
be.fmuser.org -> białoruski
bg.fmuser.org -> bułgarski
ca.fmuser.org -> kataloński
zh-CN.fmuser.org -> chiński (uproszczony)
zh-TW.fmuser.org -> chiński (tradycyjny)
hr.fmuser.org -> chorwacki
cs.fmuser.org -> czeski
da.fmuser.org -> duński
nl.fmuser.org -> holenderski
et.fmuser.org -> estoński
tl.fmuser.org -> filipiński
fi.fmuser.org -> fiński
fr.fmuser.org -> francuski
gl.fmuser.org -> galicyjski
ka.fmuser.org -> gruziński
de.fmuser.org -> niemiecki
el.fmuser.org -> grecki
ht.fmuser.org -> kreolski haitański
iw.fmuser.org -> hebrajski
hi.fmuser.org -> hindi
hu.fmuser.org -> węgierski
is.fmuser.org -> islandzki
id.fmuser.org -> indonezyjski
ga.fmuser.org -> irlandzki
it.fmuser.org -> włoski
ja.fmuser.org -> japoński
ko.fmuser.org -> koreański
lv.fmuser.org -> łotewski
lt.fmuser.org -> litewski
mk.fmuser.org -> macedoński
ms.fmuser.org -> malajski
mt.fmuser.org -> maltański
no.fmuser.org -> norweski
fa.fmuser.org -> perski
pl.fmuser.org -> polski
pt.fmuser.org -> portugalski
ro.fmuser.org -> rumuński
ru.fmuser.org -> rosyjski
sr.fmuser.org -> serbski
sk.fmuser.org -> słowacki
sl.fmuser.org -> słoweński
es.fmuser.org -> hiszpański
sw.fmuser.org -> suahili
sv.fmuser.org -> szwedzki
th.fmuser.org -> Tajski
tr.fmuser.org -> turecki
uk.fmuser.org -> ukraiński
ur.fmuser.org -> Urdu
vi.fmuser.org -> wietnamski
cy.fmuser.org -> walijski
yi.fmuser.org -> jidysz
FMUSER Wirless Transmituj wideo i audio łatwiejsze!
Kontakt
Adres:
Nr 305 Pokój HuiLan Budynek nr 273 Huanpu Road Guangzhou Chiny 510620
Kategorie
Newsletter