FMUSER Wirless Verzend video en audio eenvoudiger!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikaans
sq.fmuser.org -> Albanees
ar.fmuser.org -> Arabisch
hy.fmuser.org -> Armenian
az.fmuser.org -> Azerbeidzjaans
eu.fmuser.org -> Baskisch
be.fmuser.org -> Wit-Russisch
bg.fmuser.org -> Bulgarian
ca.fmuser.org -> Catalaans
zh-CN.fmuser.org -> Chinees (vereenvoudigd)
zh-TW.fmuser.org -> Chinees (traditioneel)
hr.fmuser.org -> Kroatisch
cs.fmuser.org -> Tsjechisch
da.fmuser.org -> Deens
nl.fmuser.org -> Nederlands
et.fmuser.org -> Ests
tl.fmuser.org -> Filipijns
fi.fmuser.org -> Fins
fr.fmuser.org -> Frans
gl.fmuser.org -> Galicisch
ka.fmuser.org -> Georgisch
de.fmuser.org -> Duits
el.fmuser.org -> Greek
ht.fmuser.org -> Haïtiaans Creools
iw.fmuser.org -> Hebreeuws
hi.fmuser.org -> Hindi
hu.fmuser.org -> Hungarian
is.fmuser.org -> IJslands
id.fmuser.org -> Indonesisch
ga.fmuser.org -> Iers
it.fmuser.org -> Italian
ja.fmuser.org -> Japans
ko.fmuser.org -> Koreaans
lv.fmuser.org -> Lets
lt.fmuser.org -> Lithuanian
mk.fmuser.org -> Macedonisch
ms.fmuser.org -> Maleis
mt.fmuser.org -> Maltees
no.fmuser.org -> Norwegian
fa.fmuser.org -> Perzisch
pl.fmuser.org -> Pools
pt.fmuser.org -> Portugees
ro.fmuser.org -> Roemeens
ru.fmuser.org -> Russisch
sr.fmuser.org -> Servisch
sk.fmuser.org -> Slowaaks
sl.fmuser.org -> Slovenian
es.fmuser.org -> Spaans
sw.fmuser.org -> Swahili
sv.fmuser.org -> Zweeds
th.fmuser.org -> Thai
tr.fmuser.org -> Turks
uk.fmuser.org -> Oekraïens
ur.fmuser.org -> Urdu
vi.fmuser.org -> Vietnamese
cy.fmuser.org -> Welsh
yi.fmuser.org -> Jiddisch
achtergrond
MP4 is ons gangbare videoformaat, en vaak als we servervideo's afspelen, is dit direct de gevraagde MP4-videobron. Maar in feite is dit niet goed. Het MP4-headerbestand [ftyp + moov] is groot, en bij de eerste weergave moet het volledige headerbestand worden gedownload en geanalyseerd, en vervolgens moet een afspeelbare videoclip van een bepaalde lengte worden gedownload om af te spelen. Bovendien, als de grootte van de video toeneemt, zal het header-bestand blijven groeien en zal de aanvankelijke afspeeltijd langer zijn. Gezien deze situatie is een methode nodig die de eerste analyse van de video kan versnellen. HLS is de door Apple voorgestelde oplossing om dit probleem op te lossen.
HLS
HLS is de afkorting van HTTP Live Streaming. Het is een op HTTP gebaseerd netwerktransmissieprotocol voor streaming media, voorgesteld door Apple. Het kan live en on-demand tegelijkertijd ondersteunen, evenals multi-definition, audio en video dual-track, ondertitels en andere functies. Het principe is om een hele video op te splitsen in meerdere kleine video's, en de volledige weergave wordt gevormd door deze segmenten te splitsen.
HLS wordt veel gebruikt op mobiele terminals. De huidige clients die het HLS-protocol ondersteunen, zijn onder meer:
iOS 3.0 en hoger, AVPlayer ondersteunt native HLS
Android 3.0 en hoger
Adobe Flash Player 11.0 en hoger
Het algemene principe is dit:
1. Verzamel audio en video
2. Codeer audio en video op de server
3. Geef het na het coderen over aan de streamsegmenter in de vorm van een MPEG-2-transportstroom
4. De slicer maakt een indexbestand en een ts-afspeellijst, het indexbestand wordt gebruikt om de positie van de audio en video aan te geven, en ts is een echte multimediaclip
5. Zet de bronnen van de vorige stap op de HTTP-server
6. De cliënt vraagt het indexbestand aan om af te spelen, en de afspeelinhoud kan worden gevonden via het indexbestand
M3U8
Een belangrijke stap om HLS te realiseren is de vierde stap hierboven, namelijk het organiseren van indexbestanden en ts-afspeellijsten. Hier wordt het M3U8-formaat gebruikt. M3U8 is de Unicode-versie van M3U, 8 betekent dat UTF-8-codering wordt gebruikt, en zowel M3U als M3U8 zijn bestandsindelingen voor multimedialijsten.
M3U8-formaatbeschrijving
Soms moeten we de inhoud van het M3U8-bestand handmatig wijzigen om te testen of in sommige speciale gevallen, dus we hebben een zeker begrip van het formaat nodig. De definitie van dit formaat is geschreven in het RFC 8216-document. Hier volgen enkele opmerkingen:
M3U8-bestanden moeten gecodeerd zijn in UTF-8 en kunnen geen byte-volgorde-markering (BOM) bytevolgorde gebruiken en mogen geen utf-8-besturingstekens bevatten (U + 0000 ~ U_001F en U + 007F ~ u + 009F)
Elke regel van de inhoud van het M3U8-bestand is een lege regel, een URI of een tekenreeks die begint met #, en er mogen geen lege tekens verschijnen.
De ingebouwde tags zijn allemaal strings die beginnen met #EXT en zijn hoofdlettergevoelig.
URI is het inhoudspad, dat een relatief pad of een absoluut pad kan zijn
Master M3U8-lijstbestand
Het hoofdindexbestand van M3U8 wordt over het algemeen gebruikt om meerdere indexbronnen op te geven. Laten we eerst de inhoud van het m3u8-hoofdbestand hls_vod_mvp.m3u8 analyseren, de kop is als volgt
Header formaat
#EXTM3U
# EXT-X-VERSIE: 7
# EXT-X-ONAFHANKELIJKE-SEGMENTS Kopieer code
# EXTM3U geeft aan dat het bestand in M3U-indeling is en dat alle bestanden in M3U-indeling de inhoud op de eerste regel moeten plaatsen.
# EXT-X-VERSIOn geeft de compatibele versie van de afspeellijst aan, momenteel 7.
# EXT-X-ONAFHANKELIJKE-SEGMENTEN Deze tag geeft aan dat alle mediasamples in een mediasegment onafhankelijk kunnen worden gedecodeerd zonder te vertrouwen op andere mediasegmentinformatie.
Ondertiteling formaat
De onderstaande inhoud is een aantal bijschriften, de inhoud van bijschriften is niet nodig.
# EXT-X-MEDIA: TYPE = SUBTITLES, GROUP-ID = "subs", NAME = "English", DEFAULT = YES, AUTOSELECT = YES, FORCED = NO, LANGUAGE = "eng", URI = "subtitles / eng / prog_index.m3u8 "
# EXT-X-MEDIA: TYPE = SUBTITLES, GROUP-ID = "subsC", NAME = "English", DEFAULT = YES, AUTOSELECT = YES, FORCED = NO, LANGUAGE = "eng", URI = "subtitles / engc / prog_index.m3u8 "
# EXT-X-MEDIA: TYPE = SUBTITLES, GROUP-ID = "subs", NAME = "Japanese", DEFAULT = YES, AUTOSELECT = YES, FORCED = NO, LANGUAGE = "jpn", URI = "subtitles / jpn / prog_index.m3u8 "
# EXT-X-MEDIA: TYPE = SUBTITLES, GROUP-ID = "subsC", NAME = "Japanese", DEFAULT = YES, AUTOSELECT = YES, FORCED = NO, LANGUAGE = "jpn", URI = "subtitles / jpnc / prog_index.m3u8 "
# EXT-X-MEDIA: TYPE = SUBTITLES, GROUP-ID = "subs", NAME = "Chinees", DEFAULT = YES, AUTOSELECT = YES, FORCED = NO, LANGUAGE = "zho", URI = "subtitles / zho / prog_index.m3u8 "
# EXT-X-MEDIA: TYPE = SUBTITLES, GROUP-ID = "subsC", NAME = "Chinees", DEFAULT = YES, AUTOSELECT = YES, FORCED = NO, LANGUAGE = "zho", URI = "subtitles / zhoc / prog_index.m3u8 "Kopieer code
# EXT-X-MEDIA wordt gebruikt om meertalige medialijstbronnen met dezelfde inhoud te specificeren.
TYPE is het resourcetype en de optionele inhoud is: AUDIO, VIDEO, ONDERTITELS, GESLOTEN BIJLAGEN.
De bovenstaande inhoud stelt TYPE = SUBTITLES in, wat het ondertiteltype is.
GROUP-ID is de groep waartoe de meertalige vertaling behoort en is een vereiste parameter
NAME is de leesbare beschrijvingsinformatie van de vertaalstroom en deze waarde komt overeen met de displayName van AVMediaSelectionOption.
DEFAULT, AUTOSELECT, FORCED zijn drie BOOL-waarden die overeenkomen met het feit of de vertaalstroom standaard is geselecteerd als de nodige informatie ontbreekt. De afspeelstroom wordt afgespeeld wanneer de gebruiker de instellingen niet weergeeft. FORCED is alleen geldig voor het ondertiteltype en wordt gebruikt om de huidige automatische selectie van de vertaalstroom te markeren. .
LANGUAGE wordt gebruikt om het taaltype te specificeren, dat is ingesteld volgens de [ISO 639 taalcode] (https://www.w3.org/WAI/ER/WD-AERT/iso639.htm "ISO 639 taalcode") standaard. Als de standaardsysteemspeler ondertitels selecteert, wordt de naam van de weergegeven ondertitellijst ingesteld op basis van deze waarde.
De URI is de locatie-informatie van de bron, waar deze overeenkomt met een ondertiteld M3U8-bestand. ondertitels / eng / prog_index.m3u8 is een relatief pad,
Door de bovenstaande informatie kunnen we de betekenis van de bovenstaande inhoud analyseren als: De huidige video ondersteunt drie ondertitels: Engels, Japans en Chinees. Maar elke taal heeft twee EXT-X-MEDIA-berichten. Het verschil tussen hen is de groepering, de ene is gegroepeerd in subs en de andere is gegroepeerd in subsC. Waarom zijn er twee groepen? Ik zal er later over praten.
video formaat
Kijk nogmaals naar beneden voor de index van de video-inhoud:
#EXT-X-STREAM-INF:BANDWIDTH=827299,AVERAGE-BANDWIDTH=747464,CODECS="avc1.64001f,mp4a.40.2",RESOLUTION=640x360,FRAME-RATE=29.970,AUDIO="program_audio",SUBTITLES=" subs"
0640 / 0640.m3u8
#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=360849,AVERAGE-BANDWIDTH=320932,CODECS="avc1.64001f",RESOLUTION=640x360,URI="0640/0640_I-Frame.m3u8"Copy code
EXT-X-STREAM-INF: Dit kenmerk specificeert een back-upbron, dat wil zeggen het videoweergavepad en wat video-informatie. Het volgende is de configuratie van de bijbehorende inhoud: BANDBREEDTE is de piekbitsnelheid, 827299 is 827299bit / s, wat de hoogste piektijd is. Verbruikt 101 KB aan verkeer per seconde.
GEMIDDELDE-BANDBREEDTE is de gemiddelde bitsnelheid, 747464
CODECS is het coderen van informatie, avc1.64001f, mp4a.40.2, avc vertegenwoordigt het h264-coderingsformaat, de volgende 64001f is de coderingsparameter vertegenwoordigd door hexadecimaal, 64, 00, 1f vertegenwoordigen respectievelijk drie verschillende parameterwaarden. mp4a is een audiocoderingsformaat en de volgende 40.2 vertegenwoordigt audiocoderingsparameters.
RESOLUTIE is de videoresolutie. De huidige resolutie van de videobron is 640x360.
FRAME-RATE is de maximale framesnelheid, 29.970 geeft aan dat de maximale framesnelheid van de huidige weergave 29.970 frames per seconde is.
AUDIO is de audiogroep en program_audio is de naam van de corresponderende audiogroep.
SUBTITLES geeft de corresponderende ondertitelgroep aan en subs is de naam van de corresponderende ondertitelgroep. De bovenstaande ondertitelingsinformatie heeft een GROUP-ID en deze waarde komt daarmee overeen.
URI is het inhoudspad, 0640 / 0640.m3u8 komt overeen met het m3u8-bestandspad van de videobron. Dit is te zien in de informatie over het vastleggen van pakketten.
Onder EXT-X-STREAM-INF staat EXT-XI-FRAME-STREAM-INF, wat het I-frame (sleutelframe) vertegenwoordigt van de multimediabron in het afspeellijstbestand. Omdat het I-frame slechts een afbeelding is, bevat het geen audio-inhoud en zijn de overige parameters consistent met het video-inhoudformaat.
Daarna zijn er videobronnen die overeenkomen met verschillende resoluties, 1920x1080, 1280x720, 960x540, 480x270. Omdat HLS de resolutie automatisch zal omschakelen op basis van de netwerksituatie, worden doorgaans meerdere resoluties voorbereid op selectie. Volgens de analyse van de vastgelegde gegevens heeft het eerste afgespeelde segment een resolutie van 640, de tweede tot 8 segmenten daarna een resolutie van 480 en wordt vervolgens overgeschakeld naar een resolutie van 640.
audioformaat
Naar beneden kijken is de index van de bijbehorende audio
# EXT-X-MEDIA: TYPE = AUDIO, GROUP-ID = "program_audio", LANGUAGE = "eng", NAME = "Alternatieve audio", AUTOSELECT = YES, STANDAARD = YES, URI = "audio1 / audio1.m3u8" Kopiëren Code
# EXT-X-MEDIA verscheen hierboven, maar vermeldde de lijst voor meerdere talen niet.
TYPE = AUDIO, dit keer is het type audio.
GROUP-ID is de groeps-ID die overeenkomt met de AUDIO-inhoud in EXT-X-STREAM-INF.
URI = audio1 / audio1.m3u8 komt overeen met het audiopad.
Alternatieve bronnen van verschillende coderingsformaten
In het hoofd-M3U8-bestand zien we ook een videobron met een resolutie van 640, wat niet hetzelfde is als de bovenstaande resolutie van 640. De inhoud is als volgt:
#EXT-X-STREAM-INF:BANDWIDTH=1922391,AVERAGE-BANDWIDTH=1276855,VIDEO-RANGE=SDR,CODECS="hvc1.2.4.H150.B0,mp4a.40.2",RESOLUTION=640x360,FRAME-RATE=29.970 ,AUDIO="program_audio_0",SUBTITLES="subsC"
0640c / prog_index.m3u8
#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=1922391,AVERAGE-BANDWIDTH=1276855,CODECS="hvc1.2.4.H150.B0",RESOLUTION=640x360,URI="0640c/iframe_index.m3u8"
# EXT-X-MEDIA: TYPE = AUDIO, GROUP-ID = "program_audio_0", LANGUAGE = "eng", NAME = "Alternatieve audio", AUTOSELECT = YES, DEFAULT = YES, URI = "audioc / prog_index.m3u8" Kopiëren Code
Het CODECS-coderingsformaat is hvc1.2.4.H150.B0, mp4a.40.2, het audiocoderingsformaat is niet gewijzigd, maar het videocoderingsformaat is gewijzigd. hvc1 is een van de HEVC (H265) -coderingsindelingen. Het is een videocoderingsformaat van de nieuwe generatie dat door Apple is gelanceerd. Vanwege compatibiliteitsproblemen kunnen veel clients dit formaat niet parseren, dus het is niet erg populair. Videobronnen van dit formaat verschijnen. Het zou hier een back-up moeten zijn. Als we twee inhoud van dezelfde resolutie vergelijken, blijkt dat de bitsnelheid van het hvc1-formaat hoger is dan die van het avc1-formaat, wat aantoont dat de inhoud van hvc1 groter is en de compressieverhouding van avc1 hoger bij dezelfde resolutie.
Overeenkomend met de videobron in hvc1-formaat, zijn de groepering van de ondertitelingsinhoud en de groepering van de audio-inhoud ook gewijzigd, daarom hebben de bovenstaande ondertitels twee exemplaren van dezelfde taal en komen ze overeen met de videobronnen in de indelingen avc1 en hvc1.
Dit is de hoofdlijst van M3U8. De audio en video van deze content worden apart verwerkt, maar kunnen ook gecombineerd worden.
M3u8-bestand met media-informatie
Neem als voorbeeld het bestand 0640.m3u8
#EXTM3U
# EXT-X-VERSIE: 4
# EXT-X-DOELDUUR: 7
# EXT-X-MEDIA-SEQUENTIE: 1
# EXT-X-AFSPEELLIJST-TYPE: VOD
#EXTINF: 6.006,
0640_00001.ts
#EXTINF: 6.006,
0640_00002.ts
#EXTINF: 6.006,
0640_00003.ts
....
# EXT-X-ENDLISTCode kopiëren
# EXTM3U en # EXT-X-VERSION zijn respectievelijk de M3U-bestandskop en het compatibele versienummer. Dit formaat is een vroege versie, dus het versienummer is lager dan het hoofdbestand.
EXT-X-TARGETDURATION staat voor de maximale duur van elk afspeelsegment, 7 staat voor 7 seconden en de segmenten in deze directory mogen niet langer zijn dan 7 seconden.
EXT-X-MEDIA-SEQUENCE staat voor het volgnummer van het eerste segment van de afspeellijst, en 1 geeft aan dat het afspeelsegment begint vanaf 1.
#EXTINF staat voor de duur van het segment, 6.006 betekent dat het huidige segment 6.006s is. De totale videoduurinformatie wordt verkregen door deze waarde te verzamelen.
0640_00001.ts is het relatieve pad van de clip. Het ts-bestand vertegenwoordigt een stuk video of audio en kan de formaten ts, mp4, aac en andere formaten hebben. Omdat het is gespecificeerd om te openen vanaf 1
|
Voer een e-mailadres in om een verrassing te ontvangen
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikaans
sq.fmuser.org -> Albanees
ar.fmuser.org -> Arabisch
hy.fmuser.org -> Armenian
az.fmuser.org -> Azerbeidzjaans
eu.fmuser.org -> Baskisch
be.fmuser.org -> Wit-Russisch
bg.fmuser.org -> Bulgarian
ca.fmuser.org -> Catalaans
zh-CN.fmuser.org -> Chinees (vereenvoudigd)
zh-TW.fmuser.org -> Chinees (traditioneel)
hr.fmuser.org -> Kroatisch
cs.fmuser.org -> Tsjechisch
da.fmuser.org -> Deens
nl.fmuser.org -> Nederlands
et.fmuser.org -> Ests
tl.fmuser.org -> Filipijns
fi.fmuser.org -> Fins
fr.fmuser.org -> Frans
gl.fmuser.org -> Galicisch
ka.fmuser.org -> Georgisch
de.fmuser.org -> Duits
el.fmuser.org -> Greek
ht.fmuser.org -> Haïtiaans Creools
iw.fmuser.org -> Hebreeuws
hi.fmuser.org -> Hindi
hu.fmuser.org -> Hungarian
is.fmuser.org -> IJslands
id.fmuser.org -> Indonesisch
ga.fmuser.org -> Iers
it.fmuser.org -> Italian
ja.fmuser.org -> Japans
ko.fmuser.org -> Koreaans
lv.fmuser.org -> Lets
lt.fmuser.org -> Lithuanian
mk.fmuser.org -> Macedonisch
ms.fmuser.org -> Maleis
mt.fmuser.org -> Maltees
no.fmuser.org -> Norwegian
fa.fmuser.org -> Perzisch
pl.fmuser.org -> Pools
pt.fmuser.org -> Portugees
ro.fmuser.org -> Roemeens
ru.fmuser.org -> Russisch
sr.fmuser.org -> Servisch
sk.fmuser.org -> Slowaaks
sl.fmuser.org -> Slovenian
es.fmuser.org -> Spaans
sw.fmuser.org -> Swahili
sv.fmuser.org -> Zweeds
th.fmuser.org -> Thai
tr.fmuser.org -> Turks
uk.fmuser.org -> Oekraïens
ur.fmuser.org -> Urdu
vi.fmuser.org -> Vietnamese
cy.fmuser.org -> Welsh
yi.fmuser.org -> Jiddisch
FMUSER Wirless Verzend video en audio eenvoudiger!
Neem contact op
Adres:
No.305 Zaal HuiLan Gebouw No.273 Huanpu Road Guangzhou China 510620
Categorieën
Nieuwsbrief