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 비디오 스트리밍에 사용되는 파일입니다. MPEG2-TS일반적으로 길이가 약 10분인 인코딩된 비디오 세그먼트 의 URL을 지정합니다 .

  1. 서버는 이 .m3u8파일을 클라이언트에게 보냅니다.
  2. 그런 다음 클라이언트는 .ts비디오 세그먼트에 대한 URL을 추출한 다음 비디오 세그먼트를 표시합니다.

일반적인 라이브 스트리밍 조건에서는 .m3u810분마다 새 파일이 서버에서 클라이언트로 전송되므로 다음 10분 비디오 세그먼트의 URL을 알 수 있습니다. 더 이상 세그먼트가 없거나 라이브 스트리밍 이벤트가 종료되면 서버는 szatmary가 위에서 설명한 대로 더 이상 세그먼트가 없을 것이라고 클라이언트에 알리는 지시어가 포함 .m3u8된 파일을 보냅니다.#EXT-X-ENDLIST

따라서 더 이상 사용할 수 있는 세그먼트가 없기 때문에 설명대로 비디오가 "중단"됩니다.

고치다:

서버가 더 이상 세그먼트를 제공하지 않았으므로 수정이 필요하지 않습니다.

자원:

이를 감지하는 가장 좋은 도구는 다음과 같은 편집기입니다.vi(vim) 파일의 지시문을 볼 수 있으므로 지시문 .m3u8을 확인할 수 있습니다 #EXT-X-ENDLIST. 또는 파일 내용을 표시하려면 cat또는 를 사용하세요 .tail.m3u8

szatmary가 제공한 HTTP 라이브 스트리밍에 대한 IETF 초안 링크는 매우 유익하며 파일에 사용되는 모든 지시어를 설명합니다 .m3u8.

Apple이 이 프로토콜을 개발하고 정의한 이후로 다음은 정보를 얻을 수 있는 최고의 소스입니다. https://developer.apple.com/streaming/

추가 리소스는 여기에서 찾을 수 있습니다: http://en.wikipedia.org/wiki/HTTP_Live_Streaming

관련 정보