视频截图是截取视频中特定位置的图像,保存为图片文件。

使用场景

  • 单帧截图

    设置一个明确的截图时间点,截取对应的视频图像。

  • 多帧截图

    按照设置的间隔时间,均匀的截取对应视频的多帧图像,每帧图像都是一个图片文件。也叫批量截图、序列截图。

  • 雪碧拼图

    多帧截图的图像以雪碧图的方式拼成一张大图输出。这样可以一次请求获取多帧图像,降低图片请求次数,提高客户端性能。

  • WebVTT缩略图

    HTML5标准的字幕文件格式,也被很多H5播放器作为缩略图预览的格式。

    WebVTT只是文件格式,缩略图可以是多张图片,也可以是雪碧图方式拼成的一张大图。

类型

  • 关键帧

    因为视频编码的特点,关键帧图像的优势是画质好,执行速度快。由于视频中关键帧是间隔一段时间才会出现,所以劣势是时间点不太精确,会在设置的时间点附近寻找相应的关键帧。

  • 普通帧

    和关键帧相反,画质稍差,执行速度较慢。优点是可以根据设置的时间点精确截取图像。

参数说明

在输入文件时,需要关注Input参数,来设置需要截图的视频OSS输入文件。
说明
  • OSS的Location必须和媒体处理服务的地域对应。例如,OSS的oss-cn-hangzhou对应媒体处理的cn-hangzhou。
  • 更多截图常见问题说明,请参见截图常见问题

截图配置(SnapshotConfig)中,需要关注以下参数:

  • OutputFile

    设置截图的OSS输出文件。OSS的Object除了设置为固定的文件名外,还支持按照一些规则自定义文件名。

  • Time

    设置单帧截图的时间点,也是多帧截图的开始时间点。整数类型,单位:毫秒。

  • Interval、Num

    设置多帧截图的间隔时间(单位:秒)和数量。分以下几种情况:

    • 不设置Num时,表示按照间隔时间,一直截取到视频结尾。

    • Num大于1时,表示按照间隔时间,截取到指定数量的图像时就停止截图。

    • 设置Num=1时,按照异步方式执行单帧截图。

  • Width、Height

    设置单帧截图或多帧截图输出的图片宽和高,单位:像素。

    宽和高都是以输入视频为参考。

    • 如果宽和高都不设置时,图片的尺寸和视频相同。

    • 如果只设置宽(或高)时,另一边会按照视频的分辨率保持比例不变,避免图像变形。

    说明 建议您不要同时任意设置宽和高的值,以免引起图像比例失真。
    • 如果MP4的竖屏视频带有旋转标识,截图是横屏图像。

    • 如果MP4的竖屏视频不带有旋转标识,则截图保持竖屏图像。

  • FrameType

    设置截图的类型:关键帧或普通帧。默认:关键帧。

  • TileOutputFile、TileOut

    设置雪碧拼图的OSS输出文件和拼图配置(TileOut)

  • SubOut、Format
    • 如果您需要使用webVTT格式的缩略图,设置Format=“VTT”。
    • 如果webVTT格式需要以雪碧图的方式显示,要同时设置Format和SubOut的值。

执行方式

执行方式详情,请参见 作业和管道>作业执行和结果

说明 同步截图必须保证m3u8索引中的ts路径与m3u8在相同的路径下,异步无要求。
  • 同步

    调用API时,同步返回截图作业ID以及截图结果。

    同步方式只支持单帧截图的场景。

  • 异步

    调用API时,仅返回截图作业ID。截图结果的查询,可以使用消息通知服务,也可以通过截图作业ID查询。

    单帧截图、多帧截图、雪碧拼图、WebVTT缩略图都支持异步的执行方式。

示例代码

例如一个720P(1280x720)时长10秒的视频,设置截图高度360像素,从第2秒开始,按照每1秒截取一张图的方式,最多截取3帧。最终会输出3张图片,时间点分别是2、3、4秒。文件名也会按照00001、00002、00003的规则来命名。

截图-Java

截图-Python

截图-PHP