全部产品
云市场

使用阿里云播放器实现全屏秒播

更新时间:2019-03-08 10:35:52

全屏秒播方案说明

在短视频的体验中,起播速度是最影响体验的指标之一,因为短视频非常短,十几秒到几分钟不等,如果一个十几秒的视频,加载时间都要五六秒,肯定是一个很坏的体验;所以在产品定义之初,起播速度就设定了控制在1秒左右,大部分在1秒内,也就是业内说的“秒播”,这需要对播放流程进行优化。但是一般的要做到秒开播放器整体需要做非常多策略,阿里云播放器目前能够做到秒开1秒以内的体验.本文不对具体播放器技术细节做探讨,主要是针对如何用阿里云播放器快速实现全屏秒播的完整方案输出,主要通过三个手段实现该需求:首帧图和播放的首帧画面一致 + 播放器预加载 + 边播边缓存。本方案在WiFi环境下可以做到平均300毫秒左右的起播速度。

封面策略

策略一:显示视频的时候先显示封面,然后再播放视频,如果保证封面图和第一帧画面一致,则用户感觉不到是封面的存在。这样就造成了视频秒开极快的假象。策略二:在快速滑动的时候仅仅只请求封面图。策略三:同时在用户滑动到一半的时候,展现预先下载的一个封面图

预加载视频策略

策略一. 创建多个播放器

  • 由于播放器不支持边播放边准备的功能,所以实现预加载的功能需要创建多个播放器。

策略二. 预加载资源

  • 用闲置的播放器对象提前准备接下来需要播放的视频。
  • Android对应的方法为AliyunVodPlayer.prepareAsync()。
  • iOS对应的播放器类为AliyunVodPlayer 方法名为:```Objective-C/ 功能:临时AccessKeyId、AccessKeySecret和SecurityToken:开启RAM授权,并通过STS授权系统提供的OpenAPI或SDK获取的AccessKeyId、AccessKeySecret和SecurityToken,用于播放和下载请求备注:参数明细->https://help.aliyun.com/document_detail/28788.html?spm=5176.doc28787.6.706.2G5SLS 版本:3.2.0版本使用*/
  • (void)prepareWithVid:(NSString *)vid
    1. accessKeyId:(NSString *)accessKeyId
    2. accessKeySecret:(NSString *)accessKeySecret
    3. securityToken:(NSString *)securityToken;
    ```

启用边播边缓存功能

边播边下缓存功能是在视频被成功播放后,文件会缓存到本地,再次播放视频时会直接使用本地缓存文件,不再走网络请求。

可设置下载路径、最大下载数据(单位:MB)、单一视频最大允许下载的时长(单位:秒)

  1. //Android代码示例
  2. //设置缓存目录路径。在创建播放器类,并在调用prepare方法之前设置。
  3. String sdDir = Environment.getExternalStorageDirectory().getAbsolutePath() + "/test_save_cache";
  4. aliyunVodPlayer.setPlayingCache(true, sdDir, 60 * 60 /*单个文件的最大时长, s */, 300 /*缓存目录文件的总大小,MB*/);
  5. //比如:maxSize设置500M时缓存文件超过500M后会优先覆盖最早缓存的文件。maxDuration设置为300秒时表示超过300秒的视频不会启用缓存功能。
  6. //iOS代码示例
  7. //设置缓存目录路径
  8. NSArray *pathArray = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
  9. NSString *docDir = [pathArray objectAtIndex:0];
  10. //在创建播放器类,并在调用prepare方法之前设置。比如:maxSize设置500M时缓存文件超过500M后会优先覆盖最早缓存的文件。maxDuration设置为300秒时表示超过300秒的视频不会启用缓存功能。
  11. [self.aliPlayer setPlayingCache:YES saveDir:docDir maxSize:500 maxDuration:300];

功能限制说明:1.缓存功能仅针对被完整播放的视频(seek后无效),主要用于短视频循环播放场景。3.需要在播放器prepare之前调用。

启动CDN预热

  1. 进入控制台,在视频点播中找到刷新预热选项。在操作类型中选择预热,填写需要预热的视频URL

undefined

  1. 预热策略由于CDN预热有一定成本,可根据视频热度进行预热,将视频主动预热在阿里云各个节点上