内容聚合
新闻,或者说资讯目前是内容聚合的典范,涌现出了一批优秀的APP。比如网易新闻、今日头条和一点资讯等。今日头条的崛起,昭示着对内容聚合后,如果对用户行为进行再分析,给用户以瀑布流不断展示推荐的新闻内容。
[内容] --> [聚合] --> [用户行为] --> [推荐算法] --> [瀑布流新闻]
视频播放器
视频播放器,作为一款基本的视频流解析器,可以作为一个内容聚合地,可以对用户进行视频推荐。
- 数据:采用用户的观看历史
- 数据加工:如果本身存在视频库,可以对视频映射到视频库,实现视频库的流量回环
- 推荐:分析用户观看行为、以及结合视频内容的属性(比如:类型、时长)等,进行视频推荐。
数据缺陷
视频播放器能获取到播放视频的标题、webUrl、视频时长、视频流格式等信息。但是,视频封面这个信息播放器是获取不到的。 这个缺陷往往想到的方法是采用:推荐算法计算出推荐视频之后,再离线截图去填充视频的封面信息。带来以下问题:
- 推荐的视频通过截图算法,获取不到,导致推荐结果的减少
- 对于获取不到视频封面的数据,对于推荐算法来说,就是脏数据。意味着算法一开始就引入了脏数据,影响推荐效果。
基于上面原因,采用了实时截图的方式,即上报用户观看视频的时候,就对视频进行截图处理,将是否有视频封面上报给推荐系统。
视频封面实时获取
视频封面获取,存在以下几个问题:
- 用户上报的数据量非常大(一天有5亿条记录);
- 截图算法
方法:
涉及的点:
- 5亿的流量里面,采用二八原则,80%的流量集中在主流站点,因此只对主流站点进行截图;
- 只针对热门视频进行截图,因此采用频率控制(一段时间内容用户观看次数超过阈值的视频才会进行截图队列;
- 如果一个热门视频进入了截图队列,但是视频封面还未生成。或者,该视频通过截图算法获取不到视频封面。这时候,会出现对频率控制服务以及截图队列的冲击。因此,在判断是否有视频封面的时候,将无截图的视频放入图片DCache里面(用于标识该视频已经进入过截图队列,不用走后面的逻辑)。同时,增加无视频封面的视频在图片DCache里面1h失效的机制,让其1h后再次进入截图队列。
- 截图算法采用分析站点获取视频封面的逻辑,模拟请求获取主资源或者是js的方式,得到视频封面!(存在截图算法失效的情况,要进行监控。并且,实际验证算法失效频率一般在几个月以上或者更长)
- 有视频封面的视频,由于有视频过期的风险,采用7天视频截图失效的机制。即,用户七天内如果用户没有观看过该视频,则视频封面将会被删除,也就不会被推荐系统推荐出来。
- 截图队列采用多生产者多消费者的处理方式。
截图方法示例:
业务运营
业务运营,是对视频播放器推荐的补充,达到这个功能的终极目的:广告和业务回流。因此,目前的视频播放器推荐集合了一堆业务逻辑,给业务带来了一定的收益。