FMUSER Wirless stuur video en klank makliker toe!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikaans
sq.fmuser.org -> Albanees
ar.fmuser.org -> Arabies
hy.fmuser.org -> Armeens
az.fmuser.org -> Azerbeidjans
eu.fmuser.org -> Baskies
be.fmuser.org -> Belo-Russies
bg.fmuser.org -> Bulgaars
ca.fmuser.org -> Katalaans
zh-CN.fmuser.org -> Chinees (vereenvoudig)
zh-TW.fmuser.org -> Sjinees (Tradisioneel)
hr.fmuser.org -> Kroaties
cs.fmuser.org -> Tsjeggies
da.fmuser.org -> Deens
nl.fmuser.org -> Nederlandse
et.fmuser.org -> Esties
tl.fmuser.org -> Filippyns
fi.fmuser.org -> Fins
fr.fmuser.org -> Franse
gl.fmuser.org -> Galisies
ka.fmuser.org -> Georgies
de.fmuser.org -> Duits
el.fmuser.org -> Grieks
ht.fmuser.org -> Haïtiaanse kreool
iw.fmuser.org -> Hebreeus
hi.fmuser.org -> Hindi
hu.fmuser.org -> Hungarian
is.fmuser.org -> Yslands
id.fmuser.org -> Indonesies
ga.fmuser.org -> Iers
it.fmuser.org -> Italiaanse
ja.fmuser.org -> Japannees
ko.fmuser.org -> Koreaans
lv.fmuser.org -> Lets
lt.fmuser.org -> Litaus
mk.fmuser.org -> Masedonies
ms.fmuser.org -> Maleis
mt.fmuser.org -> Maltees
no.fmuser.org -> Noorse
fa.fmuser.org -> Persies
pl.fmuser.org -> Pools
pt.fmuser.org -> Portugees
ro.fmuser.org -> Roemeens
ru.fmuser.org -> Russies
sr.fmuser.org -> Serwies
sk.fmuser.org -> Slowaaks
sl.fmuser.org -> Sloveens
es.fmuser.org -> Spaans
sw.fmuser.org -> Swahili
sv.fmuser.org -> Sweeds
th.fmuser.org -> Thai
tr.fmuser.org -> Turks
uk.fmuser.org -> Oekraïens
ur.fmuser.org -> Oerdoe
vi.fmuser.org -> Viëtnamees
cy.fmuser.org -> Wallies
yi.fmuser.org -> Jiddisj
HLS en Http Live Streaming is protokolle vir real-time streaming wat deur Apple gedefinieer word. HLS word geïmplementeer op grond van die HTTP-protokol. Die transmissie-inhoud bevat twee dele, die een is die M3U8-beskrywingslêer en die ander die TS-medialêer.
1. M3U8-lêer
Die medialêer word in teks beskryf, wat uit 'n reeks etikette bestaan.
#EXTM3U
# EXT-X-DOELWIT: 5
# EXTINF: 5,
./0.ts
# EXTINF: 5,
./1.ts
# EXTM3U: Die eerste reël van elke M3U8-lêer moet hierdie merker wees.
# EXT-X-DOELWIT: Spesifiseer die maksimum mediasegmentlengte (sekondes). Die tydlengte wat in #EXTINF gespesifiseer word, moet minder as of gelyk wees aan hierdie maksimum waarde. Hierdie waarde kan net een keer verskyn.
# EXTINF: Beskryf die lengte van 'n enkele medialêer. Mediabestande volg, soos ./0.ts
2. ts lêer
Die ts-lêer is 'n vervoerstroomlêer, die hoofformaat vir videokodering is h264 / mpeg4, en die klank is volgens acc / MP3.
Die ts-lêer is in drie lae verdeel: ts laag Transportstroom, pes laag Packet Elemental Stream, es laag Elementary Stream. Die laag is die klank- en videodata, en die pes-laag is die beskrywing van die gegewensraamwerk, soos 'n tydstempel wat by die klank- en videodata gevoeg word. Die ts-laag is om die nodige inligting by te voeg vir die identifisering en oordrag van die datastroom in die pes-laag
Opmerking: Die besonderhede is soos volg
(1) ts-laag Die ts-pakketgrootte is vasgestel op 188 bytes, en die ts-laag word in drie dele verdeel: ts-kop, aanpassingsveld en loonvrag. Die ts-kop word op 4 bytes vasgestel; die aanpassingsveld bestaan al dan nie, en die belangrikste funksie daarvan is om data van minder as 188 grepe in te vul; die loonvrag is pes data.
ts kop
sync_byte 8b sinchronisasie-byte, vasgestel op 0x47
transport_error_indicator 1b Transportfout-aanwyser, wat aandui dat daar 'n nuttelose byte is na die aanpassingsveld van die ts-kop, gewoonlik 0, hierdie byte word getel in die lengte van die aanpassingsveld
payload_unit_start_indicator 1b Laai-eenheid-aanwyser, wat gemerk is as 1 aan die begin van 'n volledige datapakket
vervoerprioriteit 1b Vervoerprioriteit, 0 is lae prioriteit, 1 het hoë prioriteit, gewoonlik 0
pid 13b pid waarde
transport_scrambling_control 2b Transport scrambling control, 00 beteken ongekodeer
adaptation_field_control 2b Of die aanpassingsveld ingesluit moet word, '00' is voorbehou; '01' beteken geen aanpassingsveld nie, slegs die loonvrag; '10' beteken slegs die aanpassingsveld, geen loonvrag nie; '11' beteken dat die aanpassing ook domein en loonvrag is.
continuity_counter 4b Toenemende teller, vanaf 0-f, neem die beginwaarde nie noodwendig 0 nie, maar dit moet deurlopend wees
Die inhoud van die ts-laag word geïdentifiseer deur die PID-waarde, en die hoofinhoud bevat: PAT-tabel, PMT-tabel, klankstroom en videostroom. Om die ts-stroom te ontleed, moet u eers die PAT-tabel vind, solank u die PAT vind, kan u die PMT vind, en dan kan u die klank- en videostrome vind. Die PID-waarde van die PAT-tabel is vasgestel op 0. Die PAT-tabel en die PMT-tabel moet gereeld in die ts-stroom ingevoeg word, omdat die gebruiker te eniger tyd by die ts-stroom kan aansluit, hierdie interval is relatief klein, gewoonlik elke paar videorame om PAT en PMT by te voeg. PAT- en PMT-tabelle is nodig, en ander tabelle soos SDT (diensbeskrywingstabel) kan ook bygevoeg word, maar die hls-stroom kan gespeel word solank daar PAT en PMT is.
PAT-tabel: Die belangrikste funksie daarvan is om die PID-waarde van die PMT-tabel aan te dui.
PMT-tabel: Die belangrikste funksie daarvan is om die PID-waarde van die klank- en videostroom te spesifiseer.
Klankstroom / videostroom: dra klank- en video-inhoud.
aanpassing
aanpassingsveld_lengte 1B aanpassingsveldlengte, die aantal grepe agter
vlag 1B neem 0x50 om PCR aan te dui of 0x40 om PCR nie in te sluit nie
PCR 5B Program Clock Reference, programklokverwysing, word gebruik om die stelselklok STC (System Time Clock) te herstel wat ooreenstem met die kodeerder.
stuffing_bytes xB stuffing bytes, die waarde is 0xff
Die lengte van die aanpassingsarea moet een byte insluit wat deur die transmissiefoutaanwyser geïdentifiseer word. pcr is die programklokverwysing, pcr, dts, pts is almal steekproefwaardes van dieselfde stelselklok, pcr is inkrementeel, dit kan dus as dts-waarde gestel word, klankdata het nie pcr nodig nie. As daar geen veld is nie, kan ipad speel, maar vlc kan nie speel nie. By die verpakking van die ts-stroom het die PAT- en PMT-tabelle nie 'n aanpassingsveld nie. As die lengte nie genoeg is nie, vul net 0xff in. Beide videostroom en klankstroom moet 'n aanpassingsveld byvoeg, wat gewoonlik by die eerste ts-pakket en die laaste ts-pakket van 'n raam gevoeg word, en die middelste ts-pakket word nie bygevoeg nie.
PAT-formaat
tabel_id 8b PAT-tabel is vasgestel op 0x00
section_syntax_indicator 1b is vasgestel op 1
nul 1b is vasgestel op 0
voorbehou 2b is vasgestel op 11
seksie_lengte 12b Die lengte van die volgende data
transport_stream_id 16b Transportstrom-ID, vasgestel as 0x0001
voorbehou 2b is vasgestel op 11
weergawenummer 5b Weergawenommer, vasgestel op 00000, as PAT verander, sal die weergawenommer met 1 vermeerder
current_next_indicator 1b is vasgestel op 1, wat aandui dat hierdie PAT-tabel gebruik kan word, indien dit 0 is, wag vir die volgende PAT-tabel
seksie-nommer 8b is vasgestel op 0x00
laaste_afdeling_getal 8b is vasgestel op 0x00
Begin lus
program_nummer 16b Wanneer die programnommer 0x0000 is, beteken dit dat dit NIT is, as die programnommer 0x0001 is, beteken dit dat dit PMT is
voorbehou 3b is vasgestel op 111
PID 13b PID-waarde wat ooreenstem met die inhoud van die programnommer
Einde lus
CRC32 32b CRC32 tjek kode van die vorige data
PMT-formaat
table_id 8b PMT-tabel het enige waarde, 0x02
section_syntax_indicator 1b is vasgestel op 1
nul 1b is vasgestel op 0
voorbehou 2b is vasgestel op 11
seksie_lengte 12b Die lengte van die volgende data
program_nummer 16b kanaal nommer, wat beteken die kanaal wat verband hou met die huidige PMT, die waarde is 0x0001
voorbehou 2b is vasgestel op 11
weergawenummer 5b Weergawenommer, vasgestel op 00000, as PAT verander, sal die weergawenommer met 1 vermeerder
huidige_volgaanwyser 1b is vasgestel op 1
seksie-nommer 8b is vasgestel op 0x00
laaste_afdeling_getal 8b is vasgestel op 0x00
voorbehou 3b is vasgestel op 111
PCR_PID 13b Die PID van die TS-pakket waar PCR (programverwysingsklok) is geleë, aangewys as die video-PID
voorbehou 4b is vasgestel op 1111
program_info_length 12b Programbeskrywingsinligting, aangewys as 0x000 beteken nee
Begin lus
stroom_tipe 8b Stroomtipe, merk is video of klank of ander data, h.264-kodering stem ooreen met 0x1b, aac-kodering stem ooreen met 0x0f, mp3-kodering stem ooreen met 0x03
voorbehou 3b is vasgestel op 111
elementary_PID 13b PID wat ooreenstem met stroomtipe
voorbehou 4b is vasgestel op 1111
ES_info_length 12b Beskrywingsinligting, aangewys as 0x000 beteken nee
Einde lus
CRC32 32b CRC32 tjek kode van die vorige data
(2) pes laag
Die pes-laag voeg tydstempel en ander inligting by elke video- / klankraamwerk. Die pes-pakket bevat baie inhoud, en ons laat slegs die mees gebruikte inhoud agter.
pes begin kode 3B begin kode, vasgestel op 0x000001
stroom id 1B klankwaarde (0xc0-0xdf), gewoonlik 0xc0
Videowaarde (0xe0-0xef), gewoonlik 0xe0
pes-pakketlengte 2B Die lengte van die pes-data agter, 0 beteken onbeperkte lengte,
Slegs die videodatalengte sal 0xffff oorskry
Vlag 1B neem gewoonlik die waarde 0x80, wat beteken dat die data nie geënkripteer is nie, geen prioriteit het nie en dat dit gerugsteun word
Vlag 1B waarde 0x80 beteken slegs pte, waarde 0xc0 beteken pte en dts
pes data lengte 1B Die lengte van die volgende data, die waarde is 5 of 10
pte 5B 33bit waarde
dts 5B 33bit waarde
pts is die tydstempel op die skerm en dts is die tydstempel wat dekodeer. Albei tydstempels is nodig vir videodata. Die punte en dte van klankdata is dieselfde, dus slegs pte is nodig. Daar is twee tydstempels, pts en dts, wat deur B-rame veroorsaak word. Die pte van I- en P-rame is gelyk aan dts. As 'n video geen B-rame het nie, sal pte altyd dieselfde wees as dts. Lees die videorame opeenvolgend uit die lêer en die volgorde van die onttrekte rame is dieselfde as die dts-volgorde. Die dts-algoritme is relatief eenvoudig, die beginwaarde + inkrement is genoeg, die pts-berekening is ingewikkelder en die offset moet by die dts gevoeg word.
Daar is slegs punte in die klank-pes (dieselfde as dts), die I- en P-rame van die video moet albei tydstempels hê, en die video B-raam benodig slegs pts (dieselfde as dts). Om punte en dts in te pak, moet u die tipe videorame ken, maar ons kan nie die raamtipe beoordeel volgens die houerformaat nie. U moet die inhoud van h.264 ontleed om die raamtipe te kry.
byvoorbeeld:
IPBBBP
Leesorde: 1 2 3 4 5 6
dts volgorde: 1 2 3 4 5 6
punte bestelling: 1 5 3 2 4 6
Op aanvraag video dts algoritme:
dts = aanvanklike waarde + 90000 / video_frame_rate, die aanvanklike waarde kan willekeurig gespesifiseer word, maar die beste is om nie 0 te neem nie, video_frame_rate is die raamkoers, soos 23, 30.
punte en dts is gebaseer op tydskaal, 1s = 90000 tydskaal, een raamwerk moet 90000 / video_frame_rate tydskaal wees.
Om die tydskaal van een raam deur die steekproeffrekwensie te deel, kan omgeskakel word na die afspeelduur van een raam
Op aanvraag klank dts algoritme:
dts = aanvanklike waarde + (90000 * audio_samples_per_frame) / audio_sample_rate, die waarde van audio_samples_per_frame is verwant aan die codec, aac-waarde is 1024, mp3-waarde is 1158, audio_sample_rate is die sampling rate, soos 24000, 41000. AAC dekodeer 'n raam van 1024 monsters per kanaal, wat beteken dat die duur van 'n raam 1024 / sample_rate sekondes is. Die tydstempel van elke raam is dus 0, 1024 / sample_rate, ..., 1024 * n / sample_rate seconds.
Die dts en pts van die regstreekse video moet die tyd in die regstreekse datastroom direk gebruik, en moet nie deur formules bereken word nie.
(3) se laag
Die es-laag verwys na klank- en videodata, ons voer slegs h.264 video- en aac-klank in.
h.264-video:
Om die h.264-data in te pak, moet ons 'n nalu (Network Abstraction Layer-eenheid) by die videodata voeg. Die nalu bevat die nalu-opskrif en die nalu-tipe. Die nalu-opskrif is vasgestel op 0x00000001 (begin van raam) of 0x000001 (in raam). Die data van h.264 bestaan uit skywe en die inhoud van skywe bevat: video, sps, pps, ens. Die nalu-tipe bepaal die inhoud van die daaropvolgende h.264-data.
F 1b verbode_zero_bit, h.264 bepaal dat dit 0 moet wees
NRI 2b nal_ref_idc, waarde 0 ~ 3, dui die belangrikheid van hierdie nalu aan, I raam, sps, pps neem gewoonlik 3, P raam neem gewoonlik 2, en B raam neem gewoonlik 0
Tik 5b verwys na die onderstaande tabel
nal_unit_type beskrywing
0 nie gebruik nie
1 Nie-IDR-beeld, IDR verwys na sleutelraamwerk
2 sny partisie A
3 sny partisie B
|
Voer e-posadres in om 'n verrassing te kry
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikaans
sq.fmuser.org -> Albanees
ar.fmuser.org -> Arabies
hy.fmuser.org -> Armeens
az.fmuser.org -> Azerbeidjans
eu.fmuser.org -> Baskies
be.fmuser.org -> Belo-Russies
bg.fmuser.org -> Bulgaars
ca.fmuser.org -> Katalaans
zh-CN.fmuser.org -> Chinees (vereenvoudig)
zh-TW.fmuser.org -> Sjinees (Tradisioneel)
hr.fmuser.org -> Kroaties
cs.fmuser.org -> Tsjeggies
da.fmuser.org -> Deens
nl.fmuser.org -> Nederlandse
et.fmuser.org -> Esties
tl.fmuser.org -> Filippyns
fi.fmuser.org -> Fins
fr.fmuser.org -> Franse
gl.fmuser.org -> Galisies
ka.fmuser.org -> Georgies
de.fmuser.org -> Duits
el.fmuser.org -> Grieks
ht.fmuser.org -> Haïtiaanse kreool
iw.fmuser.org -> Hebreeus
hi.fmuser.org -> Hindi
hu.fmuser.org -> Hungarian
is.fmuser.org -> Yslands
id.fmuser.org -> Indonesies
ga.fmuser.org -> Iers
it.fmuser.org -> Italiaanse
ja.fmuser.org -> Japannees
ko.fmuser.org -> Koreaans
lv.fmuser.org -> Lets
lt.fmuser.org -> Litaus
mk.fmuser.org -> Masedonies
ms.fmuser.org -> Maleis
mt.fmuser.org -> Maltees
no.fmuser.org -> Noorse
fa.fmuser.org -> Persies
pl.fmuser.org -> Pools
pt.fmuser.org -> Portugees
ro.fmuser.org -> Roemeens
ru.fmuser.org -> Russies
sr.fmuser.org -> Serwies
sk.fmuser.org -> Slowaaks
sl.fmuser.org -> Sloveens
es.fmuser.org -> Spaans
sw.fmuser.org -> Swahili
sv.fmuser.org -> Sweeds
th.fmuser.org -> Thai
tr.fmuser.org -> Turks
uk.fmuser.org -> Oekraïens
ur.fmuser.org -> Oerdoe
vi.fmuser.org -> Viëtnamees
cy.fmuser.org -> Wallies
yi.fmuser.org -> Jiddisj
FMUSER Wirless stuur video en klank makliker toe!
Kontak Ons
adres:
No.305 Kamer HuiLan-gebou No.273 Huanpu-weg Guangzhou China 510620
kategorieë
Nuusbrief