我正在构建一个iOS应用,可以播放最长15秒的视频。我读了很多关于HLS的东西,所以我一直在转录段大小为5秒的视频。如果视频的第一部分需要很长时间才能加载,那么我们可以在接下来的10秒内恢复到较低的质量。
但是,我不确定增加的复杂性是否值得。主要缺点是我们需要为网络转换其他视频。另一个问题是iOS上的AVPlayer基本上是一个黑盒子,并且很难或不可能构建诸如将段缓存到磁盘或重新使用视频之间的带宽测量等功能。我认为我们必须从头开始构建自己的HLS播放器,以便我们可以拥有这些功能,这需要付出很多努力。
答案 0 :(得分:2)
如果视频长度仅为15秒,则使用HLS可能会过度。是的AVPlayer是一个黑盒子,根据我的经验,我没有看到它只播放一个片段后进行比特率切换。我认为它的行为完全相反,即它从低比特率开始播放然后颠簸到更高的比特率(不完全确定这个比特率)。
关于编写自定义播放器,您可以通过本地http代理发送来自AVPlayer的所有请求,并尝试将智能缓存逻辑放在那里。我已经看到一些应用程序为受DRM保护的内容执行此操作,但针对非DRM内容执行此操作可能无法通过应用商店批准。
答案 1 :(得分:0)
如果您在移动用户中占有很大份额(这就是您的情况),并且您提供了3MB或更多的短高清视频,则HLS很有用。
但是,您不能遵循Apple的一般建议来定义比特率阶梯和编码参数。首先,对于简短的视频,您应该使用简短的块。其次,为了优化目标视觉质量的权重,按标题编码变得非常重要。
您可以观看显示HLS at work for a short (9 seconds) clip with different connection conditions的简短视频。我已准备好post in freecodecamp来解决此问题。
如果不想进行开发工作,则可以使用ffmpeg对视频进行编码,也可以使用云服务。从外部对短视频进行编码可能非常便宜。这里的重点是确保编码参数(块持续时间,分辨率和比特率)适合您的内容。