客户端上传指引

最近更新时间:2019-06-17 16:58:08

所谓客户端视频上传,是指 App 的最终用户将本地视频上传到点播平台。客户端上传的整体流程如下图所示。
客户端上传流程图

准备工作

开通服务

如果您尚未开通点播服务,则需要先开通服务,详情请参见 购买流程

获取云 API 密钥

客户端上传在申请上传签名的时候需要使用腾讯云密钥,即 SecretId 和 SecretKey。
其具体步骤如下:

  1. 登录 腾讯云控制台
  2. 单击【云产品】,选择【监控与运维】>【API密钥管理】,进入云 API 密钥管理页面。
  3. 获取云 API 密钥。如下图所示:
    如果您尚未创建密钥,则单击【新建密钥】,即可创建一对 SecretId/SecretKey。
    SecretID and SecretKey

搭建签名派发服务

在客户端上传场景下,客户端是直接将视频文件上传到腾讯云点播,不需要由 App 服务端进行中转。因此,腾讯云点播必须对发起请求的客户端进行鉴权。但由于 SecretKey 的权限过大,App 不应该将此信息泄露到客户端,否则将会造成严重的安全问题。
因此,客户端在发起上传之前,必须要到 App 的签名派发服务申请上传签名,即流程图中的第1步。该步骤可以走 App 的客户端和服务器之间的任何安全通道。
App 服务器生成上传签名的算法请参见:客户端上传签名
多语言签名生成示例代码请参见:

服务搭建完毕之后,开发者可以通过腾讯云点播提供的工具来校验签名的正确性:

客户端集成

点播上传提供 Android、iOS、Web 三大平台的 SDK 方便客户接入。详情请参见:

事件通知

视频上传完成之后,腾讯云点播会给 App 后台发起 事件通知 - 视频上传完成,即业务流程图中的第3步,App 台可以据此感知到视频上传行为。
要接收事件通知,App 首先需要到点播控制台开通事件通知,参见 回调配置
事件通知 - 视频上传完成 主要包含如下几项信息:

  • 新视频文件的 FileId 和 URL。
  • 点播支持在视频上传时指定自定义透传信息,上传完成时点播会将透传信息一并通知到 App 后台。在事件通知中有2个字段:SourceTypeSourceContextSourceType 被腾讯云固定成 ClientUpload,表示上传来源为客户端上传;SourceContext 是用户自定义透传字段,App 后台可以在派发客户端上传签名时指定它的内容(对应 客户端上传签名 中的 sourceContext 参数),在上传事件回调时会透传回来。
  • 点播支持在视频上传完成时自动发起视频处理,如果上传时指定了 视频处理任务流,则在事件通知内容中也会携带任务 ID(事件通知中的 data.procedureTaskId 字段)。

更多信息请参见:

高级功能

上传时指定任务流

如果开发者需要在视频上传完成后自动发起 视频处理任务流(例如转码、截图等),可以在生成 上传签名 时通过 procedure 参数来实现。参数值为任务流模板名,云点播支持 创建任务流模板 并为模板命名。发起任务流时,可以用任务流模板名字来表示要发起的任务。

上传时附带封面

在视频上传过程中,点播允许携带封面上传。具体的就是在上传 SDK 接口中填写相关的封面路径,详情请参见:

单次有效签名

在视频上传过程中,App 后台派发的签名默认是在有效期内是可以多次使用的。如果 App 对视频上传安全性要求很高,可以指定签名单次有效。单次有效签名意味着这个签名有且只能被使用一次。值得注意的是这种签名方式虽然更加安全,但是需要 App 做额外的异常处理,例如,上传出错时,不能简单地只是重试流程图步骤2中的 “使用 SDK 上传视频”,还需要重新执行步骤1,即 App 后台服务器需要重新派发签名。
使用单次有效签名的方式是:在 App 后台派发签名时,指定参数 oneTimeValid 为1即可。详情请参见 客户端上传签名

断点续传

在视频上传过程中,点播支持断点续传,即当上传意外终止时,用户再次上传该文件,可以从中断处继续上传,减少重复上传时间。断点续传的有效时间是1天,即同一个视频上传被中断,那么1天内再次上传可以直接从断点处上传,超过1天则默认会重新上传完整视频。App 需要断点续传的功能时,只需要在上传时指定启用该功能即可,具体如下:

暂停/恢复/取消上传

在视频上传过程中,点播 SDK 允许暂停、恢复、取消上传。详情请参见:

常见问题

如何在视频上传完成之后自动发起转码?

可以通过客户端上传签名中的 procedure 参数指定视频上传完成之后的处理方式,详情请参见 上传时指定任务流

App 后台收到视频上传完成通知,如何识别是哪个客户上传的?

在客户端上传签名中增加 sourceContext 参数,通过该参数来携带用户身份信息。上传完成通知会将该参数原样携带给 App 后台。详情请参见 事件通知