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



朋友们好,我正在OTT平台应用程序上工作,我需要像Snapchat和instagram一样非常流畅地播放视频,没有任何延迟。我正在使用Cloudinary上传视频,一切都很好,但第一次,AVPlayer需要1-2秒的时间来启动视频,这对我来说是件坏事。一旦播放视频,下次我播放同一视频时,它会以最大半秒的延迟平稳播放。

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

我试图将AVPlayer的此属性设置为false。automaticallyWaitsToMinimieStalling=false,但仍然没有成功。

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

如何减少iOS AVPlayer启动延迟

这是演示视频链接,您可以尝试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 Media services或Azure Media services,它们允许按需流媒体模型。

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

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

最新更新