Ниже представлен небольшой экспериментальный клип:
http://d3fnzeq4kk32oq.cloudfront.net/802/test_1.m3u8
Проблема, с которой я столкнулся, заключается в том, что через несколько секунд видео зависает.
Я был бы признателен, если бы кто-то смог мне помочь.
- Определите проблему
- Любое исправление
- Любой инструмент для обнаружения или устранения
решение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 минут.
- Сервер отправляет этот
.m3u8
файл клиенту - Затем клиент извлекает 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