一、结论
你可以通过为S3存储桶配置对象创建事件触发规则,关联官方或第三方媒体转码服务,设置好转码参数和封面截取规则后,即可实现新上传视频自动转码、自动生成封面并回存到S3指定路径的效果,全程无需人工干预。
二、准备工作
1. 已开通S3对象存储服务的云账号,且账号拥有桶配置、权限管理的操作权限
2. 已获取S3服务的AccessKey ID和AccessKey Secret,密钥需拥有S3桶的读写权限
3. 已开通与S3同区域的媒体处理/视频转码服务,部分云厂商需单独为转码服务授权S3访问权限
4. 本地可选安装AWS CLI/S3cmd等S3客户端工具,用于测试上传效果
5. 准备1个小于1GB的常规格式测试视频(MP4、MOV、AVI均可,无加密、无损坏)
三、操作步骤
步骤1:创建S3存储桶并配置权限与目录
1. 登录S3对象存储控制台,点击「创建存储桶」,输入全局唯一的桶名(仅支持小写字母、数字和短横线,不可包含特殊字符),选择距离你业务最近的区域,其他默认配置点击确认创建即可。
2. 进入新建的桶详情页,找到「权限管理」-「桶策略」,添加转码服务的访问权限,以下为通用策略模板,替换你的桶名和对应转码服务的服务标识即可生效:
```json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {"Service": "你的转码服务标识,如AWS为mediaconvert.amazonaws.com"},
"Action": ["s3:GetObject", "s3:PutObject"],
"Resource": ["arn:aws:s3:::你的桶名/*"]
}
]
}
```
3. 回到桶的文件管理页面,新建三个目录:input(用于存储用户上传的原视频)、output(用于存储转码后的视频文件)、cover(用于存储自动生成的封面图)。
步骤2:配置转码模板与封面生成规则
1. 进入对应云厂商的媒体处理服务控制台,找到「转码模板」菜单,点击「新建自定义模板」:
- 编码格式选择通用的H.264,输出格式根据业务需求选MP4(适合点播)或HLS(适合直播/长视频)
- 分辨率可设置单档(如1080P)或多档(如480P/720P/1080P自适应),码率选择自适应即可
- 音频编码选择AAC,采样率44.1KHz,配置完成后保存模板,记录模板ID。
2. 找到「封面模板」菜单,点击「新建封面模板」:
- 截取方式可选固定时间点(如第3秒)或按视频时长比例(如10%位置),如果有智能封面功能也可开启自动选取最优帧
- 输出格式选JPG或PNG,分辨率设置为与原视频等比例缩放,质量设置为75%-80%平衡清晰度和文件大小
- 配置完成后保存模板,记录封面模板ID。
步骤3:配置S3桶事件触发规则
1. 回到S3存储桶详情页,找到「事件通知」/「事件触发」菜单,点击「新建事件规则」:
- 事件名称自定义,事件类型选择「所有对象创建事件」(即上传新文件时触发)
- 前缀填写
input/(仅触发上传到原视频目录的文件,避免其他文件误触发),后缀填写.mp4,.mov,.avi等你需要处理的视频格式后缀,多个用英文逗号分隔 - 触发目标选择「媒体处理服务」,绑定你之前创建的转码模板ID和封面模板ID
- 输出路径配置:转码后的视频存储路径填写
output/${original_filename}/,封面存储路径填写cover/${original_filename}_cover.jpg,${original_filename}为系统变量,会自动替换为原视频的文件名
2. 保存事件规则后,配置即生效。你可以上传测试视频到input目录,等待1-5分钟(时长根据视频大小变化),即可在output和cover目录看到自动生成的转码文件和封面。
四、常见错误
- endpoint填写错误:本地客户端或转码服务配置的S3 endpoint与桶所在区域不匹配,比如国内区域用户误填AWS美国区的endpoint,导致转码服务无法访问S3桶
- region不匹配:S3桶和转码服务开通在不同区域,跨区域调用要么权限不通,要么转码速度慢、费用高,甚至直接触发失败
- 权限问题:转码服务的角色没有S3桶的读原文件、写输出文件的权限,或者事件规则的角色权限不足,导致转码任务启动后直接报错
- 事件规则配置错误:前缀多写/漏写斜杠、视频后缀填写错误(比如用中文逗号分隔),导致上传文件后不会触发转码任务
- 模板参数错误:转码模板设置的分辨率、码率超出原视频参数上限,或者输出格式不兼容,导致转码任务运行失败
五、示例说明
某短视频平台需要将用户上传的所有原视频统一转码为1080P MP4格式,同时截取第3秒的帧作为封面,方便在列表页展示。
1. 首先创建名为short-video-2024的S3桶,区域选择华东2(上海),新建input、output、cover三个目录,给转码服务角色授予桶的读写权限
2. 转码模板配置为H.264编码、1080P分辨率、3Mbps码率、AAC音频,封面模板配置为截取第3秒、JPG格式、宽度1280px、质量75%
3. 配置事件规则:仅input目录下的.mp4/.mov文件上传时触发转码,转码后视频存到output目录,封面存到cover目录
4. 用户上传原视频travel.mp4到input目录,2分钟后即可在output目录看到travel_1080p.mp4,在cover目录看到travel_cover.jpg,全程无需运营人员手动处理。
六、更简单的方案
如果觉得原生S3配置转码服务、权限、事件规则的流程过于复杂,新手可以选择内置媒体处理功能的兼容S3对象存储服务,比如七彩云对象存储,本身完全兼容S3 API,原有基于S3开发的上传、下载代码无需修改,仅需替换endpoint和密钥即可对接。
七彩云对象存储控制台内置了可视化的视频转码、封面生成配置页面,无需单独开通第三方转码服务,也无需手动配置复杂的角色权限,3分钟即可完成自动转码和封面生成规则配置,国内多节点存储加速,处理速度更快、成本更低,适合国内业务使用,你可以访问https://www.7caiyun.com了解更多细节。
七、FAQ
1. 配置完成后上传了视频,但是没有生成转码文件和封面该怎么排查?
首先登录S3控制台查看事件通知日志,确认是否触发了转码事件:如果没有触发,检查事件规则的前缀、后缀是否和你上传的文件路径、格式匹配;如果已经触发但没有生成文件,登录媒体处理服务的任务列表查看任务失败原因,常见原因包括转码服务权限不足、原视频损坏、转码模板参数不兼容。
2. 自动生成的封面可以自定义截取位置吗?
可以,在配置封面模板的时候,既可以设置固定的时间点(比如第5秒、第10秒),也可以设置按视频时长的百分比截取(比如时长10%的位置),部分服务商还支持智能封面功能,会自动识别视频内容,选取清晰度最高、内容最有代表性的帧作为封面。
3. 自动转码会不会修改或删除我上传的原视频?
不会,转码任务只会读取你上传到S3的原视频文件,不会对原文件进行任何修改或删除操作,转码后的视频和封面都是全新生成的文件,存储在你指定的输出目录,原视频会一直保留在上传的路径中,你可以根据需求自行删除或归档。
4. 可以批量处理已经上传到S3的历史视频吗?
默认的事件触发规则仅针对配置完成后新上传的视频,如果需要处理历史已经上传的视频,你可以调用转码服务的批量处理接口,指定S3桶内的历史视频路径,批量触发转码和封面生成任务,无需手动逐个处理。
八、总结
整个配置流程可以归纳为四个核心步骤:首先准备好S3账号和对应权限,然后创建S3桶、配置目录和转码服务访问权限,接着自定义转码和封面生成模板,最后配置S3的事件触发规则即可实现全自动处理。
对于新手或者国内业务用户,建议优先选择内置媒体处理功能的S3兼容存储服务,省去单独配置转码服务、权限的复杂步骤,降低出错概率,同时也能获得更低的存储和流量成本,提升业务运行效率。
想进一步了解这个项目?
访问官网查看产品能力、适用场景和最新服务信息。
访问官网