如何减少 AVPlayer 播放视频的初始缓冲时间?

问题描述

你好朋友, 我正在开发 ott 平台应用程序,我需要像 Snapchat 和 instagram 一样非常流畅地播放视频,没有任何延迟作为参考。我正在使用 Cloudinary 上传视频,一切正常,但第一次,AVPlayer 需要 1-2 秒的时间来启动视频,这对我来说是件坏事。视频播放后,下次我播放同一视频时,它会流畅播放,最大延迟减少半秒。

就我尝试通过不同的博客和堆栈流答案学习而言,我摆脱了这是认的 AVPlayer 缓冲时间,它取决于视频持续时间及其获取的视频信息,如标题、元数据等。但我不知道必须在任何地方使用这些信息。

我试图将 AVPlayer 的这个属性设置为 false。automaticallyWaitsToMinimizeStalling = false,但仍然没有运气。

我尝试了 StackOverflow 帖子中的几个解决方案,但没有成功

How to reduce iOS AVPlayer start delay

这是演示视频链接,您可以尝试http://res.cloudinary.com/dtzhnffrp/video/upload/v1621013678/1on1/bgasthklqvixukocv6xy.mov

如果可以给点建议,我可以用什么ott平台流畅播放视频真的很感谢大家...

提前致谢

解决方法

大多数流媒体服务使用 ABR,它会创建视频的多个分辨率副本,并将每个副本分成 2-10 秒的典型块。

ABR 的一个好处是,为了加快播放启动速度,视频可以以较低的分辨率比特率开始,然后在播放过程中“逐步提高”到更高的比特率。

您经常可以在流行的流媒体服务上看到这种情况,在这些服务中,您会发现视频开始时视频质量较低,并在短时间内有所改善。

有关 ABR 的更多信息,请参阅此处:https://stackoverflow.com/a/42365034/334402

这需要您在服务器端进行工作,为 HLS 和 DASH 流媒体(两种最常见的 ABR 流媒体协议)准备视频。

通常使用专用流媒体服务器或编码器和打包器的组合来准备和提供 ABR 流。还有云服务,例如 AWS 媒体服务或 Azure 媒体服务,它们允许点播流模型。

,

您可以通过减小尺寸或进一步压缩来缩小视频。这两者都具有降低启动时间的效果 - 但会牺牲质量作为交换。

Cloudinary 会为您创建 ABR 版本,但我上次检查时,您为创建的每个版本付费。