Ang FMUSER Wirless ay Naghahatid ng Video At Audio Nang Mas Madali!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikaans
sq.fmuser.org -> Albanian
ar.fmuser.org -> Arabe
hy.fmuser.org -> Armenian
az.fmuser.org -> Azerbaijani
eu.fmuser.org -> Basque
be.fmuser.org -> Belarusian
bg.fmuser.org -> Bulgarian
ca.fmuser.org -> Catalan
zh-CN.fmuser.org -> Intsik (Pinasimple)
zh-TW.fmuser.org -> Intsik (Tradisyunal)
hr.fmuser.org -> Croatian
cs.fmuser.org -> Czech
da.fmuser.org -> Danish
nl.fmuser.org -> Dutch
et.fmuser.org -> Estonian
tl.fmuser.org -> Pilipino
fi.fmuser.org -> Finnish
fr.fmuser.org -> Pranses
gl.fmuser.org -> Galician
ka.fmuser.org -> Georgian
de.fmuser.org -> Aleman
el.fmuser.org -> Greek
ht.fmuser.org -> Haitian Creole
iw.fmuser.org -> Hebrew
hi.fmuser.org -> Hindi
hu.fmuser.org -> Hungarian
is.fmuser.org -> Icelandic
id.fmuser.org -> Indonesian
ga.fmuser.org -> Irish
it.fmuser.org -> Italian
ja.fmuser.org -> Japanese
ko.fmuser.org -> Koreano
lv.fmuser.org -> Latvian
lt.fmuser.org -> Lithuanian
mk.fmuser.org -> Macedonian
ms.fmuser.org -> Malay
mt.fmuser.org -> Maltese
no.fmuser.org -> Norwegian
fa.fmuser.org -> Persian
pl.fmuser.org -> Polish
pt.fmuser.org -> Portuges
ro.fmuser.org -> Romanian
ru.fmuser.org -> Ruso
sr.fmuser.org -> Serbiano
sk.fmuser.org -> Slovak
sl.fmuser.org -> Slovenian
es.fmuser.org -> Espanyol
sw.fmuser.org -> Swahili
sv.fmuser.org -> Suweko
th.fmuser.org -> Thai
tr.fmuser.org -> Turkish
uk.fmuser.org -> Ukrainian
ur.fmuser.org -> Urdu
vi.fmuser.org -> Vietnamese
cy.fmuser.org -> Welsh
yi.fmuser.org -> Yiddish
Ang HLS at Http Live Streaming ay mga protokol para sa real-time streaming na tinukoy ng Apple. Ang HLS ay ipinatupad batay sa HTTP protocol. Ang nilalaman ng paghahatid ay may kasamang dalawang bahagi, ang isa ay ang M3U8 file ng paglalarawan, at ang isa pa ay ang TS media file.
1. M3U8 file
Ang file ng media ay inilarawan sa teksto, na binubuo ng isang serye ng mga tag.
#EXTM3U
# EXT-X-TARGETDURATION: 5
#EXTINF: 5,
./0.ts
#EXTINF: 5,
./1.ts
# EXTM3U: Ang unang linya ng bawat file na M3U8 ay dapat ang tag na ito.
# EXT-X-TARGETDURATION: Tukuyin ang maximum na haba ng haba ng segment ng media (segundo). Ang haba ng oras na tinukoy sa #EXTINF ay dapat na mas mababa sa o katumbas ng maximum na halagang ito. Ang halagang ito ay maaari lamang lumitaw nang isang beses.
#EXTINF: Ilarawan ang haba ng isang solong file ng media. Sumusunod ang mga file ng media, tulad ng ./0.ts
2. ts file
Ang ts file ay isang file ng transport stream, ang pangunahing format ng pag-coding ng video ay h264 / mpeg4, at ang audio ay acc / MP3.
Ang ts file ay nahahati sa tatlong mga layer: ts layer Transport Stream, pes layer Packet Elemental Stream, es layer Elementary Stream. Ang layer ng es ay ang data ng audio at video, at ang layer ng pes ay ang impormasyon ng paglalarawan ng frame ng data tulad ng isang timestamp na idinagdag sa data ng audio at video. Ang ts layer ay upang idagdag ang kinakailangang impormasyon para sa pagkilala at paghahatid ng data stream sa pes layer
Tandaan: Ang mga detalye ay ang mga sumusunod
(1) ts layer Ang laki ng ts packet ay naayos sa 188 bytes, at ang ts layer ay nahahati sa tatlong bahagi: ts header, adaptation field, at payload. Ang ts header ay naayos sa 4 bytes; ang patlang ng pagbagay ay maaaring mayroon o hindi, at ang pangunahing pag-andar nito ay upang punan ang data na mas mababa sa 188 bytes; ang bayad ay pes data.
ts header
Ang sync_byte 8b syncingization byte, naayos sa 0x47
transport_error_indicator 1b tagapagpahiwatig ng error sa transportasyon, na nagpapahiwatig na mayroong isang walang silbi na byte pagkatapos ng umaangkop na patlang ng ts header, karaniwang 0, ang byte na ito ay binibilang sa haba ng umaangkop na patlang
payload_unit_start_indicator 1b Tagapagpahiwatig ng pagsisimula ng yunit, na minarkahan bilang 1 sa simula ng isang kumpletong packet ng data
transport_priority 1b Priority sa transportasyon, 0 ay mababang priyoridad, 1 ang mataas na prayoridad, karaniwang 0
pid 13b halaga ng pid
transport_scrambling_control 2b Transport scrambling control, 00 ay nangangahulugang hindi naka-encrypt
adaptation_field_control 2b Kung isasama ang patlang ng pagbagay, '00' ay nakalaan; Ang ibig sabihin ng '01' walang patlang na pagbagay, ang payload lamang; Ang ibig sabihin ng '10' ay lamang ang larangan ng pagbagay, walang payload; Ang ibig sabihin ng '11' na ang pagbagay ay kasama din sa Domain at payload.
pagpapatuloy_counter 4b Ang pagtaas ng counter, mula sa 0-f, ang panimulang halaga ay hindi kinakailangang tumagal ng 0, ngunit dapat itong maging tuloy-tuloy
Ang nilalaman ng layer ng ts ay kinilala ng halaga ng PID, at ang pangunahing nilalaman ay may kasamang: Talahanayan ng PAT, talahanayan ng PMT, audio stream, at stream ng video. Upang mai-parse ang ts stream, dapat mo munang makita ang talahanayan ng PAT, hangga't nakita mo ang PAT, mahahanap mo ang PMT, at pagkatapos ay mahahanap mo ang mga audio at stream ng video. Ang halaga ng PID ng talahanayan ng PAT ay naayos sa 0. Ang talahanayan ng PAT at ang talahanayan ng PMT ay kailangang ipasok nang regular sa ts stream, dahil maaaring sumali ang gumagamit sa ts stream sa anumang oras, ang agwat na ito ay medyo maliit, kadalasan bawat iilan mga frame ng video upang magdagdag ng PAT at PMT. Ang mga talahanayan ng PAT at PMT ay kinakailangan, at iba pang mga talahanayan tulad ng SDT (talahanayan ng paglalarawan ng serbisyo) ay maaari ring idagdag, ngunit ang stream ng hls ay maaaring i-play hangga't may PAT at PMT.
Talaan ng PAT: Ang pangunahing pagpapaandar nito ay upang ipahiwatig ang halaga ng PID ng talahanayan ng PMT.
Talahanayan ng PMT: Ang pangunahing pagpapaandar nito ay upang tukuyin ang halaga ng PID ng audio at stream ng video.
Audio stream / stream ng video: Magdala ng nilalaman ng audio at video.
pagbagay
adaptation_field_length 1B haba ng patlang ng pagbagay, ang bilang ng mga byte sa likuran
ang flag 1B ay tumatagal ng 0x50 upang ipahiwatig ang PCR o 0x40 upang hindi isama ang PCR
Ang PCR 5B Program Clock Reference, sanggunian ng programa ng orasan, ginamit upang mabawi ang orasan ng system na STC (System Time Clock) na naaayon sa encoder.
stuffing_bytes xB stuffing bytes, ang halaga ay 0xff
Ang haba ng lugar ng pagbagay ay dapat magsama ng isang byte na kinilala ng tagapagpahiwatig ng error sa paghahatid. Ang pcr ay ang sanggunian ng orasan ng programa, pcr, dts, pts ay lahat ng mga halimbawang halimbawang halaga ng parehong orasan ng system, pcr ay dagdagan, kaya't maitatakda ito bilang halaga ng dts, ang audio data ay hindi nangangailangan ng pcr. Kung walang patlang, ang ipad ay maaaring maglaro, ngunit ang vlc ay hindi maaaring maglaro. Kapag nag-iimpake ng ts stream, ang mga talahanayan ng PAT at PMT ay walang larangan ng pagbagay. Kung ang haba ay hindi sapat, punan lamang ang 0xff. Ang parehong video stream at audio stream ay kailangang magdagdag ng isang patlang ng pagbagay, na karaniwang idinagdag sa unang ts packet at ang huling ts packet ng isang frame, at ang gitnang ts packet ay hindi naidagdag.
Format ng PAT
table_id 8b PAT table ay naayos sa 0x00
section_syntax_indicator 1b ay naayos sa 1
ang zero 1b ay naayos sa 0
ang nakareserba na 2b ay naayos sa 11
section_length 12b Ang haba ng sumusunod na data
transport_stream_id 16b Transport stream ID, naayos bilang 0x0001
ang nakareserba na 2b ay naayos sa 11
bersyon_number 5b Numero ng bersyon, naayos sa 00000, kung nagbabago ang PAT, tataas ng 1 ang numero ng bersyon
ang kasalukuyang_next_indicator 1b ay naayos sa 1, na nagpapahiwatig na ang talahanayan na PAT na ito ay maaaring magamit, kung ito ay 0, maghintay para sa susunod na talahanayan ng PAT
section_number 8b ay naayos sa 0x00
ang last_section_number 8b ay naayos sa 0x00
Simula loop
program_number 16b Kapag ang numero ng programa ay 0x0000, nangangahulugan ito na ito ay NIT, kapag ang numero ng programa ay 0x0001, nangangahulugan ito na ito ay PMT
ang nakareserba na 3b ay naayos sa 111
Ang halaga ng PID 13b PID na naaayon sa nilalaman ng numero ng programa
Tapusin ang loop
CRC32 32b CRC32 check code ng nakaraang data
Format ng PMT
table_id 8b PMT table ay mayroong anumang halaga, 0x02
section_syntax_indicator 1b ay naayos sa 1
ang zero 1b ay naayos sa 0
ang nakareserba na 2b ay naayos sa 11
section_length 12b Ang haba ng sumusunod na data
program_number 16b numero ng channel, na nangangahulugang ang channel na nauugnay sa kasalukuyang PMT, ang halaga ay 0x0001
ang nakareserba na 2b ay naayos sa 11
bersyon_number 5b Numero ng bersyon, naayos sa 00000, kung nagbabago ang PAT, tataas ng 1 ang numero ng bersyon
ang kasalukuyang_next_indicator 1b ay naayos sa 1
section_number 8b ay naayos sa 0x00
ang last_section_number 8b ay naayos sa 0x00
ang nakareserba na 3b ay naayos sa 111
PCR_PID 13b Ang PID ng TS packet kung saan matatagpuan ang PCR (programa ng orasan ng sanggunian), na itinalaga bilang video na PID
ang nakareserba na 4b ay naayos sa 1111
program_info_length 12b Ang impormasyon sa paglalarawan ng programa, na itinalaga bilang 0x000 ay nangangahulugang hindi
Simula loop
stream_type 8b Uri ng stream, marka ay Video o Audio o ibang data, h.264 encoding ay tumutugma sa 0x1b, ang encoding ng aac ay tumutugma sa 0x0f, ang encoding ng mp3 ay tumutugma sa 0x03
ang nakareserba na 3b ay naayos sa 111
elementarya_PID 13b PID naaayon sa stream_type
ang nakareserba na 4b ay naayos sa 1111
Ang ES_info_length 12b na impormasyon sa paglalarawan, na itinalaga bilang 0x000 ay nangangahulugang hindi
Tapusin ang loop
CRC32 32b CRC32 check code ng nakaraang data
(2) layer ng pes
Ang layer ng pes ay nagdaragdag ng time stamp at iba pang impormasyon sa bawat video / audio frame. Naglalaman ang paketeng pes ng maraming nilalaman, at iniiwan lamang namin ang mga pinaka-karaniwang ginagamit.
pes start code 3B start code, naayos sa 0x000001
stream id 1B audio halaga (0xc0-0xdf), karaniwang 0xc0
Halaga ng video (0xe0-0xef), karaniwang 0xe0
haba ng pes packet 2B Ang haba ng data ng pes sa likod, 0 ay nangangahulugang walang limitasyong haba,
Ang haba lang ng data ng video ang lalampas sa 0xffff
Karaniwang tumatagal ang flag na 1B ng halagang 0x80, na nangangahulugang ang data ay hindi naka-encrypt, walang prayoridad, at nai-back up na data
Ang halagang flag ng 1B na 0x80 ay nangangahulugang mga pts lamang, ang halaga na 0xc0 ay nangangahulugang mga pts at dts
pes data haba 1B Ang haba ng mga sumusunod na data, ang halaga ay 5 o 10
pts 5B 33bit na halaga
dts 5B 33bit na halaga
Ang pts ay ang display timestamp at ang dts ay ang decoding timestamp. Ang parehong mga timestamp ay kinakailangan para sa data ng video. Ang mga pts at dts ng audio data ay pareho, kaya ang mga pts lamang ang kailangan. Mayroong dalawang mga timestamp, pts at dts, na sanhi ng mga B frame. Ang mga pts ng I at P na mga frame ay katumbas ng dts. Kung ang isang video ay walang mga frame na B, ang mga pts ay laging kapareho ng mga dts. Basahin nang sunud-sunod ang mga frame ng video mula sa file, at ang pagkakasunud-sunod ng mga nakuha na frame ay pareho sa pagkakasunud-sunod ng dts. Ang dts algorithm ay medyo simple, ang paunang halaga + pagtaas, sapat na, ang pagkalkula ng pts ay mas kumplikado, at ang offset ay kailangang idagdag sa mga dts.
Mayroon lamang mga pts sa audio pes (kapareho ng dts), ang mga frame na I at P ng video ay dapat magkaroon ng parehong timestamp, at ang frame ng video B ay nangangailangan lamang ng mga pts (katulad ng dts). Upang mag-pack ng mga pts at dts, kailangan mong malaman ang uri ng frame ng video, ngunit hindi namin maaaring hatulan ang uri ng frame sa pamamagitan ng format ng lalagyan. Dapat mong i-parse ang nilalamang h.264 upang makuha ang uri ng frame.
halimbawa:
IPBBBP
Pagkakasunud-sunod sa pagbasa: 1 2 3 4 5 6
dts order: 1 2 3 4 5 6
order ng pts: 1 5 3 2 4 6
Alisin ang algorithm ng dts ng video:
dts = paunang halaga + 90000 / video_frame_rate, ang paunang halaga ay maaaring arbitraryong tinukoy, ngunit pinakamahusay na huwag kumuha ng 0, ang video_frame_rate ay ang rate ng frame, tulad ng 23, 30.
Ang mga pts at dts ay batay sa timescale, 1s = 90000 time scale, isang frame ay dapat na 90000 / video_frame_rate na timecale.
Ang paghahati ng timecale ng isang frame sa pamamagitan ng dalas ng sampling ay maaaring mai-convert sa tagal ng pag-playback ng isang frame
On-demand na audio dts algorithm:
dts = paunang halaga + (90000 * audio_samples_per_frame) / audio_sample_rate, ang halaga ng audio_samples_per_frame ay nauugnay sa codec, ang halaga ng aac ay 1024, ang halaga ng mp3 ay 1158, ang audio_sample_rate ay ang rate ng pag-sample, tulad ng 24000, 41000. Ang AAC ay nag-decode ng isang frame ng 1024 na mga sample bawat channel, na nangangahulugang ang tagal ng isang frame ay 1024 / sample_rate segundo. Kaya't ang timestamp ng bawat frame ay 0, 1024 / sample_rate, ..., 1024 * n / sample_rate segundo.
Dapat na direktang gamitin ng mga dts at pts ng live na video ang oras sa live data stream, at hindi dapat kalkulahin ng mga formula.
(3) ang layer
Ang layer ng es ay tumutukoy sa data ng audio at video, ipinapakilala lamang namin ang h.264 video at aac audio.
h.264 na video:
Upang ma-pack ang data ng h.264, dapat kaming magdagdag ng isang nalu (Network Abstraction Layer unit) sa data ng video. Kasama sa nalu ang nalu header at ang uri ng nalu. Ang header ng nalu ay naayos sa 0x00000001 (pagsisimula ng frame) o 0x000001 (sa frame). Ang data ng h.264 ay binubuo ng mga hiwa, at ang mga nilalaman ng mga hiwa ay kinabibilangan ng: video, sps, pps, atbp. Tinutukoy ng uri ng nalu ang nilalaman ng kasunod na data ng h.264.
F 1b ipinagbabawal_zero_bit, h.264 ay nagtatakda na dapat itong 0
Ang NRI 2b nal_ref_idc, ang halaga 0 ~ 3, ay nagpapahiwatig ng kahalagahan ng nalu na ito, ang frame ko, sps, pps ay karaniwang tumatagal ng 3, P frame ay karaniwang tumatagal ng 2, at ang B frame ay karaniwang tumatagal ng 0
I-type ang 5b sumangguni sa talahanayan sa ibaba
paglalarawan ng nal_unit_type
0 hindi nagamit
1 Hindi-IDR na imahe, ang IDR ay tumutukoy sa key frame
2 hiwa ng pagkahati A
3 hiwa ng pagkahati B
|
Ipasok ang email upang makakuha ng sorpresa
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikaans
sq.fmuser.org -> Albanian
ar.fmuser.org -> Arabe
hy.fmuser.org -> Armenian
az.fmuser.org -> Azerbaijani
eu.fmuser.org -> Basque
be.fmuser.org -> Belarusian
bg.fmuser.org -> Bulgarian
ca.fmuser.org -> Catalan
zh-CN.fmuser.org -> Intsik (Pinasimple)
zh-TW.fmuser.org -> Intsik (Tradisyunal)
hr.fmuser.org -> Croatian
cs.fmuser.org -> Czech
da.fmuser.org -> Danish
nl.fmuser.org -> Dutch
et.fmuser.org -> Estonian
tl.fmuser.org -> Pilipino
fi.fmuser.org -> Finnish
fr.fmuser.org -> Pranses
gl.fmuser.org -> Galician
ka.fmuser.org -> Georgian
de.fmuser.org -> Aleman
el.fmuser.org -> Greek
ht.fmuser.org -> Haitian Creole
iw.fmuser.org -> Hebrew
hi.fmuser.org -> Hindi
hu.fmuser.org -> Hungarian
is.fmuser.org -> Icelandic
id.fmuser.org -> Indonesian
ga.fmuser.org -> Irish
it.fmuser.org -> Italian
ja.fmuser.org -> Japanese
ko.fmuser.org -> Koreano
lv.fmuser.org -> Latvian
lt.fmuser.org -> Lithuanian
mk.fmuser.org -> Macedonian
ms.fmuser.org -> Malay
mt.fmuser.org -> Maltese
no.fmuser.org -> Norwegian
fa.fmuser.org -> Persian
pl.fmuser.org -> Polish
pt.fmuser.org -> Portuges
ro.fmuser.org -> Romanian
ru.fmuser.org -> Ruso
sr.fmuser.org -> Serbiano
sk.fmuser.org -> Slovak
sl.fmuser.org -> Slovenian
es.fmuser.org -> Espanyol
sw.fmuser.org -> Swahili
sv.fmuser.org -> Suweko
th.fmuser.org -> Thai
tr.fmuser.org -> Turkish
uk.fmuser.org -> Ukrainian
ur.fmuser.org -> Urdu
vi.fmuser.org -> Vietnamese
cy.fmuser.org -> Welsh
yi.fmuser.org -> Yiddish
Ang FMUSER Wirless ay Naghahatid ng Video At Audio Nang Mas Madali!
Makipag-ugnay sa
Tirahan
No.305 Room Huilan Building No.273 Huanpu Road Guangzhou China 510620
Kategorya
Newsletter