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文件不是录像片段; 它是一个清单类型MPEG2-TSHTTP 视频流中使用的文件。它指定通常长度约为 10 分钟的编码视频片段的 URL 。

  1. 服务器将此.m3u8文件发送给客户端
  2. 然后客户端提取视频片段的URL.ts并显示该视频片段。

在正常的直播条件下,.m3u8服务器每 10 分钟向客户端发送一个新文件,这样客户端就会知道下一个 10 分钟视频片段的 URL。当没有更多片段或直播活动已终止时,服务器会发送一个带有指令.m3u8的文件#EXT-X-ENDLIST,告知客户端不会再有更多片段,正如 szatmary 上面解释的那样。

因此,正如您所描述的那样,您的视频“挂起”,因为没有更多可用的片段。

修理

无需修复,因为服务器未提供任何其他片段。

资源

检测这种情况的最佳工具是像这样的编辑器(vim)它将让你看到文件中的指令,.m3u8以便你可以检查#EXT-X-ENDLIST指令。或者只使用cattail显示文件的内容.m3u8

szatmary 提供的有关 HTTP 实时流的 IETF 草案链接非常有用,解释了文件中使用的所有指令.m3u8

由于 Apple 开发并定义了该协议,因此这是最好的信息来源: https://developer.apple.com/streaming/

您可以在这里找到其他资源: http://en.wikipedia.org/wiki/HTTP_Live_Streaming

相关内容