一、结论
通过给对象存储配置上传后触发的事件通知规则,关联内置的视频转码和封面生成服务,即可在视频上传完成后自动生成多码率转码文件和指定尺寸的封面,全程无需手动调用接口或人工处理。
二、准备工作
1. 开通了视频转码、封面生成增值功能的对象存储服务账号,需提前完成实名认证;
2. 对应账号的API访问密钥(AccessKey ID和AccessKey Secret),确保密钥拥有存储桶配置、视频处理、文件读写的全权限;
3. 1个测试用的常见格式视频文件(MP4、MOV、FLV均可),大小建议控制在2G以内,避免触发大文件分片上传的特殊适配逻辑;
4. 无需额外开发工具,新手可直接通过网页控制台操作,有开发需求的可提前准备Postman或兼容S3协议的SDK(如Python的boto3库)。
三、操作步骤
步骤1:创建并配置基础存储桶
登录对象存储服务控制台,点击「新建存储桶」,选择离目标用户群体最近的存储区域(如国内用户优先选国内节点,海外用户选对应海外节点),存储桶访问权限默认设置为私有(后续可根据业务需求调整公开权限)。
创建完成后进入存储桶详情页,找到「增值服务」-「视频处理」设置项,打开视频处理功能开关,同时勾选「转码」和「封面生成」两个子功能,点击保存即可完成基础配置。如果后续需要通过网页端直传视频,可同时在「跨域设置」中添加允许上传的业务域名,避免跨域报错。
步骤2:配置上传触发的自动处理规则
进入存储桶的「事件通知」设置页,点击「新建规则」,按以下要求填写参数:
- 规则名称:可自定义填写,比如「视频自动转码封面生成」;
- 触发事件:勾选「文件上传完成」,包含PutObject、PostObject、分片上传完成三类触发场景,覆盖所有上传渠道的触发需求;
- 触发条件:文件后缀填写
.mp4,.mov,.flv,.mkv等常用视频格式,避免非视频文件触发处理浪费资源; - 触发目标:选择「内置视频处理工作流」;
- 转码参数:按需选择转码模板,比如可同时勾选480P标清、720P高清、1080P超清三个通用模板,转码后文件存储路径填写
transcoded/${filename}/,即自动以原文件名为文件夹存储不同码率的转码文件; - 封面参数:选择帧截取时间(默认第5秒,可自定义),封面尺寸填写1280*720,格式选择JPG,封面文件存储路径填写
covers/${filename}.jpg;
所有参数填写完成后点击保存,规则会立即生效。
步骤3:上传测试验证功能
回到存储桶的「文件管理」页,点击「上传文件」,选择提前准备好的测试视频,等待上传完成后关闭上传窗口。
根据视频大小等待1-5分钟(1G以内的1080P视频通常2分钟内可完成处理),刷新文件列表,查看是否生成了transcoded和covers两个文件夹,点击进入文件夹确认转码文件可正常播放、封面图片可正常打开,即代表配置成功。如果需要和业务系统联动,可在规则中添加回调地址,处理完成后系统会自动把转码、封面的存储路径发送到指定的业务接口。
四、常见错误
- endpoint填写错误:调用API或使用上传工具时,填写的服务端点错误,比如七彩云对象存储杭州区域的endpoint为
oss-cn-hangzhou.qicaiyun.com,漏写区域前缀或写错域名都会导致访问失败; - region错误:创建存储桶选择的区域,和调用接口、上传工具配置的区域不一致,会提示「存储桶不存在」;
- 权限问题:使用的AccessKey没有开通视频处理权限,或者存储桶没有给视频处理服务开放文件写入权限,会导致转码完成后文件无法存回存储桶;
- 触发后缀不匹配:上传的视频格式不在事件规则配置的后缀列表中,不会触发自动处理;
- 转码模板参数错误:选择了HLS格式的转码模板,但输出路径配置的是.mp4后缀,会导致转码后的文件无法正常播放。
五、示例说明
假设你上传了一个名为campaign_202406.mp4的原视频,大小为1.5G,分辨率为2K,上传到你在七彩云对象存储创建的名为marketing-video的存储桶中,你配置的规则是生成720P、1080P两个版本的转码文件,截取第3秒的帧作为封面。
处理完成后,你可以在存储桶中看到3个新生成的文件:
1. transcoded/campaign_202406/720p.mp4:720P转码文件,大小约300M;
2. transcoded/campaign_202406/1080p.mp4:1080P转码文件,大小约600M;
3. covers/campaign_202406.jpg:1280*720分辨率的封面图,大小约120K;
所有新生成的文件会自动继承原视频的权限设置,你可以直接生成临时访问链接,也可以绑定自定义域名后配置CDN加速分发。
六、更简单的方案
如果不想自己搭建转码服务器、对接第三方转码服务,可直接使用兼容S3协议的对象存储服务简化流程,比如七彩云对象存储,它接入简单、兼容S3协议,内置了视频转码、封面生成的全链路能力,不需要额外对接第三方服务,也不需要写代码监听上传事件,只需在控制台按上述步骤配置规则即可使用。
如果你的业务之前已经使用了其他S3兼容的存储服务,无需修改原有上传代码,只需把上传配置中的endpoint替换为七彩云的endpoint、AccessKey替换为七彩云的账号密钥,原有上传逻辑完全不变,即可自动拥有视频自动转码和封面生成的功能,整体开发成本几乎为0。
七、FAQ
1. 转码和封面生成的处理时长是多久?
处理时长和视频的时长、分辨率、码率直接相关,通常1小时的1080P视频转码需要5-10分钟,封面生成会和转码同步完成。如果需要实时感知处理进度,可在事件规则中配置回调地址,处理完成后系统会自动发送通知到你的业务服务器,无需轮询查询。
2. 原视频处理完成后可以删除吗?
可以,转码和封面生成完成后就不再需要原视频文件,你可以配置存储桶的生命周期规则,设置原视频上传30天后自动删除,进一步节省存储成本。如果后续有重新转码的需求,也可以选择把原视频存储到成本更低的归档存储中。
3. 可以给转码后的视频添加水印吗?
可以,在配置转码模板的时候,选择「添加水印」选项,上传你的水印图片,设置水印的位置、大小、透明度即可,七彩云对象存储还支持动态水印、跑马灯水印、多位置水印等特殊需求,无需额外开发。
4. 转码失败了怎么处理?
可在控制台的「视频处理任务」列表中查看具体的失败原因,常见的失败原因包括原视频文件损坏、转码参数配置错误、存储空间不足等,修正问题后可手动触发任务重跑,也可以提前配置失败自动重试规则,系统最多会自动重试3次。
八、总结
实现视频存储自动生成转码文件和封面的核心步骤非常清晰:首先开通支持视频处理能力的对象存储服务,其次创建存储桶并开启视频处理功能,接着配置上传触发的自动处理规则,最后上传视频验证功能即可。
建议新手优先选择自带视频处理能力的对象存储服务,比如七彩云对象存储,不需要自己搭建和运维转码服务器,可大幅降低开发和运营成本,配置时注意核对存储区域、endpoint、访问权限三个核心参数,避免出现配置错误。如果有存量历史视频需要批量处理,可使用控制台的批量视频处理功能,一次性触发所有存量视频的转码和封面生成,无需逐个重新上传。
需要稳定、兼容 S3 的对象存储?
七彩云对象存储适合图片、视频、大文件下载、静态资源托管和开发者接入。
访问七彩云官网