human: 如何处理七牛云的智能多媒体服务视频采样缩略图（vsample）

gpt: [智能多媒体服务](https://developer.qiniu.com/dora) > API 文档 > 音视频处理 >视频采样缩略图（vsample）

#  视频采样缩略图（vsample）

最近更新时间: 2024-06-28 17:22:47

# **简介**

视频采样缩略图接口(vsample)用于从视频文件中截取多帧画面并按指定大小缩放成图片。

# **接口规格**

    
    
    vsample/<Format>
           /ss/<StartTime>
           /t/<Duration>
           /s/<Resolution>
           /rotate/<Degree>
           /interval/<Interval>
           /frames/<Frames>
           /pattern/<Pattern>
    

参数名称 | 必填 | 说明  
---|---|---  
`<Format>` | 是 | 输出的目标截图格式，支持`jpg`、`png`等。  
`/ss/<StartTime>` |  | 指定截取视频的开始时刻，单位：秒,精度为 100ms，例如 `/ss/1.1`；默认从片头开始。  
`/t/<Duration>` |  | 采样总时长，单位：秒,精度为 100ms，例如 `t/1.1`；默认表示到片尾结束。  
`/s/<Resolution>` |  | 0\. 指定截图分辨率，格式为宽 x 高 ，长边取值范围[20,3840]的整数，短边取值范围[20,2160]的整数。  
1\. 宽、高都为空时，则和原视频保持一致  
2\. 宽为空，高不为空，则按高的值对原视频等比例缩放  
3\. 宽不为空，高为空时，则按宽的值对原视频等比例缩放  
4\. 宽、高都不为空时，则根据宽、高来缩放  
`/rotate/<Degree>` |  | 指定顺时针旋转的度数，可取值为`90`、`180`、`270`、`auto`。  
默认为不旋转。  
`/interval/<Interval>` |  | 指定截帧间隔时间，单元：秒。  
默认为5秒,精度为 100ms，例如`/interval/0.1`指定平均截帧，截取的图片数量。 例如`/frames/1`。  
**注意：**  
1\. 和 `frames` 参数不能同时设置。  
2\. `frames` 和 `interval` 都不指定的情况，默认使用 `interval`。  
`/frames/<Frames>` |  | 指定平均截帧，截取的图片数量。 例如`/frames/10`，截取10张图片。   
**注意：**  
1\. 和 `interval` 参数不能同时设置。  
2\. `frames` 和 `interval` 都不指定的情况，默认使用 `interval`。  
3\. 当设置`frames` 值大于源视频帧数时，会按照源视频最大帧数来输出。  
`/pattern/<Pattern>` | 是 | 指定各张截图的资源名格式，需要对设定值做[URL安全的Base64编码](https://developer.qiniu.com/kodo/manual/appendix#urlsafe-base64)。  
**命名支持魔法变量** ：  
`$(count)`：必填，六个占位符的数字串，不足位的填充前导零即`%06d`，如 `000001`。  
`$(fname)`：非必填，上传的原始文件名。  
**示例** ：  
源文件名：`file.mp4`，cmd为：`vsample/jpg/ss/7/t/600/s/480x360/pattern/cWluaXUtJChmbmFtZSkkKGNvdW50KQ==`，其中
`cWluaXUtJChmbmFtZSkkKGNvdW50KQ==` ，qiniu-$(fname)$(count)
的[URL安全的Base64编码](https://developer.qiniu.com/kodo/manual/appendix#urlsafe-
base64)。最后得到类似：qiniu-file000000.jpg,qiniu-file000001.jpg,…………、qiniu-
filexxxxxx.jpg的截图文件  
  
  
**备注** ：建议截帧频率是视频帧率的整数倍。

# **操作方式**

  * **API方式** ：可以通过 [持久化处理 __](https://developer.qiniu.com/dora/1291/persistent-data-processing-pfop)的方式来调用：

    * `资源上传时自动触发`：可以在上传时指定[persistentOps](https://developer.qiniu.com/kodo/manual/put-policy#put-policy-persistent-ops-explanation)参数
    * `对已有资源手动手动触发`：调用[pfop __](https://developer.qiniu.com/dora/1291/persistent-data-processing-pfop)命令
  * **控制台方式** ：您可以使用[智能多媒体平台 __](https://portal.qiniu.com/dora/media-gate)，可视化创建任务，使用详情请参考[任务 __](https://developer.qiniu.com/dora/6488/task-01)。

# **示例**

**示例1**

以 [资源上传时自动触发](https://developer.qiniu.com/dora/1315/video-sampling-thumbnails-
vsample)，取视频第7秒到第607秒之间，以5秒为间隔的截图（即第7秒、第12秒、第17秒……依此类推），图片格式为jpg，宽度为480px，高度为360px，文件命名模板为`vframe-$(count)`：

上传的`token`中指定`persistentOps`

    
    
    {
    "scope":                "qiniu-ts-demo:thinking-in-go.mp4",
    "deadline":             1390528576,
    "persistentOps":        "vsample/jpg/ss/7/t/600/s/480x360/pattern/dmZyYW1lLSQoY291bnQp",
    "persistentNotifyUrl":  "http://fake.com/qiniu/notify"
    }
    

**示例2**

以[对已有资源手动触发](https://developer.qiniu.com/dora/1315/video-sampling-thumbnails-
vsample) 形式，将一段视频，平均截帧成8张图片，图片宽高和原图保持一致，图片格式为png，文件命名模板为`vframe-$(count)`：

    
    
    POST /pfop/ HTTP/1.1
    Host: api.qiniu.com  
    Content-Type: application/x-www-form-urlencoded  
    Authorization: Qiniu <AccessToken>  
    
    bucket=qiniu-ts-demo&key=thinking-in-go.mp4&fops=vsample%2Fpng%2Fframes%2F8%2Fpattern%2FdmZyYW1lLSQoY291bnQp
    

以 Python Sdk 为例，具体可以看下[音视频转码的示例](https://developer.qiniu.com/dora/api/audio-
and-video-transcoding-avthumb)。需要在音视频转码的示例的基础修改数据处理命令 `fops` ，将其修改为：

    
    
    fops =vsample%2Fpng%2Fframes%2F8%2Fpattern%2FdmZyYW1lLSQoY291bnQp
    

**注意** :  
其他语言 Sdk 可在[官方 Sdks ](https://developer.qiniu.com/sdk)下载，可以通过查看 Sdk
使用指南中`触发持久化`，`预转持久化`使用。

# **计费说明**

视频采样缩略图，以 **截取图片总张数** 来计量计费。比如视频截取了100张小图，则最终计量是100次。服务价格=视频截图价格，定价参考
[智能多媒体服务定价 __](https://www.qiniu.com/prices/dora)。

以上内容是否对您有帮助？