M3U8 зависает через несколько секунд

M3U8 зависает через несколько секунд

Ниже представлен небольшой экспериментальный клип:

http://d3fnzeq4kk32oq.cloudfront.net/802/test_1.m3u8

Проблема, с которой я столкнулся, заключается в том, что через несколько секунд видео зависает.

Я был бы признателен, если бы кто-то смог мне помочь.

  1. Определите проблему
  2. Любое исправление
  3. Любой инструмент для обнаружения или устранения

решение1

Я так что никаких проблем. Этот m3u8 указывает на последние пару секунд того, что было прямой трансляцией.

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-ALLOW-CACHE:NO
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:54675
#EXTINF:10.0,
http://d3fnzeq4kk32oq.cloudfront.net/802/chunk-20131128_0122_54675.ts
#EXTINF:2.188,
http://d3fnzeq4kk32oq.cloudfront.net/802/chunk-20131128_0123_54676.ts
#EXTINF:10.0,
http://d3fnzeq4kk32oq.cloudfront.net/802/chunk-20131128_0123_54677.ts
#EXT-X-ENDLIST

HLS разбивает видео на сегменты. Этот плейлист начинается с сегмента номер 54675 и заканчивается на 54677. #EXT-X-ENDLISTговорит плееру остановить воспроизведение, так как у нас закончились сегменты.

Пока трансляция была в прямом эфире, m3u8 обновлялся.

https://datatracker.ietf.org/doc/html/draft-pantos-http-live-streaming-12

решение2

Файл .m3u8не являетсявидеоклип; этоманифест-типФайл, который используется в потоковой передаче видео по HTTP. Он определяет URL MPEG2-TSзакодированных видеосегментов, которые обычно имеют длину около 10 минут.

  1. Сервер отправляет этот .m3u8файл клиенту
  2. Затем клиент извлекает URL-адрес видеофрагмента .tsи отображает видеофрагмент.

При нормальных условиях прямой трансляции новый .m3u8файл отправляется с сервера клиенту каждые 10 минут, поэтому он будет знать URL следующего 10-минутного видеосегмента. Когда больше нет сегментов или событие прямой трансляции завершилось, сервер отправляет файл .m3u8с #EXT-X-ENDLISTдирективой, которая сообщает клиенту, что дальнейших сегментов не будет, как объяснил выше szatmary.

Таким образом, ваше видео «зависает», как вы и описали, поскольку больше нет доступных сегментов.

Исправить:

Исправление не требуется, поскольку сервер не предоставил дополнительных сегментов.

Ресурсы:

Лучшим инструментом для обнаружения этого является такой редактор, какви(vim), который позволит вам увидеть директивы в .m3u8файле, чтобы вы могли проверить наличие #EXT-X-ENDLISTдирективы. Или просто используйте catили , tailчтобы показать содержимое файла .m3u8.

Ссылка на проект IETF по HTTP Live Streaming, которую дал szatmary, очень информативна и объясняет все директивы, используемые в файле .m3u8.

Поскольку Apple разработала и определила этот протокол, это лучший источник информации: https://developer.apple.com/streaming/

Дополнительные ресурсы можно найти здесь: http://en.wikipedia.org/wiki/HTTP_Live_Streaming

Связанный контент