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-TARGETDURATION: 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: ID-ПРОГРАММЫ = 1, BANDWIDTH = 1280000
# EXT-X-STREAM-INF: ID-ПРОГРАММЫ = 1, BANDWIDTH = 2560000
# EXT-X-STREAM-INF: ID-ПРОГРАММЫ = 1, BANDWIDTH = 7680000
# EXT-X-STREAM-INF: PROGRAM-ID = 1, BANDWIDTH = 65000, CODECS = "mp4a.40.5"
http://example.com/audio-only.m3u8
Единый поток адаптации скорости
#EXTM3U
# EXT-X-TARGETDURATION: 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-TARGETDURATION
Определите максимальную продолжительность каждого 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 определяет скорость передачи данных
PROGRAM-ID уникальный ID
CODECS указывает тип кодирования потока
# EXT-X-DISCONTINUITY
При обнаружении тега изменяются следующие атрибуты:
Формат файла
количество и тип треков
параметры кодирования
кодирующая последовательность
последовательность отметок времени
# EXT-X-VERSION Этот атрибут можно использовать или нет, его нельзя.
M3U8 делится на M3U8 верхнего уровня и M3U8 второго уровня. M3U8 верхнего уровня в основном используется для многоскоростной адаптации. M3U8 второго уровня - это настоящий файл среза.
По умолчанию клиент сначала выбирает запрос с наивысшим битрейтом. Если он обнаружит, что битрейт не может быть достигнут, он запросит поток с низким битрейтом.
Фактически используемый файл M3U8 верхнего уровня выглядит следующим образом:
#EXTM3U
# EXT-X-STREAM-INF: ID-ПРОГРАММЫ = 201273221265, BANDWIDTH = 358400
11.м3у8
# EXT-X-STREAM-INF: ID-ПРОГРАММЫ = 201273221265, BANDWIDTH = 972800
22.м3у8
Приведенный выше файл M3U8 верхнего уровня определяет два файла второго уровня, 11.m3u8 и 22.m3u8, и клиент выбирает один из них, чтобы получить его содержимое.
Содержимое вторичного файла M3U8 выглядит следующим образом:
#EXTM3U
# EXT-X-VERSION: 1
# EXT-X-TARGETDURATION: 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-TARGETDURATION: 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. Решение проблем
Очень грустно, что после поиска в Интернете я не нашел никакой действенной информации. Приятель столкнулся с такой же ситуацией, поделился ли он своим опытом после ее решения?
Посоветовавшись с коллегой, коллега сказал, что это возможно, потому что список файлов live m3u8 необходимо обновлять в режиме реального времени. Если мы проводим тест, мы можем сначала добавить # EXT-X-ENDLIST в конец. Этот метод протестирован Работает, но это уже не live режим m3u8
После очередного поиска в Интернете я подтвердил, что наконец нашел живое описание m3u8
Живой плейлист (скользящее окно)
Для живых сеансов индексный файл обновляется путем удаления URI мультимедиа из файла по мере создания и предоставления доступа к новым мультимедийным файлам.
Важно: тег EXT-X-ENDLIST отсутствует в списке воспроизведения Live, что означает, что новые файлы мультимедиа будут добавляться в файл индекса по мере их доступности.
В листинге 3 показан пример плейлиста в реальном времени, который будет отображаться в начале сеанса.
Листинг 3 «Живой» плейлист в начале сеанса.
Скопировать код
#EXTM3U
# EXT-X-TARGETDURATION: 10
# EXT-X-VERSION: 3
# EXT-X-MEDIA-SEQUENCE: 1
#EXTINF: 10,
файлSequence1.ts
#EXTINF: 10,
файлSequence2.ts
#EXTINF: 10,
файлSequence3.ts
#EXTINF: 10,
файлSequence4.ts
#EXTINF: 10,
файлSequence5.ts
Скопировать код
Значение тега EXT-X-MEDIA-SEQUENCE ДОЛЖНО увеличиваться на 1 для каждого URI мультимедиа, который удаляется из файла списка воспроизведения. URI мультимедиа должны быть удалены из файла списка воспроизведения в том порядке, в котором они появляются в списке воспроизведения. Обновленный индексный файл представляет собой движущееся окно в непрерывный поток. Этот тип сеанса подходит для непрерывных трансляций.
Вот тот же список воспроизведения после того, как он был обновлен новыми URI мультимедиа:
Листинг 4 Live Playlist после обновления URI мультимедиа.
Скопировать код
#EXTM3U
# EXT-X-TARGETDURATION: 10
# EXT-X-VERSION: 3
# EXT-X-MEDIA-SEQUENCE: 2
#EXTINF: 10,
файлSequence2.ts
#EXTINF: 10,
файлSequence3.ts
#EXTINF: 10,
файлSequence4.ts
#EXTINF: 10,
файлSequence5.ts
#EXTINF: 10,
файлSequence6.ts
Скопировать код
3. правила обновления live m3u8
Список живых файлов m3u8 необходимо постоянно обновлять, правила обновления:
Удалите верхний (думаю, что воспроизведенный) файл в списке воспроизведения файлов
Постоянно обновлять тег EXT-X-MEDIA-SEQUENCE, увеличивая на 1
4. Эксперимент
Напишите небольшую программу для создания live m3u8 для тестирования
Применение:
m3u8_gen.exe start_num list_count продолжительность filename.m3u8 [префикс]
Пример использования:
m3u8_gen.exe 1 3 10 live.m3u8 hls /
Создайте файл live.m3u8 как
Скопировать код
#EXTM3U
# EXT-X-MEDIA-SEQUENCE: 1
# EXT-X-TARGETDURATION: 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 Беспроводная передача видео и аудио еще проще!
Контакты
Адрес:
Номер 305, здание Хуэйлань, дом 273 Хуанпу, Гуанчжоу, Китай, 510620
Категории
Новостные рассылки