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
HLS i Http Live Streaming to protokoły do przesyłania strumieniowego w czasie rzeczywistym zdefiniowane przez firmę Apple. HLS jest zaimplementowany w oparciu o protokół HTTP. Treść transmisji obejmuje dwie części, jedną jest plik opisu M3U8, a drugą jest plik multimedialny TS.
1. Plik M3U8
Plik multimedialny jest opisany w tekście, który składa się z serii tagów.
#EXTM3U
# EXT-X-TARGETDURATION: 5
#EXTINF: 5,
./0.ts
#EXTINF: 5,
./1.ts
# EXTM3U: Pierwsza linia każdego pliku M3U8 musi być tym znacznikiem.
# EXT-X-TARGETDURATION: Określ maksymalny czas trwania segmentu nośnika (w sekundach). Długość czasu określona w #EXTINF musi być mniejsza lub równa tej maksymalnej wartości. Ta wartość może pojawić się tylko raz.
#EXTINF: opisz długość pojedynczego pliku multimedialnego. Następują pliki multimedialne, takie jak ./0.ts
Może być dystrybuowany przez HTTP na urządzeniach iOS i Mac. Standardem listy odtwarzania jest plik m3u8 rozszerzony o m3u, a plik multimedialny to plik MPEG2-TS lub AAC (tylko dźwięk).
Istnieją dwa scenariusze aplikacji dla plików m3u8:
Strumień adaptacji wielostopniowej,
#EXTM3U
# EXT-X-STREAM-INF: PROGRAM-ID = 1, BANDWIDTH = 1280000
# EXT-X-STREAM-INF: PROGRAM-ID = 1, BANDWIDTH = 2560000
# EXT-X-STREAM-INF: PROGRAM-ID = 1, BANDWIDTH = 7680000
# EXT-X-STREAM-INF: PROGRAM-ID = 1, BANDWIDTH = 65000, CODECS = "mp4a.40.5"
http://example.com/audio-only.m3u8
Pojedynczy strumień adaptacyjny
#EXTM3U
# EXT-X-TARGETDURATION: 5220
#EXTINF: 5220,
http://media.example.com/entire.ts
# EXT-X-ENDLIST
Międzynarodowa Organizacja Normalizacyjna definiuje ten dokument rfc:
http://tools.ietf.org/html/draft-pantos-http-live-streaming-06
Plik m3u8 jest rozszerzeniem pliku m3u. Rozszerzone słowa kluczowe są zdefiniowane w rfc:
pomiędzy nimi:
# EXT-X-TARGETDURATION
Określ maksymalny czas trwania każdego TS.
# EXT-X-MEDIA-SEQUENCE
Określ numer seryjny pierwszego pliku w bieżącym pliku m3u8. Każdy plik ts ma stały i niepowtarzalny numer seryjny w pliku m3u8. Numer seryjny służy do przełączania współczynnika kodowania w celu wyrównania podczas MBR.
# EXT-X-KEY
Zdefiniuj metodę szyfrowania i adres URL pliku klucza, używany do uzyskania 16-bajtowego pliku klucza do zdekodowania pliku ts.
Atrybuty:
SPOSÓB
URL
# EXT-X-PROGRAM-DATE-TIME
Bezwzględny czas pierwszego pliku
# EXT-X-ALLOW-CACHE
Czy zezwolić na pamięć podręczną.
# EXT-X-ENDLIST
Wskazuje koniec pliku m3u8. Na żywo m3u8 nie ma tego tagu.
# EXT-X-STREAM-INF
Atrybuty:
BANDWIDTH określa szybkość transmisji
Unikalny ID PROGRAMU
CODECS określa typ kodowania strumienia
# EXT-X-DISCONTINUITY
Po napotkaniu tagu zmieniły się następujące atrybuty:
format pliku
liczba i rodzaj torów
parametry kodowania
sekwencja kodowania
sekwencja znacznika czasu
# EXT-X-VERSION Ten atrybut może być używany lub nie, możesz go nie mieć
M3U8 jest podzielony na M3U8 najwyższego poziomu i M3U8 drugiego poziomu. Najwyższy poziom M3U8 jest używany głównie do adaptacji wielostopniowej. M3U8 drugiego poziomu to prawdziwy plik plasterka.
Domyślnie klient najpierw wybiera żądanie o najwyższej przepływności. Jeśli stwierdzi, że szybkość transmisji bitów nie może zostać osiągnięta, zażąda strumienia o małej szybkości transmisji
W rzeczywistości używany plik M3U8 najwyższego poziomu jest następujący:
#EXTM3U
# EXT-X-STREAM-INF: PROGRAM-ID = 201273221265, BANDWIDTH = 358400
11.m3u8
# EXT-X-STREAM-INF: PROGRAM-ID = 201273221265, BANDWIDTH = 972800
22.m3u8
Powyższy plik M3U8 najwyższego poziomu definiuje dwa pliki drugiego poziomu, 11.m3u8 i 22.m3u8, a klient wybierze jeden z nich, aby uzyskać jego zawartość.
Zawartość dodatkowego pliku M3U8 jest następująca:
#EXTM3U
# EXT-X-WERSJA: 1
# EXT-X-TARGETDURATION: 10
# EXT-X-MEDIA-SEQUENCE: 0
#EXTINF: 3,
1-4.ts
#EXTINF: 8,
1-6.ts
#EXTINF: 8,
1-8.ts
#EXTINF: 8,
1-10.ts
#EXTINF: 8,
1-12.ts
#EXTINF: 8,
1-14.ts
#EXTINF: 8,
1-16.ts
#EXTINF: 9,
1-18.ts
#EXTINF: 6,
1-20.ts
#EXTINF: 8,
1-22.ts
#EXTINF: 9,
1-24.ts
#EXTINF: 3,
1-26.ts
# EXT-X-ENDLIST
Gdy klient otrzyma powyższy dodatkowy plik M3U8, będzie nadal żądał pliku w środku, a następnie będzie można go odtworzyć.
Powyższe dotyczy sytuacji na żądanie i sytuacji transmisji na żywo, w pliku M3U8 będą atrybuty informujące, że jest na żywo, a klient będzie okresowo żądał nowych plików M3U8.
// Kiedy HLS realizuje transmisję na żądanie i na żywo, różnica w pliku M3U8
1. Opis problemu
Niedawno wykonałem test odtwarzania transkodowanych fragmentów, używając HLS (HTTP Live Streaming) do transmisji na żywo. Każdy czas segmentacji TS wynosi 10 s, a następujące pliki m3u8 na żywo są generowane zgodnie z plikami segmentacji TS
Skopiuj kod
#EXTM3U
# EXT-X-MEDIA-SEQUENCE: 1
# EXT-X-TARGETDURATION: 10
#EXTINF: 10
hls / 1.ts
#EXTINF: 10
hls / 2.ts
#EXTINF: 10
hls / 3.ts
#EXTINF: 10
hls / 4.ts
#EXTINF: 10
hls / 5.ts
#EXTINF: 10
hls / 6.ts
#EXTINF: 10
hls / 7.ts
#EXTINF: 10
hls / 8.ts
#EXTINF: 10
hls / 9.ts
#EXTINF: 10
hls / 10.ts
Skopiuj kod
Zapisz powyższy plik m3u8 jako live.m3u8, umieść go w katalogu dokumentów Apache i odtwórz następujący adres URL za pomocą VLC:
http://localhost/live.m3u8
Test wykazał, że pierwszy plik od początku odtwarzania nie był 1.ts. Po kilku testach stwierdzono, że:
Dopóki lista zawiera więcej niż trzy pliki, ostatnie trzy pliki na liście są zawsze odtwarzane
2. Rozwiązywanie problemów
To bardzo smutne, że po przeszukaniu Internetu nie znalazłem żadnych skutecznych informacji. Kumpel napotkał tę samą sytuację, czy podzielił się swoim doświadczeniem po jej rozwiązaniu?
Po konsultacji z kolegą kolega powiedział, że jest to możliwe, ponieważ lista plików na żywo m3u8 musi być aktualizowana w czasie rzeczywistym. Jeśli robimy test, możemy najpierw dodać # EXT-X-ENDLIST na końcu. Ta metoda została przetestowana. Działa, ale nie jest to już tryb na żywo m3u8
Po ponownym przeszukaniu Internetu potwierdziłem, że w końcu znalazłem aktywny opis m3u8
Lista odtwarzania na żywo (przesuwne okno)
W przypadku sesji na żywo plik indeksu jest aktualizowany poprzez usuwanie identyfikatorów URI multimediów z pliku w miarę tworzenia i udostępniania nowych plików multimedialnych.
Ważne: znacznik EXT-X-ENDLIST nie występuje na liście odtwarzania na żywo, co oznacza, że nowe pliki multimedialne zostaną dodane do pliku indeksu, gdy staną się dostępne.
Zobacz Listing 3, aby zobaczyć przykładową listę odtwarzania na żywo, która pojawiłaby się na początku sesji.
Listing 3 Live Playlist na początku sesji.
Skopiuj kod
#EXTM3U
# EXT-X-TARGETDURATION: 10
# EXT-X-WERSJA: 3
# EXT-X-MEDIA-SEQUENCE: 1
#EXTINF: 10,
fileSequence1.ts
#EXTINF: 10,
fileSequence2.ts
#EXTINF: 10,
fileSequence3.ts
#EXTINF: 10,
fileSequence4.ts
#EXTINF: 10,
fileSequence5.ts
Skopiuj kod
Wartość znacznika EXT-X-MEDIA-SEQUENCE MUSI być zwiększana o 1 dla każdego identyfikatora URI mediów, który jest usuwany z pliku listy odtwarzania. Identyfikator URI multimediów należy usunąć z pliku listy odtwarzania w kolejności, w jakiej pojawiają się na liście odtwarzania. Zaktualizowany plik indeksu przedstawia ruchome okno w ciągłym strumieniu. Ten typ sesji nadaje się do ciągłych transmisji.
Oto ta sama lista odtwarzania po zaktualizowaniu jej o nowe identyfikatory URI multimediów:
Listing 4 Live Playlist po aktualizacji identyfikatorów URI multimediów.
Skopiuj kod
#EXTM3U
# EXT-X-TARGETDURATION: 10
# EXT-X-WERSJA: 3
# EXT-X-MEDIA-SEQUENCE: 2
#EXTINF: 10,
fileSequence2.ts
#EXTINF: 10,
fileSequence3.ts
#EXTINF: 10,
fileSequence4.ts
#EXTINF: 10,
fileSequence5.ts
#EXTINF: 10,
fileSequence6.ts
Skopiuj kod
3.Live zasady aktualizacji m3u8
Lista aktywnych plików m3u8 wymaga ciągłej aktualizacji, zasady aktualizacji:
Usuń najwyższy (uważany za odtworzony) plik z listy odtwarzania plików
Ciągle aktualizuj znacznik EXT-X-MEDIA-SEQUENCE, zwiększaj o 1
4. Eksperymentuj
Napisz mały program do generowania na żywo m3u8 do testów
Stosowanie:
m3u8_gen.exe numer_początkowy lic_count czas trwania nazwa_pliku.m3u8 [prefiks]
Przykład użycia:
m3u8_gen.exe 1 3 10 live.m3u8 hls /
Wygeneruj plik live.m3u8 jako
Skopiuj kod
#EXTM3U
# EXT-X-MEDIA-SEQUENCE: 1
# EXT-X-TARGETDURATION: 10
#EXTINF: 10
hls / 1.ts
#EXTINF: 10
hls / 2.ts
#EXTINF: 10
hls / 3.ts
Skopiuj kod
Napisz skrypt BAT, aby aktualizować plik live.m3u8 co 10 sekund
Skopiuj kod
@ Echo off
f
|
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