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. После кодирования передайте его в Stream Segmenter в виде транспортного потока MPEG-2.
4. Слайсер создает индексный файл и список воспроизведения ts, индексный файл используется для указания положения аудио и видео, а ts является настоящим мультимедийным клипом.
5. Поместите ресурсы из предыдущего шага на HTTP-сервер.
6. Клиент запрашивает индексный файл для воспроизведения, и воспроизводимый контент можно найти через индексный файл.
М3У8
Ключевым шагом для реализации HLS является четвертый шаг выше, а именно организация индексных файлов и списков воспроизведения ts. Здесь используется формат M3U8. M3U8 - это версия 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 - это путь к содержимому, который может быть относительным или абсолютным путем.
Файл списка Master M3U8
Основной индексный файл M3U8 обычно используется для указания нескольких источников индекса. Давайте сначала проанализируем содержимое основного файла m3u8 hls_vod_mvp.m3u8, его заголовок такой
Формат заголовка
#EXTM3U
# EXT-X-VERSION: 7
# EXT-X-INDEPENDENT-SEGMENTSСкопировать код
# EXTM3U указывает, что файл имеет формат M3U, и все файлы формата M3U должны помещать содержимое в первую строку.
# EXT-X-VERSIOn указывает на совместимую версию списка воспроизведения, которой сейчас является 7.
# EXT-X-INDEPENDENT-SEGMENTS Этот тег указывает, что все выборки мультимедиа в сегменте мультимедиа могут быть декодированы независимо, не полагаясь на другую информацию сегмента мультимедиа.
Формат субтитров
Содержимое ниже - это некоторые подписи, содержимое подписей не обязательно.
# 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 = "Chinese", DEFAULT = YES, AUTOSELECT = YES, FORCED = NO, LANGUAGE = "zho", URI = "subtitles / zho / prog_index.m3u8 "
# EXT-X-MEDIA: TYPE = SUBTITLES, GROUP-ID = "subsC", NAME = "Chinese", DEFAULT = YES, AUTOSELECT = YES, FORCED = NO, LANGUAGE = "zho", URI = "subtitles / zhoc / prog_index.m3u8 "Скопировать код
# EXT-X-MEDIA используется для указания многоязычных ресурсов списка мультимедиа с одинаковым содержанием.
TYPE - это тип ресурса, а необязательное содержимое: AUDIO, VIDEO, SUBTITLES, 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 с субтитрами. subtitles / eng / prog_index.m3u8 - относительный путь,
С помощью приведенной выше информации мы можем проанализировать значение вышеуказанного контента следующим образом: Текущее видео поддерживает три субтитра: английский, японский и китайский. Но на каждом языке есть два сообщения EXT-X-MEDIA. Разница между ними заключается в группировке, одна из которых сгруппирована в подпрограммы, а другая - в подпрограммы C. Почему есть две группы? Об этом я расскажу позже.
формат видео
Снова посмотрите вниз, чтобы увидеть указатель видеоконтента:
#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 - это 827299 бит / с, что является максимальным временем пиковой нагрузки. Потребляет 101 КБ трафика в секунду.
AVERAGE-BANDWIDTH - средняя скорость передачи данных, 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 - это имя соответствующей группы субтитров. Приведенная выше информация о субтитрах имеет идентификатор группы, и это значение ему соответствует.
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 - это идентификатор группы, соответствующий содержимому АУДИО в 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.тс
#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 Беспроводная передача видео и аудио еще проще!
Контакты
Адрес:
Номер 305, здание Хуэйлань, дом 273 Хуанпу, Гуанчжоу, Китай, 510620
Категории
Новостные рассылки