我们在观看、使用短视频软件时,每次切换视频基本都是秒播,偶尔网不好了可能等1-2秒就恢复了,能有这么好的观看体验,多亏了短视频软件开发的预加载功能,预加载和我们常说的缓存差不多,通过提前缓存当我们在切换时能快速实现播放,减少等待的时间。那么在当前技术下,短视频软件开发还有必要针对预加载进行升级吗?另外,缓冲、缓存和预加载又是什么关系呢?
一、视频缓冲
短视频软件开发的缓冲往往发生在观看视频时,视频在预加载时会有一个缓冲层的概念,数据的发送和接收都要经过缓冲层,缓冲层的大小设置非常有讲究,太大会浪费过多的带宽,太小又会影响数据传输的效率,短视频软件需要根据情况调整缓冲区大小。
二、 视频缓存
在观看短视频时,短视频软件开发为了用户更好的观看体验会提前缓存视频,防止视频播放卡顿。短视频通过预加载缓存了部分视频,观看视频时是从已缓存的视频后面进行缓存。每次缓存前,读取已缓存视频的大小,然后设置请求头Range进行缓存。
为了方便管理缓存,会创建三个缓存目录,短视频缓存未完成放入目录temp,缓存完成后移入目录media,需要删除的移入目录trash。通过配置ShortMediaCache,缓存可以进行自动管理。
三、视频预加载
短视频软件开发的视频格式对预加载来说是很重要的,这关系到视频的解码速度、播放器的探测时间、是否与手机兼容。在短视频软件开发的过程中,一般会使用H.264 或 H.265对视频进行编码,使用H.264编码可保证更高的视频质量和低码率, H.265在拥有H.264特性的基础上,有着更高的压缩效率和视频画质,并且传输码率更低。
通常短视频软件开发会选择H.265+MP4+ACC的组合,选定视频格式后,可以在ffmpeg build config里移除用不到的格式,减少播放端对视频格式的探测时间。
短视频软件开发在预加载上的投入是很有必要的,不论是从哪方面来讲,对平台、对用户起到的都是正面效果,要注意的是要合理使用预加载功能,毕竟加载内容越多,占用的资源就越多。