如何在 iOS 中的 HLS(m3u8) 播放期间找出当前的 TS 段?

Posted

技术标签:

【中文标题】如何在 iOS 中的 HLS(m3u8) 播放期间找出当前的 TS 段?【英文标题】:How can I find out the current TS segment during a HLS(m3u8) playback in iOS? 【发布时间】:2013-11-09 03:06:44 【问题描述】:

HLS (m3u8) 文件引用 mpeg-ts 文件。在ios的AVPlayer播放过程中,如何判断当前播放的mpeg-ts URI?

【问题讨论】:

您能提供一个您的 m3u8 文件的网址吗? 我的问题是针对任何通用 m3u8 文件,您可以在 developer.apple.com/library/ios/technotes/tn2288/_index.html 上获得示例 【参考方案1】:

如果您正在寻找对当前下载 TS 的 URI 的引用,则它不可用。您可以通过查看当前AVPlayerItem-accessLog 来获取当前比特率的流的URI。

例如: [[[player currentItem] accessLog] events]

这是AVPlayerItemAccessLogEvent 中的NSArray

但它不会为您提供 TS 本身的 URI。您可能只需要根据播放头当前所在的位置与持续时间以及片段大小的关系来计算当前 TS。

【讨论】:

这在自适应流的情况下不起作用,在这种情况下,您可能有不同的 m3u8 用于同一视频的不同再现。 我不认为你可以通过这种方式计算当前的 TS,因为无法获取初始偏移量(EXT-X-MEDIA-SEQUENCE:138),API 只是不提供访问权限给它。

以上是关于如何在 iOS 中的 HLS(m3u8) 播放期间找出当前的 TS 段?的主要内容,如果未能解决你的问题,请参考以下文章

m3u8和HLS分析工具

Video.js HTML5播放器可以播放m3u8播放列表(HLS)?

Winamp - HLS 收音机 (m3u8)

如何为 HLS 创建字节范围的 m3u8 播放列表?

下载和播放离线 HLS 内容 - iOS 10

关于H5播放Http Live Streaming m3u8格式视频