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 -> Ідиш
HLS та Http Live Streaming - це протоколи потокового передавання в режимі реального часу, визначені Apple. HLS реалізований на основі протоколу HTTP. Вміст передачі включає дві частини, одна - файл опису M3U8, а інша - медіа-файл TS.
1. Файл M3U8
Медіа-файл описаний у тексті, який складається з ряду тегів.
#EXTM3U
# EXT-X-ЦІЛЬНА ЦІЛЬ: 5
#EXTINF: 5,
./0.ц
#EXTINF: 5,
./1.ц
# EXTM3U: Першим рядком кожного файлу M3U8 повинен бути цей тег.
# EXT-X-TARGETDURATION: Вкажіть максимальну тривалість сегмента носія (секунди). Тривалість часу, вказана в #EXTINF, повинна бути меншою або дорівнює цьому максимальному значенню. Це значення може з’являтися лише один раз.
#EXTINF: Опишіть довжину одного медіафайлу. Далі йдуть медіафайли, такі як ./0.ts
Його можна розповсюджувати за допомогою HTTP на пристроях iOS та Mac. Стандартним для списку відтворення є файл m3u8, розширений m3u, а медіафайлом - файл MPEG2-TS або AAC (лише аудіо).
Існує два сценарії застосування файлів m3u8:
Багатоступінчастий потік адаптації,
#EXTM3U
# EXT-X-STREAM-INF: PROGRAM-ID = 1, смуга пропускання = 1280000
# EXT-X-STREAM-INF: PROGRAM-ID = 1, смуга пропускання = 2560000
# EXT-X-STREAM-INF: PROGRAM-ID = 1, смуга пропускання = 7680000
# EXT-X-STREAM-INF: PROGRAM-ID = 1, смуга пропускання = 65000, CODECS = "mp4a.40.5"
http://example.com/audio-only.m3u8
Потік адаптації з однією швидкістю
#EXTM3U
# EXT-X-ЦІЛЬНА ЦІЛЬ: 5220
#EXTINF: 5220,
http://media.example.com/entire.ts
# EXT-X-ENDLIST
Міжнародна організація зі стандартів визначає цей документ RFC:
http://tools.ietf.org/html/draft-pantos-http-live-streaming-06
Файл m3u8 є розширенням файлу m3u. Розширені ключові слова визначені в RFC:
серед них:
# EXT-X-ТАРГЕТУРАЦІЯ
Визначте максимальну тривалість кожного TS.
# EXT-X-MEDIA-SEQUENCE
Визначте серійний номер першого файлу в поточному файлі m3u8. Кожен файл ts має фіксований та унікальний серійний номер у файлі m3u8. Серійний номер використовується для перемикання швидкості коду для вирівнювання під час MBR.
# EXT-X-KEY
Визначте метод шифрування та URL-адресу файлу ключа, який використовується для отримання 16-байтного файлу ключа для декодування файлу ts.
Атрибути:
МЕТОД
URL
# EXT-X-PROGRAM-DATE-TIME
Абсолютний час першого файлу
# EXT-X-ALLOW-CACHE
Чи дозволити кеш.
# EXT-X-ENDLIST
Позначає кінець файлу m3u8. Live m3u8 не має цього тегу.
# EXT-X-STREAM-INF
Атрибути:
BANDWIDTH визначає швидкість передачі даних
Унікальний ідентифікатор ПРОГРАМИ
CODECS визначає тип кодування потоку
# EXT-X-ПЕРЕКЛЮЧЕННЯ
Коли зустрічається тег, змінюються такі атрибути:
формат файлу
кількість і тип доріжок
параметри кодування
послідовність кодування
послідовність міток часу
# EXT-X-VERSION Цей атрибут можна використовувати чи ні, ви можете не мати жодного
M3U8 поділяється на M3U8 верхнього рівня та M3U8 другого рівня. Верхній рівень M3U8 в основному використовується для багатоступеневої адаптації. M3U8 другого рівня - це справжній файл зрізу.
За замовчуванням клієнт спочатку вибирає запит із найбільшим бітрейтом. Якщо виявить, що бітрейт неможливо досягти, він запитає потік з низьким бітрейтом
Файл верхнього рівня M3U8, який фактично використовується, є таким:
#EXTM3U
# EXT-X-STREAM-INF: PROGRAM-ID = 201273221265, смуга пропускання = 358400
11.m3u8
# EXT-X-STREAM-INF: PROGRAM-ID = 201273221265, смуга пропускання = 972800
22.m3u8
Верхній файл M3U8 вище визначає два файли другого рівня, 11.m3u8 та 22.m3u8, і клієнт вибере один із них, щоб отримати його вміст.
Вміст вторинного файлу M3U8 такий:
#EXTM3U
# EXT-X-VERSION: 1
# EXT-X-ЦІЛЬНА ЦІЛЬ: 10
# EXT-X-MEDIA-SEQUENCE: 0
#EXTINF: 3,
1-4.ц
#EXTINF: 8,
1-6.ц
#EXTINF: 8,
1-8.ц
#EXTINF: 8,
1-10.ц
#EXTINF: 8,
1-12.ц
#EXTINF: 8,
1-14.ц
#EXTINF: 8,
1-16.ц
#EXTINF: 9,
1-18.ц
#EXTINF: 6,
1-20.ц
#EXTINF: 8,
1-22.ц
#EXTINF: 9,
1-24.ц
#EXTINF: 3,
1-26.ц
# EXT-X-ENDLIST
Після того, як клієнт отримає вищевказаний вторинний файл M3U8, він буде продовжувати запитувати файл всередині, а потім його можна буде відтворити.
Вище йдеться про ситуацію на вимогу та ситуацію в прямому ефірі, у файлі M3U8 будуть атрибути, щоб повідомити, що він працює, і клієнт періодично запитуватиме нові файли M3U8.
// Коли HLS реалізує трансляцію на вимогу та пряму трансляцію, різниця у файлі M3U8
1. Опис проблеми
Нещодавно я провів перекодований тест відтворення фрагментів, використовуючи HLS (HTTP Live Streaming) для прямого ефіру. Кожен час сегментації TS становить 10 секунд, і наступні поточні файли m3u8 генеруються відповідно до файлів сегментації TS
Скопіюйте код
#EXTM3U
# EXT-X-MEDIA-SEQUENCE: 1
# EXT-X-ЦІЛЬНА ЦІЛЬ: 10
# EXTINF: 10
hls / 1.ts
# EXTINF: 10
hls / 2.ts
# EXTINF: 10
hls / 3.ts
# EXTINF: 10
hls / 4.ts
# EXTINF: 10
hls / 5.ts
# EXTINF: 10
hls / 6.ts
# EXTINF: 10
hls / 7.ts
# EXTINF: 10
hls / 8.ts
# EXTINF: 10
hls / 9.ts
# EXTINF: 10
hls / 10.ts
Скопіюйте код
Збережіть вищезгаданий файл m3u8 як live.m3u8, помістіть його в каталог документів Apache і відтворіть наступну URL-адресу за допомогою VLC:
http://localhost/live.m3u8
Тест виявив, що перший файл, який почав відтворюватися, не був 1.ts. Після кількох випробувань було встановлено, що:
Поки у списку більше трьох файлів, останні три файли у списку завжди відтворюються
2. Розв’язання проблем
Дуже прикро, що після пошуку в Інтернеті я не знайшов жодної ефективної інформації. Друг зіткнувся з такою ж ситуацією, чи поділився він своїм досвідом після її вирішення?
Проконсультувавшись з колегою, колега сказав, що це можливо, оскільки список поточних файлів m3u8 потрібно оновлювати в режимі реального часу. Якщо ми робимо тест, ми можемо додати # EXT-X-ENDLIST в кінці спочатку. Цей метод перевірений. Він працює, але це вже не активний режим m3u8
Після повторного пошуку в Інтернеті я підтвердив, що нарешті знайшов реальний опис m3u8
Плейлист у прямому ефірі (розсувне вікно)
Для активних сеансів файл індексу оновлюється шляхом видалення з файлу URI носіїв, коли створюються та робляться доступними нові медіафайли.
Важливо: Тег EXT-X-ENDLIST відсутній у списку відтворення в прямому ефірі, що вказує на те, що нові медіафайли будуть додані до файлу індексу, коли вони стануть доступними.
Див. Лістинг 3 для прикладу прямого списку відтворення, який він з’явиться на початку сеансу.
Лістинг 3 Плейлист у реальному часі на початку сеансу.
Скопіюйте код
#EXTM3U
# EXT-X-ЦІЛЬНА ЦІЛЬ: 10
# EXT-X-VERSION: 3
# EXT-X-MEDIA-SEQUENCE: 1
#EXTINF: 10,
fileSequence1.ts
#EXTINF: 10,
fileSequence2.ts
#EXTINF: 10,
fileSequence3.ts
#EXTINF: 10,
fileSequence4.ts
#EXTINF: 10,
fileSequence5.ts
Скопіюйте код
Значення тегу EXT-X-MEDIA-SEQUENCE ПОВИННО збільшуватись на 1 для кожного URI носія, який видаляється з файлу списку відтворення. Медіа URI потрібно видалити з файлу списку відтворення в тому порядку, в якому вони відображаються у списку відтворення. Оновлений файл індексу представляє рухоме вікно у безперервний потік. Цей тип сеансу підходить для безперервних трансляцій.
Ось той самий список відтворення після оновлення новими медіа URI:
Лістинг 4 Плейлист у режимі реального часу після оновлення URI носіїв.
Скопіюйте код
#EXTM3U
# EXT-X-ЦІЛЬНА ЦІЛЬ: 10
# EXT-X-VERSION: 3
# EXT-X-MEDIA-SEQUENCE: 2
#EXTINF: 10,
fileSequence2.ts
#EXTINF: 10,
fileSequence3.ts
#EXTINF: 10,
fileSequence4.ts
#EXTINF: 10,
fileSequence5.ts
#EXTINF: 10,
fileSequence6.ts
Скопіюйте код
3. живі правила оновлення m3u8
Список діючих файлів m3u8 потрібно постійно оновлювати, правила оновлення:
Видаліть верхній (думайте про відтворений) файл із списку відтворення файлу
Постійно оновлюйте тег EXT-X-MEDIA-SEQUENCE, збільшуючи на 1
4. Експеримент
Напишіть невелику програму для створення живого m3u8 для тестування
Використання:
m3u8_gen.exe start_num list_count тривалість ім'я файлу.m3u8 [префікс]
Приклад використання:
m3u8_gen.exe 1 3 10 live.m3u8 hls /
Створити файл live.m3u8 як
Скопіюйте код
#EXTM3U
# EXT-X-MEDIA-SEQUENCE: 1
# EXT-X-ЦІЛЬНА ЦІЛЬ: 10
# EXTINF: 10
hls / 1.ts
# EXTINF: 10
hls / 2.ts
# EXTINF: 10
hls / 3.ts
Скопіюйте код
Напишіть сценарій BAT для оновлення файлу live.m3u8 кожні 10 секунд
Скопіюйте код
@ ECHO OFF
f
|
Введіть електронну адресу, щоб отримати сюрприз
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
Категорії
Інформаційний бюлетень