本文介绍视频截帧时所使用的参数及操作示例。

注意事项

  • 当前仅支持对视频编码格式为H264的视频文件进行视频截帧。
  • OSS当前没有默认保存视频截帧的操作,视频截帧的图片需手动下载到本地。

参数说明

操作分类:video

操作名称:snapshot

参数 描述 取值范围
t 指定截图时间。 [0,视频时长]

单位:ms

w 指定截图宽度,如果指定为0,则自动计算。 [0,视频宽度]

单位:像素(px)

h 指定截图高度,如果指定为0,则自动计算;如果w和h都为0,则输出为原视频宽高。 [0,视频高度]

单位:像素(px)

m 指定截图模式,不指定则为默认模式,根据时间精确截图。如果指定为fast,则截取该时间点之前的最近的一个关键帧。 枚举值:fast
f 指定输出图片的格式。 枚举值:jpgpng
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,代码与生成带签名的图片处理URL相似,只需要将图片处理的操作改为视频截帧的即可。

以Java SDK为例,代码如下:
// Endpoint以杭州为例,其它Region请按实际情况填写。
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
String accessKeyId = "<yourAccessKeyId>";
String accessKeySecret = "<yourAccessKeySecret>";
String bucketName = "<yourBucketName>";
String objectName = "<yourObjectName>";
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 设置视频截帧操作。
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的SDK请参见: