从HTTP Live Streaming播放视频时访问AVPlayer的数据

6

我正在使用AVPlayer播放HTTP Live Streaming视频。

有没有办法访问播放器缓存的数据并将其保存到本地?


1
据我所知,你无法从直播流中实现这一点。 - Vlad
那也是我的经验。 - V1ru8
你们知道是否有一种方法可以通过自定义组件先读取流来保存数据,然后再将其转发给AVPlayer吗?我真的很想找到一种保存数据的方法... - MartinMoizard
嗨@MartinMoizard,缓存方面的事情进展如何?你能分享一下你的经验吗? - sahara108
1个回答

10

简而言之,这并非不可能,但结果很可能不会太好。

请注意,HTTP视频流实际上包含多个带宽流。每个流都分为较小的MPEG传输流块。

要播放这些流,AVPlayer通常会选择其中一个可用的带宽流,并开始预加载和播放。现在,AVPlayer开始提高要求,并开始从更高的带宽流下载块。AVPlayer会再次提高要求,直到到达最高可用带宽。一旦AVPlayer识别出在其队列中保持某个可播放长度的预加载存在问题,该过程将被反转。因此,在网络吞吐量降低的情况下,会选择更低的带宽流。虽然没有明确说明确切的实现细节,但大致上就是这样工作的。

现在想象一下,如果您在本地存储/缓存这些数据。您将获取各种带宽TS块混合-无法直接播放。此外,由于移动设备上的文件系统访问相当昂贵,因此还会对此过程产生额外的负载。

总体而言,我认为这并非完全不可能,但并不容易。我曾经阅读过有人尝试在这个问题上使用文件系统管道,但他们从未让它起作用。


1
谢谢你提醒我,我确认了我的想法。如果有任何更新,我会在这个帖子中更新。 - MartinMoizard

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接