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

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

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

Буду признателен, если кто-нибудь сможет мне помочь

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

2 ответа2

2

У меня так проблем нет. Этот 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 обновлялся.

http://tools.ietf.org/html/draft-pantos-http-live-streaming-12

2

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

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

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

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

Исправить:

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

Ресурсы:

Лучший инструмент для обнаружения этого - это редактор вроде vi (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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .