视频上传

推荐流的上游是内容供给。用户能刷到什么,首先取决于创作者上传的视频能否稳定进入系统。

视频上传比普通文件更复杂,因为它通常需要转码、截图、审核和多清晰度处理。

状态流转

一个视频从上传到可推荐,可以经历这些状态:

uploading -> uploaded -> transcoding -> auditing -> published -> recommendable
                                             -> rejected

状态要写入元数据表,推荐系统只消费 recommendable 的内容。还在审核或转码的视频不能进入推荐池。

上传与转码

视频文件大,上传通常采用分片上传到对象存储。上传完成后触发异步转码任务:

  • 生成多码率版本,例如 360p、720p、1080p。
  • 生成封面和首帧预览。
  • 提取时长、分辨率、码率、文件大小。
  • 生成播放清单,例如 HLS 或 DASH。

转码是耗时任务,不能阻塞上传接口。用户看到的状态应该是“处理中”,处理完成后再发布。

内容审核

视频进入推荐池前需要审核:

  • 机器审核:涉黄、暴恐、版权、低质画面。
  • 文本审核:标题、描述、标签。
  • 人工复核:机器不确定或高风险内容。

审核结果不只是通过或拒绝,还会影响推荐权重。例如边界内容可以发布但不进推荐,只允许主页访问。

内容特征

推荐系统需要内容特征:

  • 作者、标签、分类、语言、地域。
  • 视频时长、清晰度、封面质量。
  • 图像、音频、文本 embedding。
  • 审核风险等级。

这些特征会进入召回和排序。内容服务不仅要保存视频,还要把可推荐特征同步给推荐系统。

入库与发布

发布时要保证三件事:

  1. 播放资源已经可访问。
  2. 审核状态允许推荐。
  3. 内容特征已经准备好或有降级默认值。

内容供给链路做好后,下一步要保证用户刷到视频时能快速播放。