FMUSER Wirless lähettää videota ja ääntä helpommin!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikaans
sq.fmuser.org -> albania
ar.fmuser.org -> arabia
hy.fmuser.org -> Armenian
az.fmuser.org -> azerbaidžanilainen
eu.fmuser.org -> baski
be.fmuser.org -> valkovenäläinen
bg.fmuser.org -> Bulgaria
ca.fmuser.org -> katalaani
zh-CN.fmuser.org -> kiina (yksinkertaistettu)
zh-TW.fmuser.org -> Kiina (perinteinen)
hr.fmuser.org -> kroatia
cs.fmuser.org -> tšekki
da.fmuser.org -> tanska
nl.fmuser.org -> Dutch
et.fmuser.org -> viro
tl.fmuser.org -> filippiiniläinen
fi.fmuser.org -> suomi
fr.fmuser.org -> French
gl.fmuser.org -> galicialainen
ka.fmuser.org -> Georgian
de.fmuser.org -> saksa
el.fmuser.org -> Greek
ht.fmuser.org -> Haitin kreoli
iw.fmuser.org -> heprea
hi.fmuser.org -> Hindi
hu.fmuser.org -> Unkari
is.fmuser.org -> islanti
id.fmuser.org -> indonesia
ga.fmuser.org -> irlantilainen
it.fmuser.org -> Italian
ja.fmuser.org -> japani
ko.fmuser.org -> korea
lv.fmuser.org -> latvia
lt.fmuser.org -> Liettua
mk.fmuser.org -> makedonia
ms.fmuser.org -> malaiji
mt.fmuser.org -> maltalainen
no.fmuser.org -> Norja
fa.fmuser.org -> persia
pl.fmuser.org -> puola
pt.fmuser.org -> portugali
ro.fmuser.org -> Romania
ru.fmuser.org -> venäjä
sr.fmuser.org -> serbia
sk.fmuser.org -> slovakki
sl.fmuser.org -> Slovenian
es.fmuser.org -> espanja
sw.fmuser.org -> swahili
sv.fmuser.org -> ruotsi
th.fmuser.org -> Thai
tr.fmuser.org -> turkki
uk.fmuser.org -> ukraina
ur.fmuser.org -> urdu
vi.fmuser.org -> Vietnam
cy.fmuser.org -> kymri
yi.fmuser.org -> Jiddiš
Muutama päivä sitten vietin jonkin aikaa tutkimaan HTTP-suoratoisto (HLS) -tekniikkaa ja toteuttamaan HLS-kooderin, hlsliveencoderin, kirjoitettuna C + +: lla. Sen tehtävänä on kaapata kamera ja mikrofoni, reaaliaikainen H.264-videokoodaus ja aac-äänikoodaus ja tuottaa HLS-protokollan määrittelyn mukaan segmentoitu vakio TS-tiedosto ja m3u8-hakemistotiedosto. Hlsliveencoderin ja kolmannen osapuolen HTTP-palvelimen (kuten nginx) kautta saimme onnistuneesti HTTP-suoratoiston ja läpäisimme testin iPhonessa. Kirjoitan joitain voittoja tähän.
1. HLS-tekniikan analyysi
HTTP-suoratoisto (HLS) on suoratoistovälineiden siirtoprotokolla, joka perustuu Apple Inc.:n toteuttamaan HTTP: hen, joka pystyy toteuttamaan suoraa ja tilattavaa suoratoistovälinettä. Sitä käytetään pääasiassa IOS-järjestelmässä ääni- ja videolähetysten ja tilattavien ratkaisujen tarjoamiseen IOS-laitteille (kuten iPhone ja iPad). HLS on demand on periaatteessa yleinen segmentoitu HTTP on demand. Erona on, että sen segmentit ovat hyvin pieniä. HLS: n toteuttamiseksi kysynnän mukaan avain on mediatiedostojen segmentointi. Tällä hetkellä käytettävissä on monia avoimen lähdekoodin työkaluja. En keskustele siitä täällä, puhu vain HLS: n suoralähetystekniikasta.
Verrattuna yleisiin suoratoistoprotokolliin, kuten RTMP-protokolla, RTSP-protokolla, MMS-protokolla ja niin edelleen, HLS-suoratoiston suurin ero on, että live-asiakas ei saa täydellistä tietovirtaa. HLS-protokolla tallentaa suoran datavirran jatkuvina, lyhytaikaisina ja pitkinä mediatiedostoina (mpeg-ts-muodossa) palvelinpuolelle, kun taas asiakaspuoli lataa ja toistaa näitä pieniä tiedostoja jatkuvasti, koska palvelinpuoli luo aina uusia pieniä tiedostoja viimeisimmät reaaliaikaiset tiedot, joten asiakaspuolen tarvitsee vain toistaa palvelimelta hankittuja tiedostoja suoran toteuttamiseksi. Voidaan nähdä, että HLS toteuttaa periaatteessa suoraa lähetystä VOD-tekniikan avulla. Koska tiedot välitetään HTTP-protokollan kautta, palomuurin tai välityspalvelimen ongelmaa ei tarvitse ottaa huomioon, ja tiedostojen segmentointiaika on hyvin lyhyt. Asiakas voi nopeasti valita ja vaihtaa koodinopeuden sopeutuakseen toistoon eri kaistanleveysolosuhteissa. HLS: n teknisten ominaisuuksien vuoksi sen viive on kuitenkin aina suurempi kuin tavallisen suoratoistoprotokollan.
Edellä mainitun käsityksen mukaan meidän on tutkittava ja toteutettava seuraavat keskeiset tekniikat saavuttaaksemme HTTP-suoratoiston suorana lähetyksenä.
(1) Kerää videolähteen ja äänilähteen tiedot
(2) Alkuperäiset tiedot koodaa H264 ja AAC
(3) Video- ja äänitiedot pakataan MPEG-TS-paketteina
(4) HLS-segmentoinnin luomisstrategia ja m3u8-hakemistotiedosto
2. HTTP-siirtoprotokolla
Niistä ensimmäinen ja toinen kohta on mainittu edellisessä artikkelissani, ja viimeinen asia on, että voimme käyttää olemassa olevaa HTTP-palvelinta, joten kolmannen ja neljännen pisteen toteutus on avain.
(1) Ohjelmakehys ja toteutus
Edellä esitetyn analyysin avulla HLS-live-kooderin logiikka ja prosessi ovat periaatteessa selkeät: aloita ääni- ja videokoodauslanka, suorita ääni- ja videohankinta DirectShow (tai muun) tekniikan avulla ja soita sitten libx264: lle ja libfaac: lle videoille ja äänikoodaus. Sen jälkeen kun nämä kaksi koodauslankaa koodaavat ääni- ja videotiedot reaaliajassa, ne tallentavat ne mpeg-ts-muotoiseen segmenttitiedostoon mukautetun ositusstrategian mukaisesti. Kun segmenttitiedosto on tallennettu, m3u8-hakemistotiedosto päivitetään. Kuten alla olevassa kuvassa näkyy:
Yllä olevassa kuvassa hlsliveencoderin on video- ja äänidatan vastaanottamisen jälkeen ensin määritettävä, onko nykyisen osion lopetettava, ja luotava uusi osio jatkuvan TS-osion luomisen jatkamiseksi. On huomattava, että uuden pirstoutumisen tulisi alkaa avainkehyksestä estääkseen soitinta dekoodauksen epäonnistumisesta. Ydinkoodi on seuraava:
Tsmuxerin käyttöliittymä on myös suhteellisen yksinkertainen.
(2) HLS-segmentin luomisstrategia ja m3u8
① Segmentointistrategia
HLS: n segmentointistrategiaa suositellaan periaatteessa jakamaan 10 sekunnin välein. Tietysti kellonaika tulisi merkitä jaon todellisen pituuden mukaan
Yleisesti ottaen välimuistin ja muiden syiden vuoksi viimeisimmät kolme fragmenttiosoitetta säilytetään hakemistotiedostossa ja päivitetään "liukuvan ikkunan" muodossa.
② m3u8-tiedoston esittely
M3u8 on HTTP-suoratoiston hakemistotiedosto. M3u8: ta voidaan pitää. M3U-muotoinen tiedosto on periaatteessa ero siinä, että m3u8-tiedosto käyttää UTF-8-merkkikoodausta.
Kopioi koodi
# Extm3u M3U-tiedoston otsikko on sijoitettava ensimmäiselle riville
# Ext-x-media-sekvenssin ensimmäisen TS-segmentin sarjanumero
# Ext-x-targetduration kunkin TS-segmentin enimmäiskesto
#Sallii ext-x-allow-cache välimuistin
#End of ext-x-endlist m3u8 -tiedosto
#Extinf lisätiedot, jaettujen osien tiedot, kuten kesto, kaistanleveys jne
|
Kirjoita sähköpostiosoite saadaksesi yllätyksen
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikaans
sq.fmuser.org -> albania
ar.fmuser.org -> arabia
hy.fmuser.org -> Armenian
az.fmuser.org -> azerbaidžanilainen
eu.fmuser.org -> baski
be.fmuser.org -> valkovenäläinen
bg.fmuser.org -> Bulgaria
ca.fmuser.org -> katalaani
zh-CN.fmuser.org -> kiina (yksinkertaistettu)
zh-TW.fmuser.org -> Kiina (perinteinen)
hr.fmuser.org -> kroatia
cs.fmuser.org -> tšekki
da.fmuser.org -> tanska
nl.fmuser.org -> Dutch
et.fmuser.org -> viro
tl.fmuser.org -> filippiiniläinen
fi.fmuser.org -> suomi
fr.fmuser.org -> French
gl.fmuser.org -> galicialainen
ka.fmuser.org -> Georgian
de.fmuser.org -> saksa
el.fmuser.org -> Greek
ht.fmuser.org -> Haitin kreoli
iw.fmuser.org -> heprea
hi.fmuser.org -> Hindi
hu.fmuser.org -> Unkari
is.fmuser.org -> islanti
id.fmuser.org -> indonesia
ga.fmuser.org -> irlantilainen
it.fmuser.org -> Italian
ja.fmuser.org -> japani
ko.fmuser.org -> korea
lv.fmuser.org -> latvia
lt.fmuser.org -> Liettua
mk.fmuser.org -> makedonia
ms.fmuser.org -> malaiji
mt.fmuser.org -> maltalainen
no.fmuser.org -> Norja
fa.fmuser.org -> persia
pl.fmuser.org -> puola
pt.fmuser.org -> portugali
ro.fmuser.org -> Romania
ru.fmuser.org -> venäjä
sr.fmuser.org -> serbia
sk.fmuser.org -> slovakki
sl.fmuser.org -> Slovenian
es.fmuser.org -> espanja
sw.fmuser.org -> swahili
sv.fmuser.org -> ruotsi
th.fmuser.org -> Thai
tr.fmuser.org -> turkki
uk.fmuser.org -> ukraina
ur.fmuser.org -> urdu
vi.fmuser.org -> Vietnam
cy.fmuser.org -> kymri
yi.fmuser.org -> Jiddiš
FMUSER Wirless lähettää videota ja ääntä helpommin!
Ota yhteyttä
Osoite:
Nro 305 huone HuiLan-rakennus nro 273 Huanpu Road Guangzhou Kiina 510620
Kategoriat
Uutiskirje