【问题标题】:Access the data of AVPlayer when playing video from HTTP Live Streaming从 HTTP Live Streaming 播放视频时访问 AVPlayer 的数据
【发布时间】:2011-12-21 15:52:44
【问题描述】:

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

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

【问题讨论】:

  • 据我所知,您无法通过直播做到这一点。
  • 这也是我的经验
  • 你们知道吗,有没有办法先通过自定义组件读取流来保存数据,然后将其转发到 AVPlayer?我真的很想找到一种方法来保存数据...
  • 嗨@MartinMoizard,缓存的进展如何?你能分享你的经验吗?

标签: iphone objective-c ios avplayer


【解决方案1】:

TLDR;这并非不可能,但结果很可能不会那么好。

请记住,HTTP 视频流实际上由多个带宽流组成。每一个都被分成更小的 MPEG 传输流块。

为了播放这些流,AVPlayer 通常会选择可用带宽流之一,开始预加载并很快开始播放。现在 AVPlayer 开始提高标准并开始从更高带宽的流中下载块。 AVPlayer 将再次提高标准,直到达到最高可用带宽。一旦 AVPlayer 发现在其队列中保持一定的可播放长度存在问题,该过程将被反转。因此,如果网络吞吐量降低,则选择较低带宽的流。没有具体说明具体的实现细节,但大致就是这样。

现在假设您将在本地存储/缓存该数据。您将获得各种带宽 TS 块的混合 - 不是您可以开箱即用播放的任何内容。此外,由于如今移动设备上的文件系统访问相当昂贵,您还会在此过程中增加额外的负担。

总的来说,我认为这并非完全不可能,但绝不是微不足道的。我读过有人在这个问题上尝试使用文件系统管道,但他们从未成功过。

【讨论】:

  • 感谢您的提醒,我确认了我的想法。如果我有任何更新,我会更新这个帖子
猜你喜欢
  • 1970-01-01
  • 2011-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
  • 2016-10-02
相关资源
最近更新 更多