FMUSER Bezdrátový přenos videa a zvuku snadnější!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> afrikánština
sq.fmuser.org -> albánština
ar.fmuser.org -> arabština
hy.fmuser.org -> Arménský
az.fmuser.org -> Ázerbájdžánština
eu.fmuser.org -> baskičtina
be.fmuser.org -> běloruský
bg.fmuser.org -> Bulgarian
ca.fmuser.org -> Katalánština
zh-CN.fmuser.org -> čínština (zjednodušená)
zh-TW.fmuser.org -> Čínsky (zjednodušeně)
hr.fmuser.org -> chorvatština
cs.fmuser.org -> čeština
da.fmuser.org -> dánština
nl.fmuser.org -> Dutch
et.fmuser.org -> estonština
tl.fmuser.org -> filipínský
fi.fmuser.org -> finština
fr.fmuser.org -> French
gl.fmuser.org -> galicijština
ka.fmuser.org -> gruzínština
de.fmuser.org -> němčina
el.fmuser.org -> Greek
ht.fmuser.org -> haitská kreolština
iw.fmuser.org -> hebrejština
hi.fmuser.org -> hindština
hu.fmuser.org -> Hungarian
is.fmuser.org -> islandština
id.fmuser.org -> Indonéština
ga.fmuser.org -> Irština
it.fmuser.org -> Italian
ja.fmuser.org -> japonština
ko.fmuser.org -> korejština
lv.fmuser.org -> lotyština
lt.fmuser.org -> Litevština
mk.fmuser.org -> makedonština
ms.fmuser.org -> Malajština
mt.fmuser.org -> maltština
no.fmuser.org -> Norwegian
fa.fmuser.org -> perština
pl.fmuser.org -> polština
pt.fmuser.org -> portugalština
ro.fmuser.org -> Rumunština
ru.fmuser.org -> ruština
sr.fmuser.org -> srbština
sk.fmuser.org -> slovenština
sl.fmuser.org -> Slovinština
es.fmuser.org -> španělština
sw.fmuser.org -> svahilština
sv.fmuser.org -> švédština
th.fmuser.org -> Thai
tr.fmuser.org -> turečtina
uk.fmuser.org -> ukrajinština
ur.fmuser.org -> urdština
vi.fmuser.org -> Vietnamská
cy.fmuser.org -> velština
yi.fmuser.org -> Jidiš
HLS a Http Live Streaming jsou protokoly pro streamování v reálném čase definované společností Apple. HLS je implementován na základě protokolu HTTP. Obsah přenosu zahrnuje dvě části, jednou je popisný soubor M3U8 a druhou mediální soubor TS.
1. Soubor M3U8
Mediální soubor je popsán v textu, který se skládá z řady značek.
#EXTM3U
# EXT-X-TARGETDURATION: 5
#EXTINF: 5,
./0.ts
#EXTINF: 5,
./1.ts
# EXTM3U: První řádek každého souboru M3U8 musí být tato značka.
# EXT-X-TARGETDURATION: Určete maximální délku segmentu média (sekundy). Délka času uvedená v #EXTINF musí být menší nebo rovna této maximální hodnotě. Tato hodnota se může objevit pouze jednou.
#EXTINF: Popište délku jednoho mediálního souboru. Následují mediální soubory, například ./0.ts
2. soubor ts
Soubor ts je soubor transportního proudu, hlavní formát kódování videa je h264 / mpeg4 a zvuk je acc / MP3.
Soubor ts je rozdělen do tří vrstev: ts vrstva Transport Stream, pes vrstva Packet Elemental Stream, es vrstva Elementary Stream. ES vrstva je audio a video data a pes vrstva jsou informace o popisu datového rámce, jako je časové razítko přidané do audio a video dat. Vrstva ts má přidat potřebné informace pro identifikaci a přenos datového proudu ve vrstvě pes
Poznámka: Podrobnosti jsou následující
(1) ts vrstva Velikost ts paketu je pevně nastavena na 188 bytů a ts vrstva je rozdělena do tří částí: ts záhlaví, adaptační pole a užitečné zatížení. Záhlaví ts je opraveno na 4 bajty; adaptační pole může, ale nemusí existovat a jeho hlavní funkcí je vyplnění dat menších než 188 bajtů; užitečné zatížení je pes data.
ts záhlaví
sync_byte 8b synchronizační bajt, opraveno na 0x47
transport_error_indicator 1b Indikátor chyby transportu, indikující, že za adaptačním polem záhlaví ts je zbytečný bajt, obvykle 0, tento byte se počítá do délky adaptačního pole
payload_unit_start_indicator 1b Indikátor spuštění jednotky načítání, který je označen jako 1 na začátku kompletního datového paketu
transport_priority 1b Priorita přenosu, 0 má nízkou prioritu, 1 má vysokou prioritu, obvykle 0
pid 13b pid hodnota
transport_scrambling_control 2b Řízení kódování transportu, 00 znamená nezašifrované
adaptation_field_control 2b Zda zahrnout adaptační pole, „00“ je vyhrazeno; „01“ znamená žádné adaptační pole, pouze užitečné zatížení; „10“ znamená pouze adaptační pole, žádné užitečné zatížení; „11“ znamená, že je zahrnuta také doména a užitečné zatížení.
continuity_counter 4b Zvyšující se počítadlo, od 0-f počáteční hodnota nemusí nutně trvat 0, ale musí být spojitá
Obsah vrstvy ts je identifikován hodnotou PID a hlavní obsah zahrnuje: tabulku PAT, tabulku PMT, audio stream a video stream. Chcete-li analyzovat tok ts, musíte nejprve najít tabulku PAT, pokud najdete PAT, můžete najít PMT a pak můžete najít zvukové a obrazové proudy. Hodnota PID tabulky PAT je pevně nastavena na 0. Tabulku PAT a tabulku PMT je třeba pravidelně vkládat do proudu ts, protože uživatel se může k proudu ts připojit kdykoli, tento interval je relativně malý, obvykle každých pár video snímky pro přidání PAT a PMT. Tabulky PAT a PMT jsou nezbytné a lze přidat i další tabulky, například SDT (tabulka s popisem služby), ale stream HLS lze přehrávat, pokud existují PAT a PMT.
Tabulka PAT: Jeho hlavní funkcí je indikovat hodnotu PID tabulky PMT.
Tabulka PMT: Jeho hlavní funkcí je specifikovat hodnotu PID audio a video streamu.
Audio stream / video stream: Přenášejte audio a video obsah.
přizpůsobení
adapation_field_length 1B délka adaptačního pole, počet bajtů za sebou
příznak 1B bere 0x50 k označení PCR nebo 0x40 nezahrnuje PCR
PCR 5B Program Clock Reference, reference programových hodin, slouží k obnovení systémových časovacích hodin STC (System Time Clock) v souladu s kodérem.
stuffing_bytes xB výplň bajtů, hodnota je 0xff
Délka adaptační oblasti zahrnuje jeden bajt identifikovaný indikátorem chyby přenosu. pcr je reference hodin programu, pcr, dts, pts jsou všechny vzorkované hodnoty stejných systémových hodin, pcr je přírůstkové, takže jej lze nastavit jako hodnotu dts, audio data nepotřebují pcr. Pokud zde není žádné pole, může iPad hrát, ale vlc nemůže hrát. Při balení proudu ts nemají tabulky PAT a PMT adaptační pole. Pokud délka nestačí, stačí vyplnit 0xff. Jak video stream, tak audio stream je třeba přidat adaptační pole, které se obvykle přidá k prvnímu ts paketu a poslednímu ts paketu rámce a střední ts paket se nepřidá.
Formát PAT
table_id 8b PAT tabulka je pevně nastavena na 0x00
section_syntax_indicator 1b je stanovena na 1
nula 1b je pevně nastavena na 0
vyhrazená 2b je pevně nastavena na 11
section_length 12b Délka následujících dat
transport_stream_id 16b ID transportního proudu, opraveno jako 0x0001
vyhrazená 2b je pevně nastavena na 11
version_number 5b Číslo verze, opraveno na 00000, pokud se PAT změní, číslo verze se zvýší o 1
current_next_indicator 1b je fixní na 1, což znamená, že lze použít tuto PAT tabulku, pokud je 0, počkejte na další PAT tabulku
section_number 8b je pevně nastaveno na 0x00
last_section_number 8b je pevně nastaveno na 0x00
Spusťte smyčku
program_number 16b Když je číslo programu 0x0000, znamená to NIT, když je číslo programu 0x0001, znamená to PMT
vyhrazená 3b je pevně nastavena na 111
PID 13b Hodnota PID odpovídající obsahu čísla programu
Koncová smyčka
CRC32 32b CRC32 kontrolní kód předchozích dat
Formát PMT
table_id 8b Tabulka PMT má jakoukoli hodnotu, 0x02
section_syntax_indicator 1b je stanovena na 1
nula 1b je pevně nastavena na 0
vyhrazená 2b je pevně nastavena na 11
section_length 12b Délka následujících dat
program_number 16b číslo kanálu, což znamená kanál spojený s aktuálním PMT, hodnota je 0x0001
vyhrazená 2b je pevně nastavena na 11
version_number 5b Číslo verze, opraveno na 00000, pokud se PAT změní, číslo verze se zvýší o 1
current_next_indicator 1b je pevně nastaven na 1
section_number 8b je pevně nastaveno na 0x00
last_section_number 8b je pevně nastaveno na 0x00
vyhrazená 3b je pevně nastavena na 111
PCR_PID 13b PID paketu TS, kde se nachází PCR (referenční hodiny programu), označený jako video PID
vyhrazená 4b je pevně nastavena na 1111
program_info_length 12b Informace o popisu programu, označené jako 0x000, znamenají číslo
Spusťte smyčku
stream_type 8b Typ proudu, značka je Video nebo Audio nebo jiná data, kódování h.264 odpovídá 0x1b, kódování aac odpovídá 0x0f, kódování mp3 odpovídá 0x03
vyhrazená 3b je pevně nastavena na 111
elementary_PID 13b PID odpovídající typu stream_type
vyhrazená 4b je pevně nastavena na 1111
ES_info_length 12b Popisné informace, označené jako 0x000, znamenají č
Koncová smyčka
CRC32 32b CRC32 kontrolní kód předchozích dat
(2) pes vrstva
Pes vrstva přidává časové razítko a další informace ke každému obrazovému / zvukovému rámci. Balíček pes obsahuje spoustu obsahu a my necháme jen ty nejčastěji používané.
startovní kód pes 3B počáteční kód, pevný na 0x000001
stream ID 1B audio hodnota (0xc0-0xdf), obvykle 0xc0
Hodnota videa (0xe0-0xef), obvykle 0xe0
délka paketu pes 2B Délka dat pes za sebou, 0 znamená neomezenou délku,
Pouze délka dat videa přesáhne 0xffff
Příznak 1B má obvykle hodnotu 0x80, což znamená, že data nejsou šifrována, nemají prioritu a jsou zálohována.
Hodnota příznaku 1B 0x80 znamená pouze body, hodnota 0xc0 znamená body a body
délka dat pes 1B Délka následujících dat, hodnota je 5 nebo 10
bod 5B 33bitová hodnota
dts 5B 33bitová hodnota
pts je časové razítko zobrazení a dts je časové razítko dekódování. Pro data videa jsou vyžadována obě časová razítka. Body a dts zvukových dat jsou stejné, takže jsou zapotřebí pouze body. Existují dvě časová razítka, body a dny, které jsou způsobeny B snímky. Body I a P snímků se rovnají dts. Pokud video nemá žádné B snímky, body budou vždy stejné jako dts. Přečtěte si snímky videa postupně ze souboru a sekvence extrahovaných snímků je stejná jako sekvence dts. Algoritmus dts je relativně jednoduchý, stačí počáteční hodnota + přírůstek, výpočet pts je komplikovanější a k dts je třeba přidat offset.
Ve zvukových zprávách jsou pouze body (stejné jako dts), snímky I a P videa musí mít obě časová razítka a snímek videa B potřebuje pouze body (stejné jako dts). Chcete-li zabalit body a body, potřebujete znát typ rámce videa, ale nemůžeme posoudit typ rámce prostřednictvím formátu kontejneru. Chcete-li získat typ rámce, musíte analyzovat obsah h.264.
například:
IPBBBP
Pořadí čtení: 1 2 3 4 5 6
objednávka dts: 1 2 3 4 5 6
objednávka bodů: 1 5 3 2 4 6
Algoritmus dts videa na vyžádání:
dts = počáteční hodnota + 90000 / video_frame_rate, počáteční hodnotu lze libovolně specifikovat, ale je lepší nebrat 0, video_frame_rate je snímková frekvence, například 23, 30.
body a body jsou založeny na časové ose, 1s = 90000 časové měřítko, jeden snímek by měl být 90000 / video_frame_rate časová osa.
Dělení časové osy jednoho snímku vzorkovací frekvencí lze převést na dobu přehrávání jednoho snímku
Algoritmus DTS audio na vyžádání:
dts = počáteční hodnota + (90000 * audio_samples_per_frame) / audio_sample_rate, hodnota audio_samples_per_frame souvisí s kodekem, hodnota aac je 1024, hodnota mp3 je 1158, audio_sample_rate je vzorkovací frekvence, například 24000, 41000. AAC dekóduje rámec 1024 vzorků na kanál, což znamená, že doba trvání rámce je 1024 / sample_rate sekund. Takže časové razítko každého snímku je 0, 1024 / sample_rate, ..., 1024 * n / sample_rate seconds.
DTS a PTS živého videa by měly přímo využívat čas v živém datovém proudu a neměly by se počítat podle vzorců.
(3) vrstva es
Vrstva es odkazuje na audio a video data, zavádíme pouze video h.264 a audio aac.
video h.264:
Abychom zabalili data h.264, musíme k videodatům přidat nalu (Network Abstraction Layer unit). Nalu zahrnuje záhlaví nalu a typ nalu. Záhlaví nalu je pevně nastaveno na 0x00000001 (začátek snímku) nebo 0x000001 (v rámci). Data h.264 se skládají z řezů a obsah řezů zahrnuje: video, sps, pps atd. Typ nalu určuje obsah následujících dat h.264.
F 1b forbidden_zero_bit, h.264 stanoví, že to musí být 0
NRI 2b nal_ref_idc, hodnota 0 ~ 3, označuje důležitost této nalu, I rámec, sps, pps obvykle trvá 3, P rámec obvykle trvá 2 a B rámec obvykle 0
Typ 5b viz tabulka níže
popis nal_unit_type
0 nepoužívá se
1 Non-IDR image, IDR odkazuje na klíčový snímek
2 řezy oddíl A
3 řezy oddíl B
|
Zadejte e-mail a získejte překvapení
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> afrikánština
sq.fmuser.org -> albánština
ar.fmuser.org -> arabština
hy.fmuser.org -> Arménský
az.fmuser.org -> Ázerbájdžánština
eu.fmuser.org -> baskičtina
be.fmuser.org -> běloruský
bg.fmuser.org -> Bulgarian
ca.fmuser.org -> Katalánština
zh-CN.fmuser.org -> čínština (zjednodušená)
zh-TW.fmuser.org -> Čínsky (zjednodušeně)
hr.fmuser.org -> chorvatština
cs.fmuser.org -> čeština
da.fmuser.org -> dánština
nl.fmuser.org -> Dutch
et.fmuser.org -> estonština
tl.fmuser.org -> filipínský
fi.fmuser.org -> finština
fr.fmuser.org -> French
gl.fmuser.org -> galicijština
ka.fmuser.org -> gruzínština
de.fmuser.org -> němčina
el.fmuser.org -> Greek
ht.fmuser.org -> haitská kreolština
iw.fmuser.org -> hebrejština
hi.fmuser.org -> hindština
hu.fmuser.org -> Hungarian
is.fmuser.org -> islandština
id.fmuser.org -> Indonéština
ga.fmuser.org -> Irština
it.fmuser.org -> Italian
ja.fmuser.org -> japonština
ko.fmuser.org -> korejština
lv.fmuser.org -> lotyština
lt.fmuser.org -> Litevština
mk.fmuser.org -> makedonština
ms.fmuser.org -> Malajština
mt.fmuser.org -> maltština
no.fmuser.org -> Norwegian
fa.fmuser.org -> perština
pl.fmuser.org -> polština
pt.fmuser.org -> portugalština
ro.fmuser.org -> Rumunština
ru.fmuser.org -> ruština
sr.fmuser.org -> srbština
sk.fmuser.org -> slovenština
sl.fmuser.org -> Slovinština
es.fmuser.org -> španělština
sw.fmuser.org -> svahilština
sv.fmuser.org -> švédština
th.fmuser.org -> Thai
tr.fmuser.org -> turečtina
uk.fmuser.org -> ukrajinština
ur.fmuser.org -> urdština
vi.fmuser.org -> Vietnamská
cy.fmuser.org -> velština
yi.fmuser.org -> Jidiš
FMUSER Bezdrátový přenos videa a zvuku snadnější!
Kontakt
Adresa:
Budova č. 305 Room HuiLan No.273 Huanpu Road Guangzhou Čína 510620
Kategorie
Newsletter