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 -> італійська
ja.fmuser.org -> японська
ko.fmuser.org -> корейська
lv.fmuser.org -> латиська
lt.fmuser.org -> литовська
mk.fmuser.org -> македонська
ms.fmuser.org -> малайська
mt.fmuser.org -> мальтійська
no.fmuser.org -> Норвезька
fa.fmuser.org -> Перська
pl.fmuser.org -> польська
pt.fmuser.org -> португальська
ro.fmuser.org -> румунська
ru.fmuser.org -> російська
sr.fmuser.org -> сербська
sk.fmuser.org -> словацька
sl.fmuser.org -> словенська
es.fmuser.org -> іспанська
sw.fmuser.org -> суахілі
sv.fmuser.org -> шведська
th.fmuser.org -> Тайська
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. Після кодування передайте його Сегментеру потоку у вигляді транспортного потоку MPEG-2
4. Зрізач створює файл індексу та список відтворення ts, файл індексу використовується для позначення місця аудіо та відео, а ts - справжній мультимедійний кліп
5. Розмістіть ресурси попереднього кроку на сервері HTTP
6. Клієнт просить файл відтворення для відтворення, а вміст відтворення можна знайти за допомогою файлу покажчика
М3У8
Ключовим кроком до реалізації 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 = "subtitles / eng / prog_index.m3u8 "
# EXT-X-MEDIA: TYPE = ЗАГОЛОВКИ, GROUP-ID = "subsC", NAME = "English", DEFAULT = YES, AUTOSELECT = YES, FORCED = NO, LANGUAGE = "eng", URI = "субтитри / engc / prog_index.m3u8 "
# EXT-X-MEDIA: TYPE = ЗАГОЛОВКИ, GROUP-ID = "subs", NAME = "Japanese", DEFAULT = YES, AUTOSELECT = YES, FORCED = NO, LANGUAGE = "jpn", URI = "субтитри / jpn / prog_index.m3u8 "
# EXT-X-MEDIA: TYPE = ЗАГОЛОВКИ, GROUP-ID = "subsC", NAME = "Japanese", DEFAULT = YES, AUTOSELECT = YES, FORCED = NO, LANGUAGE = "jpn", URI = "субтитри / jpnc / prog_index.m3u8 "
# EXT-X-MEDIA: TYPE = ЗАГОЛОВКИ, GROUP-ID = "subs", NAME = "Chinese", DEFAULT = YES, AUTOSELECT = YES, FORCED = NO, LANGUAGE = "zho", URI = "субтитри / zho / prog_index.m3u8 "
# EXT-X-MEDIA: TYPE = ЗАГОЛОВКИ, GROUP-ID = "subsC", NAME = "Chinese", DEFAULT = YES, AUTOSELECT = YES, FORCED = NO, LANGUAGE = "zho", URI = "субтитри / zhoc / prog_index.m3u8 "Копіювати код
# EXT-X-MEDIA використовується для визначення багатомовних ресурсів списку носіїв того самого вмісту.
ТИП - це тип ресурсу, а необов’язковим вмістом є: АУДІО, ВІДЕО, ЗАГОЛОВКИ, ЗАКРИТТЯ.
Вищевказаний вміст встановлює 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. subtitles / eng / prog_index.m3u8 - це відносний шлях,
За допомогою наведеної вище інформації ми можемо проаналізувати значення вищевказаного вмісту як: Поточне відео підтримує три субтитри: англійську, японську та китайську. Але кожна мова має два повідомлення EXT-X-MEDIA. Різниця між ними полягає в групуванні, одне згруповане в підстанції, а інше - в підсЦ. Чому існує дві групи? Про це я поговорю пізніше.
Формат відео
Знову шукайте індекс відеовмісту:
#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, що є найвищим піковим часом.
AVERAGE-BANDWIDTH - це середня швидкість передачі даних, 747464
CODECS - це інформація кодування, avc1.64001f, mp4a.40.2, avc представляє формат кодування h264, наступний 64001f - параметр кодування, представлений шістнадцятковою, 64, 00, 1f відповідно представляє три різні значення параметра. mp4a - це формат кодування звуку, а наступні 40.2 представляють параметри кодування звуку.
RESOLUTION - це роздільна здатність відео. Поточна роздільна здатність відеоджерела - 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-ЦІЛЬНА ЦІЛЬ: 7
# EXT-X-MEDIA-SEQUENCE: 1
# ТИП EXT-X-PLAYLIST: VOD
#EXTINF: 6.006,
0640_00001.ц
#EXTINF: 6.006,
0640_00002.ц
#EXTINF: 6.006,
0640_00003.ц
....
# EXT-X-ENDLIST Копіювати код
# EXTM3U та # EXT-X-VERSION - це заголовок файлу M3U та номер сумісної версії відповідно. Цей формат є ранньою версією, тому номер версії нижчий за основний файл.
EXT-X-TARGETDURATION - це максимальна тривалість кожного сегмента відтворення, 7 - 7 секунд, і сегменти в цьому каталозі не можуть перевищувати 7 секунд.
EXT-X-MEDIA-SEQUENCE представляє порядковий номер першого сегмента списку відтворення, а 1, що сегмент відтворення починається з 1.
#EXTINF представляє тривалість сегмента, 6.006 означає, що поточний сегмент становить 6.006с. Інформація про загальну тривалість відео отримується шляхом накопичення цього значення.
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 -> італійська
ja.fmuser.org -> японська
ko.fmuser.org -> корейська
lv.fmuser.org -> латиська
lt.fmuser.org -> литовська
mk.fmuser.org -> македонська
ms.fmuser.org -> малайська
mt.fmuser.org -> мальтійська
no.fmuser.org -> Норвезька
fa.fmuser.org -> Перська
pl.fmuser.org -> польська
pt.fmuser.org -> португальська
ro.fmuser.org -> румунська
ru.fmuser.org -> російська
sr.fmuser.org -> сербська
sk.fmuser.org -> словацька
sl.fmuser.org -> словенська
es.fmuser.org -> іспанська
sw.fmuser.org -> суахілі
sv.fmuser.org -> шведська
th.fmuser.org -> Тайська
tr.fmuser.org -> турецька
uk.fmuser.org -> український
ur.fmuser.org -> урду
vi.fmuser.org -> в'єтнамська
cy.fmuser.org -> валлійська
yi.fmuser.org -> Ідиш
FMUSER бездротовий передавати відео та аудіо простіше!
Контакти
Адреса:
No.305 Кімната HuiLan Будівля No273 Huanpu Road Гуанчжоу Китай 510620
Категорії
Інформаційний бюлетень