FMUSER безжично предаване на видео и аудио по-лесно!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> африкаанс
sq.fmuser.org -> албански
ar.fmuser.org -> арабски
hy.fmuser.org -> Арменски
az.fmuser.org -> азербайджански
eu.fmuser.org -> баски
be.fmuser.org -> белоруски
bg.fmuser.org -> Български
ca.fmuser.org -> каталунски
zh-CN.fmuser.org -> китайски (опростен)
zh-TW.fmuser.org -> Китайски (традиционен)
hr.fmuser.org -> хърватски
cs.fmuser.org -> чешки
da.fmuser.org -> датски
nl.fmuser.org -> Холандски
et.fmuser.org -> естонски
tl.fmuser.org -> филипински
fi.fmuser.org -> финландски
fr.fmuser.org -> Френски
gl.fmuser.org -> галисийски
ka.fmuser.org -> грузински
de.fmuser.org -> немски
el.fmuser.org -> Гръцки
ht.fmuser.org -> хаитянски креолски
iw.fmuser.org -> иврит
hi.fmuser.org -> хинди
hu.fmuser.org -> Унгарски
is.fmuser.org -> исландски
id.fmuser.org -> индонезийски
ga.fmuser.org -> ирландски
it.fmuser.org -> Italian
ja.fmuser.org -> японски
ko.fmuser.org -> корейски
lv.fmuser.org -> латвийски
lt.fmuser.org -> Литовски
mk.fmuser.org -> македонски
ms.fmuser.org -> малайски
mt.fmuser.org -> Малтийски
no.fmuser.org -> Norwegian
fa.fmuser.org -> персийски
pl.fmuser.org -> полски
pt.fmuser.org -> португалски
ro.fmuser.org -> Romanian
ru.fmuser.org -> руски
sr.fmuser.org -> сръбски
sk.fmuser.org -> словашки
sl.fmuser.org -> Словенски
es.fmuser.org -> испански
sw.fmuser.org -> суахили
sv.fmuser.org -> шведски
th.fmuser.org -> Thai
tr.fmuser.org -> турски
uk.fmuser.org -> украински
ur.fmuser.org -> урду
vi.fmuser.org -> Виетнамски
cy.fmuser.org -> уелски
yi.fmuser.org -> Идиш
фон
MP4 е нашият често срещан видео формат и често, когато възпроизвеждаме сървърни видеоклипове, това е директно заявеният MP4 видео източник. Но всъщност това не е добре. MP4 заглавният файл [ftyp + moov] е голям и първоначалното възпроизвеждане трябва да изтегли пълния заглавен файл и да го анализира, след което да изтегли определена дължина на възпроизвеждания видеоклип за възпроизвеждане. В допълнение, с увеличаване на размера на видеото, заглавният файл ще продължи да расте и първоначалното време за възпроизвеждане ще бъде по-дълго. С оглед на тази ситуация е необходим метод, който може да ускори първоначалния анализ на видеоклипа. HLS е решението, предложено от Apple за решаване на този проблем.
HLS
HLS е съкращението на HTTP Live Streaming. Това е HTTP-базиран протокол за предаване на медийни мрежи, предложен от Apple. Той може да поддържа едновременно на живо и при поискване, както и мулти-дефиниция, аудио и видео двойна писта, субтитри и други функции. Принципът му е да раздели цял видеоклип на множество малки видеоклипове и цялостното възпроизвеждане се формира чрез снаждане на тези сегменти.
HLS се използва широко на мобилни терминали. Текущите клиенти, които поддържат протокола HLS, включват:
iOS 3.0 и по-нови версии, AVPlayer първоначално поддържа HLS
Android 3.0 и по-нова версия
Adobe Flash Player 11.0 и по-нови версии
Основният му принцип е следният:
1. Събирайте аудио и видео
2. Кодирайте аудио и видео на сървъра
3. След кодирането го предайте на Stream Segmenter под формата на MPEG-2 транспортен поток
4. Слайсерът създава индексен файл и списък за изпълнение на ts, индексният файл се използва за посочване на позицията на аудио и видео, а ts е истински мултимедиен клип
5. Поставете ресурсите от предишната стъпка на HTTP сървъра
6. Клиентът иска индексния файл за възпроизвеждане и съдържанието за възпроизвеждане може да бъде намерено чрез индексния файл
M3U8
Ключова стъпка за реализиране на HLS е четвъртата стъпка по-горе, а именно организирането на индексни файлове и плейлисти на ts. Тук се използва форматът M3U8. M3U8 е версията на Unicode на M3U, 8 означава, че се използва кодиране UTF-8 и M3U и M3U8 са файлови формати за мултимедийни списъци.
Описание на формата M3U8
Понякога може да се наложи ръчно да модифицираме съдържанието на файла M3U8 за тестване или в някои специални случаи, така че трябва да имаме известно разбиране за неговия формат. Дефиницията на този формат е написана в документа RFC 8216. Следват някои бележки:
Файловете M3U8 трябва да бъдат кодирани в UTF-8 и не могат да използват байт ред на байтовата маркировка (BOM) и не могат да съдържат контролни знаци utf-8 (U + 0000 ~ U_001F и U + 007F ~ u + 009F)
Всеки ред от съдържанието на файла M3U8 е или празен ред, URI, или низ, започващ с #, и не могат да се появят празни символи.
Вградените тагове са всички низове, започващи с #EXT и са чувствителни към малки и големи букви.
URI е пътят на съдържанието, който може да бъде относителен път или абсолютен път
Основен файл от списъка M3U8
Основният индексен файл M3U8 обикновено се използва за задаване на множество източници на индекси. Нека първо анализираме съдържанието на основния файл m3u8 hls_vod_mvp.m3u8, главата му е такава
Формат на заглавката
#EXTM3U
# EXT-X-VERSION: 7
# EXT-X-НЕЗАВИСИМ-СЕГМЕНТ Копирайте код
# EXTM3U показва, че файлът е във формат M3U и всички файлове с формат M3U трябва да поставят съдържанието на първия ред.
# EXT-X-VERSIOn показва съвместимата версия на плейлиста, която в момента е 7.
# EXT-X-НЕЗАВИСИМИ СЕГМЕНТИ Този маркер показва, че всички медийни проби в медиен сегмент могат да бъдат декодирани независимо, без да се разчита на информация за други медийни сегменти.
Формат на субтитрите
Съдържанието по-долу е някои надписи, съдържанието на надписи не е необходимо.
# EXT-X-MEDIA: TYPE = СУБТИТРИ, GROUP-ID = "subs", NAME = "English", DEFAULT = YES, AUTOSELECT = YES, FORCED = NO, LANGUAGE = "eng", URI = "субтитри / eng / prog_index.m3u8 "
# EXT-X-MEDIA: TYPE = SUBTITLES, GROUP-ID = "subsC", NAME = "English", DEFAULT = YES, AUTOSELECT = YES, FORCED = NO, LANGUAGE = "eng", URI = "субтитри / engc / prog_index.m3u8 "
# EXT-X-MEDIA: TYPE = SUBTITLES, GROUP-ID = "subs", NAME = "Japanese", DEFAULT = YES, AUTOSELECT = YES, FORCED = NO, LANGUAGE = "jpn", URI = "субтитри / jpn / prog_index.m3u8 "
# EXT-X-MEDIA: TYPE = SUBTITLES, GROUP-ID = "subsC", NAME = "Japanese", DEFAULT = YES, AUTOSELECT = YES, FORCED = NO, LANGUAGE = "jpn", URI = "субтитри / jpnc / prog_index.m3u8 "
# EXT-X-MEDIA: TYPE = SUBTITLES, GROUP-ID = "subs", NAME = "Chinese", DEFAULT = YES, AUTOSELECT = YES, FORCED = NO, LANGUAGE = "zho", URI = "субтитри / zho / prog_index.m3u8 "
# EXT-X-MEDIA: TYPE = SUBTITLES, GROUP-ID = "subsC", NAME = "Chinese", DEFAULT = YES, AUTOSELECT = YES, FORCED = NO, LANGUAGE = "zho", URI = "субтитри / zhoc / prog_index.m3u8 "Копиране на код
# EXT-X-MEDIA се използва за указване на многоезични ресурси за медиен списък със същото съдържание.
TYPE е типът на ресурса и незадължителното съдържание е: AUDIO, VIDEO, SUBTLLES, CLOSED-CAPTIONS.
Горното съдържание задава TYPE = SUBTITLES, което е типът на субтитрите.
GROUP-ID е групата, към която принадлежи многоезичният превод и е задължителен параметър
NAME е четимата информация за описание на потока за превод и тази стойност съответства на displayName на AVMediaSelectionOption.
DEFAULT, AUTOSELECT, FORCED са три BOOL стойности, съответстващи на това дали потокът за превод е избран по подразбиране, ако липсва необходимата информация. Потокът за възпроизвеждане се възпроизвежда, когато потребителят не показва настройките. FORCED е валиден само за типа субтитри и се използва за отбелязване на текущия автоматичен избор на потока за превод. .
LANGUAGE се използва за определяне на езиковия тип, който се задава съгласно [кода на езика ISO 639] (https://www.w3.org/WAI/ER/WD-AERT/iso639.htm "ISO 639 езиков код") стандарт. Когато системният плейър по подразбиране избере субтитри, името на показания списък със субтитри се задава според тази стойност.
URI е информацията за местоположението на ресурса, където съответства на субтитриран файл M3U8. субтитри / eng / prog_index.m3u8 е относителен път,
Чрез горната информация можем да анализираме значението на горното съдържание като: Текущото видео поддържа три субтитра: английски, японски и китайски. Но всеки език има две съобщения EXT-X-MEDIA. Разликата между тях е групирането, едното е групирано в подсистеми, а другото е групирано в subsC. Защо има две групи? Ще говоря за това по-късно.
Видео формат
Потърсете отново надолу за индекса на видеосъдържанието:
#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: Този атрибут определя резервен източник, т.е. път за възпроизвеждане на видео и част от видео информация. Следва конфигурацията на съответното съдържание: BANDWIDTH е пиковата скорост на предаване, 827299 е 827299bit / s, което е най-високото пиково време Консумира 101KB трафик в секунда.
СРЕДНА БАНДИТА е средната скорост на предаване, 747464
CODECS е информация за кодиране, avc1.64001f, mp4a.40.2, avc представлява форматът за кодиране h264, следващият 64001f е параметърът за кодиране, представен съответно от шестнадесетични, 64, 00, 1f, съответно представляват три различни стойности на параметрите. mp4a е формат за аудио кодиране и следващите 40.2 представляват параметри за аудио кодиране.
РЕЗОЛЮЦИЯ е видео резолюцията. Текущата резолюция на видео източника е 640x360.
FRAME-RATE е максималната скорост на кадрите, 29.970 представлява максималната честота на кадрите на текущото възпроизвеждане е 29.970 кадъра в секунда.
AUDIO е аудио групата, а program_audio е името на съответната аудио група.
SUBTITLES показва съответната група субтитри, а subs е името на съответната група субтитри. Горната информация за субтитрите има GROUP-ID и тази стойност съответства на нея.
URI е пътят на съдържанието, 0640 / 0640.m3u8 съответства на m3u8 файловия път на видео източника. Това може да се види в информацията за улавяне на пакети.
Под EXT-X-STREAM-INF е EXT-XI-FRAME-STREAM-INF, който представлява I кадър (ключов кадър) на мултимедийния ресурс, съдържащ се във файла с плейлиста. Тъй като I кадърът е само картина, той не съдържа аудио съдържание, а останалите параметри са в съответствие с формата на видео съдържание.
След това има видео източници, съответстващи на различни резолюции, 1920x1080, 1280x720, 960x540, 480x270. Тъй като HLS автоматично превключва разделителната способност в зависимост от ситуацията в мрежата, обикновено се подготвят множество разделителни способности за избор. Според анализа на заснетите данни, първият възпроизведен сегмент е с 640 резолюция, вторият до 8 сегмента след това са с 480 резолюции и след това се превключва на 640 резолюция.
аудио формат
Погледът надолу е индексът на съответния звук
# EXT-X-MEDIA: TYPE = AUDIO, GROUP-ID = "program_audio", LANGUAGE = "eng", NAME = "Alternate Audio", AUTOSELECT = YES, DEFAULT = YES, URI = "audio1 / audio1.m3u8" Копиране Код
# EXT-X-MEDIA се появи по-горе, но не споменава списъка за множество езици.
TYPE = AUDIO, този път типът е аудио.
GROUP-ID е идентификаторът на групата, съответстващ на AUDIO съдържанието в EXT-X-STREAM-INF.
URI = audio1 / audio1.m3u8 съответства на аудио пътя.
Алтернативни източници на различни формати за кодиране
В основния файл M3U8 можем да видим и видео източник с резолюция 640, което не е същото като горната резолюция 640. Съдържанието му е такова:
#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 = "Alternate Audio", AUTOSELECT = YES, DEFAULT = YES = URI = "audioc / prog_index.m3u8" Копиране Код
Форматът за кодиране CODECS е hvc1.2.4.H150.B0, mp4a.40.2, форматът за аудио кодиране не се е променил, но форматът за видео кодиране се е променил. hvc1 е един от форматите за кодиране HEVC (H265). Това е ново поколение видео формат за кодиране, пуснат от Apple. Поради проблеми със съвместимостта много клиенти не могат да анализират този формат, така че той не е много популярен. Появяват се видео източници от този формат. Тук трябва да има резервно копие. Сравнявайки две съдържания на една и съща резолюция, може да се установи, че битрейтът на hvc1 формат е по-висок от този на avc1 формат, което показва, че съдържанието на hvc1 е по-голямо и степента на компресия на avc1 е по-висока при същата резолюция.
Съответно на видео източника във формат hvc1, неговото групиране на съдържанието на субтитри и групирането на аудио съдържание също са се променили, поради което горните субтитри имат две копия на един и същи език и те съответстват на видео източниците във формати avc1 и hvc1.
Това е основният списък на M3U8. Аудиото и видеото на това съдържание се обработват отделно, но те също могат да се комбинират.
M3u8 файл, съдържащ медийна информация
Вземете за пример файла 0640.m3u8
#EXTM3U
# EXT-X-VERSION: 4
# EXT-X-TARGETDURATION: 7
# EXT-X-MEDIA-SEQUENCE: 1
# EXT-X-PLAYLIST-TYPE: VOD
#EXTINF: 6.006,
0640_00001.ts
#EXTINF: 6.006,
0640_00002.ts
#EXTINF: 6.006,
0640_00003.ts
....
# EXT-X-ENDLIST Копирайте код
# EXTM3U и # EXT-X-VERSION са съответно заглавката на файла M3U и номерът на съвместимата версия. Този формат е ранна версия, така че номерът на версията е по-малък от основния файл.
EXT-X-TARGETDURATION представлява максималната продължителност на всеки сегмент за възпроизвеждане, 7 представлява 7 секунди и сегментите в тази директория не могат да надвишават 7 секунди.
EXT-X-MEDIA-SEQUENCE представлява поредния номер на първия сегмент на плейлиста, а 1, показва, че сегментът на възпроизвеждане започва от 1.
#EXTINF представлява продължителността на сегмента, 6.006 означава, че текущият сегмент е 6.006s. Информацията за общата продължителност на видеоклипа се получава чрез натрупване на тази стойност.
0640_00001.ts е относителният път на клипа. Файлът ts представлява част от видео или аудио и може да бъде в ts, mp4, aac и други формати. Защото е посочено да се отваря от 1
|
Въведете имейл, за да получите изненада
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> африкаанс
sq.fmuser.org -> албански
ar.fmuser.org -> арабски
hy.fmuser.org -> Арменски
az.fmuser.org -> азербайджански
eu.fmuser.org -> баски
be.fmuser.org -> белоруски
bg.fmuser.org -> Български
ca.fmuser.org -> каталунски
zh-CN.fmuser.org -> китайски (опростен)
zh-TW.fmuser.org -> Китайски (традиционен)
hr.fmuser.org -> хърватски
cs.fmuser.org -> чешки
da.fmuser.org -> датски
nl.fmuser.org -> Холандски
et.fmuser.org -> естонски
tl.fmuser.org -> филипински
fi.fmuser.org -> финландски
fr.fmuser.org -> Френски
gl.fmuser.org -> галисийски
ka.fmuser.org -> грузински
de.fmuser.org -> немски
el.fmuser.org -> Гръцки
ht.fmuser.org -> хаитянски креолски
iw.fmuser.org -> иврит
hi.fmuser.org -> хинди
hu.fmuser.org -> Унгарски
is.fmuser.org -> исландски
id.fmuser.org -> индонезийски
ga.fmuser.org -> ирландски
it.fmuser.org -> Italian
ja.fmuser.org -> японски
ko.fmuser.org -> корейски
lv.fmuser.org -> латвийски
lt.fmuser.org -> Литовски
mk.fmuser.org -> македонски
ms.fmuser.org -> малайски
mt.fmuser.org -> Малтийски
no.fmuser.org -> Norwegian
fa.fmuser.org -> персийски
pl.fmuser.org -> полски
pt.fmuser.org -> португалски
ro.fmuser.org -> Romanian
ru.fmuser.org -> руски
sr.fmuser.org -> сръбски
sk.fmuser.org -> словашки
sl.fmuser.org -> Словенски
es.fmuser.org -> испански
sw.fmuser.org -> суахили
sv.fmuser.org -> шведски
th.fmuser.org -> Thai
tr.fmuser.org -> турски
uk.fmuser.org -> украински
ur.fmuser.org -> урду
vi.fmuser.org -> Виетнамски
cy.fmuser.org -> уелски
yi.fmuser.org -> Идиш
FMUSER безжично предаване на видео и аудио по-лесно!
Контакти
Адрес
No.305 Стая HuiLan Сграда No.273 Huanpu Road Гуанджоу Китай 510620
Категории
Бюлетин