FMUSER Wirless överför video och ljud enklare!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> afrikanska
sq.fmuser.org -> albanska
ar.fmuser.org -> arabiska
hy.fmuser.org -> Armenian
az.fmuser.org -> Azerbajdzjanska
eu.fmuser.org -> Baskiska
be.fmuser.org -> vitryska
bg.fmuser.org -> Bulgariska
ca.fmuser.org -> katalanska
zh-CN.fmuser.org -> Kinesiska (förenklad)
zh-TW.fmuser.org -> Kinesiska (traditionella)
hr.fmuser.org -> kroatiska
cs.fmuser.org -> Tjeckiska
da.fmuser.org -> danska
nl.fmuser.org -> Dutch
et.fmuser.org -> estniska
tl.fmuser.org -> filippinska
fi.fmuser.org -> finska
fr.fmuser.org -> French
gl.fmuser.org -> galiciska
ka.fmuser.org -> Georgiska
de.fmuser.org -> tyska
el.fmuser.org -> Greek
ht.fmuser.org -> Haitisk kreol
iw.fmuser.org -> hebreiska
hi.fmuser.org -> Hindi
hu.fmuser.org -> ungerska
is.fmuser.org -> isländska
id.fmuser.org -> Indonesiska
ga.fmuser.org -> Irländska
it.fmuser.org -> Italian
ja.fmuser.org -> japanska
ko.fmuser.org -> koreanska
lv.fmuser.org -> lettiska
lt.fmuser.org -> Litauiska
mk.fmuser.org -> makedonska
ms.fmuser.org -> Malajiska
mt.fmuser.org -> maltesiska
no.fmuser.org -> Norwegian
fa.fmuser.org -> persiska
pl.fmuser.org -> polska
pt.fmuser.org -> portugisiska
ro.fmuser.org -> rumänska
ru.fmuser.org -> ryska
sr.fmuser.org -> serbiska
sk.fmuser.org -> Slovakiska
sl.fmuser.org -> Slovenska
es.fmuser.org -> spanska
sw.fmuser.org -> Swahili
sv.fmuser.org -> svenska
th.fmuser.org -> Thai
tr.fmuser.org -> Turkiska
uk.fmuser.org -> ukrainska
ur.fmuser.org -> Urdu
vi.fmuser.org -> Vietnamesiskt
cy.fmuser.org -> Walesiska
yi.fmuser.org -> Jiddisch
HLS och Http Live Streaming är protokoll för realtidsströmning definierad av Apple. HLS implementeras baserat på HTTP-protokollet. Överföringsinnehållet innehåller två delar, en är M3U8-beskrivningsfilen och den andra är TS-mediefilen.
1. M3U8-fil
Mediefilen beskrivs i text, som består av en serie taggar.
#EXTM3U
# EXT-X-MÅL: 5
#EXTINF: 5,
./0.ts
#EXTINF: 5,
./1.ts
# EXTM3U: Den första raden i varje M3U8-fil måste vara den här taggen.
# EXT-X-MÅL: Ange maximal mediasegmenttid (sekunder). Den tidslängd som anges i #EXTINF måste vara mindre än eller lika med detta maximala värde. Detta värde kan bara visas en gång.
#EXTINF: Beskriv längden på en enda mediefil. Mediefiler följer, till exempel ./0.ts
2. ts-fil
Ts-filen är en transportströmfil, huvudvideokodningsformatet är h264 / mpeg4 och ljudet är acc / MP3.
Ts-filen är uppdelad i tre lager: ts lager Transport Stream, pes lager Packet Elemental Stream, es lager Elementary Stream. Es-skiktet är ljud- och videodata, och pes-skiktet är datarambeskrivningsinformationen, såsom en tidsstämpel som läggs till i ljud- och videodata. Ts-skiktet är att lägga till nödvändig information för identifiering och överföring av dataströmmen i pes-skiktet
Obs: Detaljerna är som följer
(1) ts-lager Ts-paketstorleken är fixerad till 188 byte och ts-lagret är uppdelat i tre delar: ts-rubrik, anpassningsfält och nyttolast. Ts-rubriken är fixerad till 4 byte; anpassningsfältet kan existera eller inte, och dess huvudsakliga funktion är att fylla i data mindre än 188 byte; nyttolasten är pes-data.
ts-rubrik
sync_byte 8b synkroniseringsbyte, fixerad till 0x47
transport_error_indicator 1b Indikator för transportfel, vilket indikerar att det finns en värdelös byte efter anpassningsfältet för ts-rubriken, vanligtvis 0, denna byte räknas i längden på anpassningsfältet
payload_unit_start_indicator 1b Startenhet för lastenhet, som är markerad som 1 i början av ett komplett datapaket
transport_priority 1b Transportprioritet, 0 har låg prioritet, 1 har hög prioritet, vanligtvis 0
pid 13b pidvärde
transport_scrambling_control 2b Transport scrambling control, 00 betyder okrypterad
adaptation_field_control 2b Huruvida anpassningsfältet ska inkluderas är '00' reserverat; "01" betyder inget anpassningsfält, bara nyttolasten. "10" betyder endast anpassningsfältet, ingen nyttolast. '11' betyder att anpassningen också ingår Domän och nyttolast.
continuity_counter 4b Ökar räknaren, från 0-f, tar startvärdet inte nödvändigtvis 0, men det måste vara kontinuerligt
Innehållet i ts-lagret identifieras av PID-värdet och huvudinnehållet inkluderar: PAT-tabell, PMT-tabell, ljudström och videoström. För att analysera ts-strömmen måste du först hitta PAT-tabellen, så länge du hittar PAT, kan du hitta PMT och sedan kan du hitta ljud- och videoströmmarna. PID-värdet för PAT-tabellen är fixerat till 0. PAT-tabellen och PMT-tabellen måste införas i ts-strömmen regelbundet, eftersom användaren kan gå med i ts-strömmen när som helst, detta intervall är relativt litet, vanligtvis varannan videoramar för att lägga till PAT och PMT. PAT- och PMT-tabeller är nödvändiga, och andra tabeller som SDT (tjänstebeskrivningstabell) kan också läggas till, men hls-strömmen kan spelas så länge det finns PAT och PMT.
PAT-tabell: Dess huvudsakliga funktion är att ange PID-värdet för PMT-tabellen.
PMT-tabell: Dess huvudsakliga funktion är att ange PID-värdet för ljud- och videoströmmen.
Ljudström / videoström: Bär ljud- och videoinnehåll.
anpassning
adaptation_field_length 1B anpassningsfältets längd, antalet byte bakom
flagga 1B tar 0x50 för att indikera PCR eller 0x40 för att inte inkludera PCR
PCR 5B Programklockreferens, programklockreferens, används för att återställa systemtidsklockan STC (System Time Clock) i enlighet med kodaren.
stuffing_bytes xB stuffing bytes, värdet är 0xff
Anpassningsområdets längd ska inkludera en byte som identifieras av indikatorn för överföringsfel. pcr är programklockreferensen, pcr, dts, pts är alla samplade värden för samma systemklocka, pcr är stegvis, så det kan ställas in som dts-värde, ljuddata behöver inte pcr. Om det inte finns något fält kan ipad spela, men vlc kan inte spela. Vid packning av ts-strömmen har PAT- och PMT-tabellerna inget anpassningsfält. Om längden inte räcker, fyll bara i 0xff. Både videoström och ljudström måste lägga till ett anpassningsfält, som vanligtvis läggs till i det första ts-paketet och det sista ts-paketet i en ram, och det mittersta ts-paketet läggs inte till.
PAT-format
table_id 8b PAT-tabellen är fixerad till 0x00
section_syntax_indicator 1b är fixerad till 1
noll 1b är fixerad till 0
reserverad 2b är fixerad till 11
section_length 12b Längden på följande data
transport_stream_id 16b Transportström-ID, fixerat som 0x0001
reserverad 2b är fixerad till 11
version_nummer 5b Versionsnummer, fast vid 00000, om PAT ändras kommer versionsnumret att öka med 1
current_next_indicator 1b är fixerad till 1, vilket indikerar att denna PAT-tabell kan användas, om den är 0, vänta på nästa PAT-tabell
sektionsnummer 8b är fixerat till 0x00
last_section_number 8b är fixerat till 0x00
Starta slingan
programnummer 16b När programnumret är 0x0000 betyder det att detta är NIT, när programnumret är 0x0001 betyder det att det här är PMT
reserverad 3b är fixerad till 111
PID 13b PID-värde som motsvarar innehållet i programnumret
Avsluta slingan
CRC32 32b CRC32-kontrollkod för tidigare data
PMT-format
tabell_id 8b PMT-tabell har något värde, 0x02
section_syntax_indicator 1b är fixerad till 1
noll 1b är fixerad till 0
reserverad 2b är fixerad till 11
section_length 12b Längden på följande data
programnummer 16b kanalnummer, vilket betyder den kanal som är associerad med den aktuella PMT, värdet är 0x0001
reserverad 2b är fixerad till 11
version_nummer 5b Versionsnummer, fast vid 00000, om PAT ändras kommer versionsnumret att öka med 1
current_next_indicator 1b är fixerad till 1
sektionsnummer 8b är fixerat till 0x00
last_section_number 8b är fixerat till 0x00
reserverad 3b är fixerad till 111
PCR_PID 13b PID för TS-paketet där PCR (programreferensklocka) finns, betecknad som video-PID
reserverad 4b är fixerad till 1111
program_info_length 12b Programbeskrivningsinformation, betecknad 0x000 betyder nr
Starta slingan
stream_type 8b Streamtyp, mark är Video eller Audio eller andra data, h.264-kodning motsvarar 0x1b, aac-kodning motsvarar 0x0f, mp3-kodning motsvarar 0x03
reserverad 3b är fixerad till 111
elementary_PID 13b PID motsvarande stream_type
reserverad 4b är fixerad till 1111
ES_info_length 12b Beskrivningsinformation, betecknad 0x000 betyder nr
Avsluta slingan
CRC32 32b CRC32-kontrollkod för tidigare data
(2) pes-lager
Pes-skiktet lägger till tidsstämpel och annan information till varje video- / ljudram. Pes-paketet innehåller mycket innehåll, och vi lämnar bara de mest använda.
pes startkod 3B startkod, fast vid 0x000001
ström-id 1B ljudvärde (0xc0-0xdf), vanligtvis 0xc0
Videovärde (0xe0-0xef), vanligtvis 0xe0
pes-paketlängd 2B Längden på pes-data bakom, 0 betyder obegränsad längd,
Endast videodatalängden överstiger 0xffff
Flagga 1B tar vanligtvis värdet 0x80, vilket innebär att data inte är krypterade, har ingen prioritet och säkerhetskopieras data
Flagga 1B-värde 0x80 betyder bara poäng, värde 0xc0 betyder poäng och dts
pes datalängd 1B Längden på följande data, värdet är 5 eller 10
pts 5B 33bit värde
dts 5B 33bit värde
pts är tidsstämpeln för displayen och dts är tidsstämpeln för avkodning. Båda tidsstämplarna krävs för videodata. Pts och dts för ljuddata är desamma, så det behövs bara pts. Det finns två tidsstämplar, pts och dts, som orsakas av B-ramar. Poängen för I- och P-ramar är lika med dts. Om en video inte har några B-ramar kommer pts alltid att vara desamma som dts. Läs videobilderna i följd från filen och sekvensen för de extraherade bilderna är densamma som dts-sekvensen. Dts-algoritmen är relativt enkel, det initiala värdet + inkrementet räcker, pts-beräkningen är mer komplicerad och offset måste läggas till dts.
Det finns bara poäng i ljudpeserna (samma som dts), I- och P-ramarna i videon måste ha båda tidsstämplarna och video B-ramen behöver bara pts (samma som dts). För att packa poäng och dts måste du känna till videoramtypen, men vi kan inte bedöma ramtypen genom behållarformatet. Du måste analysera h.264-innehållet för att få ramtypen.
till exempel:
IPBBBP
Läsordning: 1 2 3 4 5 6
dts ordning: 1 2 3 4 5 6
poängordning: 1 5 3 2 4 6
On-demand video dts-algoritm:
dts = initialvärde + 90000 / video_frame_rate, initialvärdet kan specificeras godtyckligt, men det är bäst att inte ta 0, video_frame_rate är bildhastigheten, såsom 23, 30.
pts och dts är baserade på tidsskala, 1s = 90000 tidsskala, en bildruta ska vara 90000 / video_frame_rate tidsskala.
Att dela tidsskalan för en bild med samplingsfrekvensen kan konverteras till uppspelningstiden för en bildruta
On-demand audio dts-algoritm:
dts = initialvärde + (90000 * audio_samples_per_frame) / audio_sample_rate, värdet för audio_samples_per_frame är relaterat till codec, aac-värdet är 1024, mp3-värdet är 1158, audio_sample_rate är samplingshastigheten, såsom 24000, 41000. AAC avkodar en ram av 1024 sampel per kanal, vilket innebär att varaktigheten för en ram är 1024 / samplingsfrekvenssekunder. Så tidsstämpeln för varje ram är 0, 1024 / sample_rate, ..., 1024 * n / sample_rate seconds.
Dts och pts i livevideon ska använda tiden i live dataströmmen direkt och ska inte beräknas med formler.
(3) es lager
ES-skiktet hänvisar till ljud- och videodata, vi introducerar bara h.264-video och aac-ljud.
h.264-video:
För att packa h.264-data måste vi lägga till en nalu (Network Abstraction Layer-enhet) till videodata. Nalu inkluderar nalu-rubriken och nalu-typen. Nalu-rubriken är fixerad till 0x00000001 (start av ram) eller 0x000001 (i ram). Data för h.264 består av skivor, och innehållet i skivor inkluderar: video, sps, pps, etc. Nalu-typen bestämmer innehållet i efterföljande h.264-data.
F 1b forbidden_zero_bit, h.264 anger att den måste vara 0
NRI 2b nal_ref_idc, värde 0 ~ 3, indikerar vikten av denna nalu, I-ram, sps, pps tar vanligtvis 3, P-ram tar vanligtvis 2 och B-ram tar vanligtvis 0
Typ 5b hänvisas till tabellen nedan
beskrivning av nal_unit_type
0 används inte
1 Icke-IDR-bild, IDR avser nyckelram
2 skivpartition A
3 skivpartition B
|
Ange e-post för att få en överraskning
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> afrikanska
sq.fmuser.org -> albanska
ar.fmuser.org -> arabiska
hy.fmuser.org -> Armenian
az.fmuser.org -> Azerbajdzjanska
eu.fmuser.org -> Baskiska
be.fmuser.org -> vitryska
bg.fmuser.org -> Bulgariska
ca.fmuser.org -> katalanska
zh-CN.fmuser.org -> Kinesiska (förenklad)
zh-TW.fmuser.org -> Kinesiska (traditionella)
hr.fmuser.org -> kroatiska
cs.fmuser.org -> Tjeckiska
da.fmuser.org -> danska
nl.fmuser.org -> Dutch
et.fmuser.org -> estniska
tl.fmuser.org -> filippinska
fi.fmuser.org -> finska
fr.fmuser.org -> French
gl.fmuser.org -> galiciska
ka.fmuser.org -> Georgiska
de.fmuser.org -> tyska
el.fmuser.org -> Greek
ht.fmuser.org -> Haitisk kreol
iw.fmuser.org -> hebreiska
hi.fmuser.org -> Hindi
hu.fmuser.org -> ungerska
is.fmuser.org -> isländska
id.fmuser.org -> Indonesiska
ga.fmuser.org -> Irländska
it.fmuser.org -> Italian
ja.fmuser.org -> japanska
ko.fmuser.org -> koreanska
lv.fmuser.org -> lettiska
lt.fmuser.org -> Litauiska
mk.fmuser.org -> makedonska
ms.fmuser.org -> Malajiska
mt.fmuser.org -> maltesiska
no.fmuser.org -> Norwegian
fa.fmuser.org -> persiska
pl.fmuser.org -> polska
pt.fmuser.org -> portugisiska
ro.fmuser.org -> rumänska
ru.fmuser.org -> ryska
sr.fmuser.org -> serbiska
sk.fmuser.org -> Slovakiska
sl.fmuser.org -> Slovenska
es.fmuser.org -> spanska
sw.fmuser.org -> Swahili
sv.fmuser.org -> svenska
th.fmuser.org -> Thai
tr.fmuser.org -> Turkiska
uk.fmuser.org -> ukrainska
ur.fmuser.org -> Urdu
vi.fmuser.org -> Vietnamesiskt
cy.fmuser.org -> Walesiska
yi.fmuser.org -> Jiddisch
FMUSER Wirless överför video och ljud enklare!
Kontakta oss
Adress:
No.305 Room HuiLan Building No.273 Huanpu Road Guangzhou Kina 510620
Kategorier
Nyhetsbrev