智能多媒体服务

  • 智能多媒体服务 > API 文档 > 音视频处理 >视频采样缩略图(vsample)

    视频采样缩略图(vsample)

    最近更新时间: 2023-12-13 11:11:44

    简介

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

    接口规格

    vsample/<Format>
           /ss/<StartTime>
           /t/<Duration>
           /s/<Resolution>
           /rotate/<Degree>
           /interval/<Interval>
           /frames/<Frames>
           /pattern/<Pattern>
    
    参数名称 必填 说明
    <Format> 输出的目标截图格式,支持jpgpng等。
    /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> 指定顺时针旋转的度数,可取值为90180270auto
    默认为不旋转。
    /interval/<Interval> 指定截帧间隔时间,单元:秒。
    默认为5秒,精度为 100ms,例如/interval/0.1指定平均截帧,截取的图片数量。 例如/frames/1
    注意:
    1. 和 frames 参数不能同时设置。
    2. framesinterval 都不指定的情况,默认使用 interval
    /frames/<Frames> 指定平均截帧,截取的图片数量。 例如/frames/10,截取10张图片。
    注意:
    1. 和 interval 参数不能同时设置。
    2. framesinterval 都不指定的情况,默认使用 interval
    3. 当设置frames 值大于源视频帧数时,会按照源视频最大帧数来输出。
    /pattern/<Pattern> 指定各张截图的资源名格式,需要对设定值做URL安全的Base64编码
    命名支持魔法变量
    &(count):必填,六个占位符的数字串,不足位的填充前导零即%06d,如 000001
    &(fname):非必填,上传的原始文件名。
    示例
    源文件名:file.mp4,cmd为:vsample/jpg/ss/7/t/600/s/480x360/pattern/cWluaXUtJChmbmFtZSkkKGNvdW50KQ==,其中 cWluaXUtJChmbmFtZSkkKGNvdW50KQ== ,qiniu-$(fname)$(count) 的URL安全的Base64编码。最后得到类似:qiniu-file000000.jpg,qiniu-file000001.jpg,…………、qiniu-filexxxxxx.jpg的截图文件

    备注:建议截帧频率是视频帧率的整数倍。

    操作方式

    • API方式:可以通过 持久化处理 的方式来调用:

      • 资源上传时自动触发:可以在上传时指定persistentOps参数
      • 对已有资源手动手动触发:调用pfop命令
    • 控制台方式:您可以使用智能多媒体平台,可视化创建任务,使用详情请参考 任务

    示例

    示例1

    资源上传时自动触发,取视频第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

    对已有资源手动触发 形式,将一段视频,平均截帧成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 为例,具体可以看下音视频转码的示例。需要在音视频转码的示例的基础修改数据处理命令 fops ,将其修改为:

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

    注意:
    其他语言 Sdk 可在官方 Sdks 下载,可以通过查看 Sdk 使用指南中触发持久化预转持久化使用。

    以上内容是否对您有帮助?
  • Qvm free helper
    Close