FMUSER Wirless Overfør video og lyd enklere!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikaans
sq.fmuser.org -> albansk
ar.fmuser.org -> arabisk
hy.fmuser.org -> armensk
az.fmuser.org -> aserbajdsjansk
eu.fmuser.org -> baskisk
be.fmuser.org -> hviterussisk
bg.fmuser.org -> Bulgarian
ca.fmuser.org -> katalansk
zh-CN.fmuser.org -> Kinesisk (forenklet)
zh-TW.fmuser.org -> Kinesisk (tradisjonell)
hr.fmuser.org -> Kroatisk
cs.fmuser.org -> tsjekkisk
da.fmuser.org -> dansk
nl.fmuser.org -> Nederlandsk
et.fmuser.org -> estisk
tl.fmuser.org -> filippinsk
fi.fmuser.org -> finsk
fr.fmuser.org -> French
gl.fmuser.org -> galisisk
ka.fmuser.org -> Georgisk
de.fmuser.org -> tysk
el.fmuser.org -> gresk
ht.fmuser.org -> haitisk kreolsk
iw.fmuser.org -> hebraisk
hi.fmuser.org -> hindi
hu.fmuser.org -> Ungarsk
is.fmuser.org -> islandsk
id.fmuser.org -> indonesisk
ga.fmuser.org -> Irsk
it.fmuser.org -> Italiensk
ja.fmuser.org -> japansk
ko.fmuser.org -> koreansk
lv.fmuser.org -> lettisk
lt.fmuser.org -> litauisk
mk.fmuser.org -> makedonsk
ms.fmuser.org -> malaysisk
mt.fmuser.org -> maltesisk
no.fmuser.org -> norsk
fa.fmuser.org -> persisk
pl.fmuser.org -> polsk
pt.fmuser.org -> portugisisk
ro.fmuser.org -> rumensk
ru.fmuser.org -> russisk
sr.fmuser.org -> serbisk
sk.fmuser.org -> Slovakisk
sl.fmuser.org -> Slovenian
es.fmuser.org -> spansk
sw.fmuser.org -> Swahili
sv.fmuser.org -> svensk
th.fmuser.org -> Thai
tr.fmuser.org -> tyrkisk
uk.fmuser.org -> ukrainsk
ur.fmuser.org -> urdu
vi.fmuser.org -> Vietnamesisk
cy.fmuser.org -> walisisk
yi.fmuser.org -> Yiddish
HLS og Http Live Streaming er protokoller for sanntids streaming definert av Apple. HLS er implementert basert på HTTP-protokollen. Overføringsinnholdet inkluderer to deler, den ene er M3U8-beskrivelsesfilen, og den andre er TS-mediefilen.
1. M3U8-fil
Mediefilen er beskrevet i tekst, som består av en serie koder.
#EXTM3U
# EXT-X-MÅLSTILLING: 5
#EXTINF: 5,
./0.ts
#EXTINF: 5,
./1.ts
# EXTM3U: Den første linjen i hver M3U8-fil må være denne taggen.
# EXT-X-MÅLVARIGHET: Spesifiser maksimal mediasegmenttid (sekunder). Tidslengden spesifisert i #EXTINF må være mindre enn eller lik denne maksimale verdien. Denne verdien kan bare vises en gang.
#EXTINF: Beskriv lengden på en enkelt mediefil. Mediefiler følger, for eksempel ./0.ts
2. ts-fil
TS-filen er en transportstrømfil, det viktigste videokodingsformatet er h264 / mpeg4, og lyden er acc / MP3.
Ts-filen er delt inn i tre lag: ts lag Transport Stream, pes lag Packet Elemental Stream, es lag Elementary Stream. ES-laget er lyd- og videodataene, og pes-laget er informasjonen om beskrivelsen av datarammen, for eksempel et tidsstempel lagt til lyd- og videodataene. Ts-laget er å legge til nødvendig informasjon for identifisering og overføring av datastrømmen i pes-laget
Merk: Detaljene er som følger
(1) ts-lag ts-pakkestørrelsen er fast til 188 byte, og ts-laget er delt inn i tre deler: ts-topptekst, tilpasningsfelt og nyttelast. Ts-headeren er løst til 4 byte; tilpasningsfeltet kan eksistere eller ikke, og hovedfunksjonen er å fylle ut data mindre enn 188 byte; nyttelasten er pes-data.
ts topptekst
sync_byte 8b synkroniseringsbyte, fast 0x47
transport_error_indicator 1b Transportfeilindikator, som indikerer at det er en ubrukelig byte etter tilpasningsfeltet til ts-overskriften, vanligvis 0, telles denne byten i lengden på tilpasningsfeltet
payload_unit_start_indicator 1b Lastenhetens startindikator, som er merket som 1 i begynnelsen av en komplett datapakke
transport_priority 1b Transportprioritet, 0 har lav prioritet, 1 har høy prioritet, vanligvis 0
pid 13b pid-verdi
transport_scrambling_control 2b Transport scrambling control, 00 betyr ukryptert
adaptation_field_control 2b Hvorvidt tilpasningsfeltet skal inkluderes, er '00' reservert; '01' betyr ikke noe tilpasningsfelt, bare nyttelasten; '10' betyr bare tilpasningsfeltet, ingen nyttelast; '11' betyr at tilpasningen også er inkludert Domene og nyttelast.
continuity_counter 4b Økende teller, fra 0-f, tar ikke startverdien nødvendigvis 0, men den må være kontinuerlig
Innholdet i ts-laget identifiseres av PID-verdien, og hovedinnholdet inkluderer: PAT-tabell, PMT-tabell, lydstrøm og videostrøm. For å analysere ts-strømmen, må du først finne PAT-tabellen, så lenge du finner PAT, kan du finne PMT, og deretter kan du finne lyd- og videostrømmene. PID-verdien til PAT-tabellen er fast på 0. PAT-tabellen og PMT-tabellen må settes inn i ts-strømmen regelmessig, fordi brukeren kan bli med i ts-strømmen når som helst, dette intervallet er relativt lite, vanligvis hvert par videorammer for å legge til PAT og PMT. PAT- og PMT-tabeller er nødvendige, og andre tabeller som SDT (tjenestebeskrivelsestabell) kan også legges til, men hls-strømmen kan spilles så lenge det er PAT og PMT.
PAT-tabell: Hovedfunksjonen er å indikere PID-verdien til PMT-tabellen.
PMT-tabell: Hovedfunksjonen er å spesifisere PID-verdien til lyd- og videostrømmen.
Audio stream / video stream: Carry audio and video content.
tilpasning
adaptation_field_length 1B tilpasningsfeltlengde, antall byte bak
flagg 1B tar 0x50 for å indikere PCR eller 0x40 for ikke å inkludere PCR
PCR 5B Programklokkehenvisning, programklokkehenvisning, brukes til å gjenopprette systemtidsklokken STC (System Time Clock) i samsvar med koderen.
stuffing_bytes xB stuffing bytes, verdien er 0xff
Lengden på tilpasningsområdet skal omfatte en byte identifisert av indikatoren for overføringsfeil. pcr er programklokkehenvisningen, pcr, dts, pts er alle samplede verdier av samme systemklokke, pcr er inkrementell, så den kan settes som dts-verdi, lyddata trenger ikke pcr. Hvis det ikke er noe felt, kan ipad spille, men vlc kan ikke spille. Når du pakker ts-strømmen, har ikke PAT- og PMT-tabellene et tilpasningsfelt. Hvis lengden ikke er nok, er det bare å fylle ut 0xff. Både videostrøm og lydstrøm trenger å legge til et tilpasningsfelt, som vanligvis legges til den første ts-pakken og den siste ts-pakken i en ramme, og den midterste ts-pakken blir ikke lagt til.
PAT-format
table_id 8b PAT-tabellen er festet til 0x00
seksjon_syntaks_indikator 1b er fast til 1
null 1b er fast på 0
reservert 2b er fast til 11
seksjon_lengde 12b Lengden på følgende data
transport_stream_id 16b Transportstrøm-ID, fast som 0x0001
reservert 2b er fast til 11
versjonsnummer 5b Versjonsnummer, fast til 00000, hvis PAT endres, vil versjonsnummeret øke med 1
current_next_indicator 1b er fast til 1, noe som indikerer at denne PAT-tabellen kan brukes, hvis den er 0, vent til neste PAT-tabell
seksjonsnummer 8b er fast til 0x00
last_section_number 8b er fast til 0x00
Start løkke
programnummer 16b Når programnummeret er 0x0000, betyr det at dette er NIT, når programnummeret er 0x0001, betyr det at dette er PMT
reservert 3b er fast til 111
PID 13b PID-verdi som tilsvarer innholdet i programnummeret
Sluttløkke
CRC32 32b CRC32 sjekk kode for tidligere data
PMT-format
table_id 8b PMT-tabellen har en hvilken som helst verdi, 0x02
seksjon_syntaks_indikator 1b er fast til 1
null 1b er fast på 0
reservert 2b er fast til 11
seksjon_lengde 12b Lengden på følgende data
programnummer 16b kanalnummer, som betyr kanalen assosiert med den nåværende PMT, verdien er 0x0001
reservert 2b er fast til 11
versjonsnummer 5b Versjonsnummer, fast til 00000, hvis PAT endres, vil versjonsnummeret øke med 1
current_next_indicator 1b er fast til 1
seksjonsnummer 8b er fast til 0x00
last_section_number 8b er fast til 0x00
reservert 3b er fast til 111
PCR_PID 13b PID for TS-pakken der PCR (programreferanseklokke) er plassert, betegnet som video-PID
reservert 4b er fast til 1111
program_info_length 12b Informasjon om programbeskrivelse, betegnet 0x000 betyr nei
Start løkke
stream_type 8b Streamtype, merket er Video eller Audio eller andre data, h.264-koding tilsvarer 0x1b, aac-koding tilsvarer 0x0f, mp3-koding tilsvarer 0x03
reservert 3b er fast til 111
elementary_PID 13b PID tilsvarende stream_type
reservert 4b er fast til 1111
ES_info_length 12b Beskrivelse av informasjon, betegnet 0x000 betyr nei
Sluttløkke
CRC32 32b CRC32 sjekk kode for tidligere data
(2) pes-lag
Pes-laget legger til tidsstempel og annen informasjon til hver video / lydramme. Pes-pakken inneholder mye innhold, og vi forlater bare de mest brukte.
pes startkode 3B startkode, fast 0x000001
stream id 1B lydverdi (0xc0-0xdf), vanligvis 0xc0
Videoverdi (0xe0-0xef), vanligvis 0xe0
pes-pakkelengde 2B Lengden på pes-dataene bak, 0 betyr ubegrenset lengde,
Bare videodatalengden vil overstige 0xffff
Flagg 1B tar vanligvis verdien 0x80, noe som betyr at dataene ikke er kryptert, ikke har prioritet og sikkerhetskopieres data
Flagg 1B-verdi 0x80 betyr bare poeng, verdi 0xc0 betyr poeng og dts
pes datalengde 1B Lengden på følgende data, verdien er 5 eller 10
pts 5B 33bit verdi
dts 5B 33bit verdi
pts er skjermens tidsstempel og dts er dekodingstidsstempelet. Begge tidsstemplene kreves for videodata. Pts og dts av lyddata er de samme, så bare pts er nødvendig. Det er to tidsstempler, pts og dts, som er forårsaket av B-rammer. Punktene til I- og P-rammer er lik dts. Hvis en video ikke har B-rammer, vil pts alltid være det samme som dts. Les videorammene sekvensielt fra filen, og sekvensen til de ekstraherte bildene er den samme som dts-sekvensen. Dts-algoritmen er relativt enkel, startverdien + inkrement er nok, pts-beregningen er mer komplisert, og forskyvningen må legges til dts.
Det er bare punkter i lyd-pene (samme som dts), I- og P-rammene til videoen må ha begge tidsstempler, og video B-rammen trenger bare pts (samme som dts). For å pakke pts og dts, må du vite videorammetypen, men vi kan ikke bedømme rammetypen gjennom containerformatet. Du må analysere h.264-innholdet for å få rammetypen.
for eksempel:
IPBBBP
Lesrekkefølge: 1 2 3 4 5 6
dts rekkefølge: 1 2 3 4 5 6
poengbestilling: 1 5 3 2 4 6
On-demand video dts algoritme:
dts = startverdi + 90000 / video_rammehastighet, den opprinnelige verdien kan spesifiseres vilkårlig, men det er best å ikke ta 0, video_rammehastighet er bildefrekvensen, slik som 23, 30.
pts og dts er basert på tidsskala, 1s = 90000 tidsskala, en ramme skal være 90000 / video_frame_rate tidsskala.
Deling av tidsrammen for ett bilde etter samplingsfrekvensen kan konverteres til avspillingsvarigheten til ett bilde
On-demand lyd dts algoritme:
dts = startverdi + (90000 * audio_samples_per_frame) / audio_sample_rate, verdien av audio_samples_per_frame er relatert til kodeken, aac-verdien er 1024, mp3-verdien er 1158, audio_sample_rate er samplingsfrekvensen, slik som 24000, 41000. AAC dekoder en ramme på 1024 prøver per kanal, noe som betyr at varigheten av en ramme er 1024 / sample_rate sekunder. Så tidsstempelet for hver ramme er 0, 1024 / sample_rate, ..., 1024 * n / sample_rate seconds.
Dts og pts i live videoen skal bruke tiden i live datastrømmen direkte, og skal ikke beregnes med formler.
(3) es lag
ES-laget refererer til lyd- og videodata, vi introduserer bare h.264 video og aac-lyd.
h.264-video:
For å pakke h.264-dataene, må vi legge til en nalu (Network Abstraction Layer unit) til videodataene. Nalu inkluderer nalu-overskriften og nalu-typen. Nalu-overskriften er festet til 0x00000001 (start på rammen) eller 0x000001 (i rammen). Dataene til h.264 består av skiver, og innholdet i skivene inkluderer: video, sps, pps, etc. Nalu-typen bestemmer innholdet i de påfølgende h.264-dataene.
F 1b forbidden_zero_bit, h.264 bestemmer at den må være 0
NRI 2b nal_ref_idc, verdi 0 ~ 3, indikerer viktigheten av denne nalu, I-ramme, sps, pps tar vanligvis 3, P-ramme tar vanligvis 2, og B-ramme tar vanligvis 0
Type 5b, se tabellen nedenfor
beskrivelse av nal_unit_type
0 ikke brukt
1 Ikke-IDR-bilde, IDR refererer til nøkkelrammen
2 skivepartisjon A
3 skive partisjon B
|
Skriv inn e-post for å få en overraskelse
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikaans
sq.fmuser.org -> albansk
ar.fmuser.org -> arabisk
hy.fmuser.org -> armensk
az.fmuser.org -> aserbajdsjansk
eu.fmuser.org -> baskisk
be.fmuser.org -> hviterussisk
bg.fmuser.org -> Bulgarian
ca.fmuser.org -> katalansk
zh-CN.fmuser.org -> Kinesisk (forenklet)
zh-TW.fmuser.org -> Kinesisk (tradisjonell)
hr.fmuser.org -> Kroatisk
cs.fmuser.org -> tsjekkisk
da.fmuser.org -> dansk
nl.fmuser.org -> Nederlandsk
et.fmuser.org -> estisk
tl.fmuser.org -> filippinsk
fi.fmuser.org -> finsk
fr.fmuser.org -> French
gl.fmuser.org -> galisisk
ka.fmuser.org -> Georgisk
de.fmuser.org -> tysk
el.fmuser.org -> gresk
ht.fmuser.org -> haitisk kreolsk
iw.fmuser.org -> hebraisk
hi.fmuser.org -> hindi
hu.fmuser.org -> Ungarsk
is.fmuser.org -> islandsk
id.fmuser.org -> indonesisk
ga.fmuser.org -> Irsk
it.fmuser.org -> Italiensk
ja.fmuser.org -> japansk
ko.fmuser.org -> koreansk
lv.fmuser.org -> lettisk
lt.fmuser.org -> litauisk
mk.fmuser.org -> makedonsk
ms.fmuser.org -> malaysisk
mt.fmuser.org -> maltesisk
no.fmuser.org -> norsk
fa.fmuser.org -> persisk
pl.fmuser.org -> polsk
pt.fmuser.org -> portugisisk
ro.fmuser.org -> rumensk
ru.fmuser.org -> russisk
sr.fmuser.org -> serbisk
sk.fmuser.org -> Slovakisk
sl.fmuser.org -> Slovenian
es.fmuser.org -> spansk
sw.fmuser.org -> Swahili
sv.fmuser.org -> svensk
th.fmuser.org -> Thai
tr.fmuser.org -> tyrkisk
uk.fmuser.org -> ukrainsk
ur.fmuser.org -> urdu
vi.fmuser.org -> Vietnamesisk
cy.fmuser.org -> walisisk
yi.fmuser.org -> Yiddish
FMUSER Wirless Overfør video og lyd enklere!
Kontakt
Adresse:
No.305 Room HuiLan Building No.273 Huanpu Road Guangzhou Kina 510620
Type kategori
Nyhetsbrev