本文介绍视频截帧操作涉及的参数说明及使用示例。
注意事项
- 使用视频截帧时,按视频截帧截取的图片数量计费。有关计费详情的更多信息,请参见数据处理费用。
- 仅支持对视频编码格式为H264和H265的视频文件进行视频截帧。
- OSS默认不保存视频截帧的图片,视频截帧的图片需手动下载并保存至本地。
参数说明
操作分类:video
操作名称:snapshot
参数 | 描述 | 取值范围 |
---|---|---|
t | 指定截图时间。 | [0,视频时长] 单位:ms |
w | 指定截图宽度,如果指定为0,则自动计算。 | [0,视频宽度] 单位:像素(px) |
h | 指定截图高度,如果指定为0,则自动计算;如果w和h都为0,则输出为原视频宽高。 | [0,视频高度] 单位:像素(px) |
m | 指定截图模式,不指定则为默认模式,根据时间精确截图。如果指定为fast,则截取该时间点之前的最近的一个关键帧。 | 枚举值:fast |
f | 指定输出图片的格式。 | 枚举值:jpg、png |
ar | 指定是否根据视频信息自动旋转图片。如果指定为auto,则在截图生成之后根据视频信息进行自动旋转。 | 枚举值:auto |
使用示例
- 使用fast模式截取视频7s处的内容,输出为JPG格式的图片,宽度为800,高度为600。
处理后的URL为:
<原视频URL>?x-oss-process=video/snapshot,t_7000,f_jpg,w_800,h_600,m_fast
- 使用精确时间模式截取视频50s处的内容,输出为JPG格式的图片,宽度为800,高度为600。
处理后的URL为:
<原视频URL>?x-oss-process=video/snapshot,t_50000,f_jpg,w_800,h_600
生成带签名的视频截帧URL
您可以通过SDK生成带签名的视频截帧URL,以Java SDK为例,代码如下:
// Endpoint以杭州为例,其它Region请按实际情况填写。 String endpoint = "http://oss-cn-hangzhou.aliyuncs.com"; // 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。 String accessKeyId = "<yourAccessKeyId>"; String accessKeySecret = "<yourAccessKeySecret>"; // 填写视频文件所在的Bucket名称。 String bucketName = "<yourBucketName>"; // 填写视频文件的完整路径。若视频文件不在Bucket根目录,需携带文件访问路径,例如examplefolder/videotest.mp4。 String objectName = "<yourObjectName>"; // 创建OSSClient实例。 OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); // 使用精确时间模式截取视频50s处的内容,输出为JPG格式的图片,宽度为800,高度为600。 String style = "video/snapshot,t_50000,f_jpg,w_800,h_600"; // 指定过期时间为10分钟。 Date expiration = new Date(new Date().getTime() + 1000 * 60 * 10 ); GeneratePresignedUrlRequest req = new GeneratePresignedUrlRequest(bucketName, objectName, HttpMethod.GET); req.setExpiration(expiration); req.setProcess(style); URL signedUrl = ossClient.generatePresignedUrl(req); System.out.println(signedUrl); // 关闭OSSClient。 ossClient.shutdown();
生成带签名的视频截帧URL与生成带签名的图片处理URL的方法类似。如果您需要通过不同语言SDK生成带签名的视频截帧URL,请将如下不同语言SDK的图片处理操作替换为视频截帧操作。