OSS提供的视频截帧功能和OSS图片服务功能使用的方式是类似的,都是通过传入x-oss-process参数的方式来实现的。最简单的使用方式就是直接在public的object的url后面拼接处理字符串。比如如下的url:
指定的就是对demo.mp4这个文件直接调用视频截图,截图的位置由参数t指定,后面的单位是ms,因此这个url的含义就是截取视频文件的第10s的内容。生成的url可以直接嵌入在网页提供给用户浏览。
如果需要对private的object调用视频截图,需要使用SDK进行鉴权,接口和OSS图片服务的调用接口一致。
目前OSS只支持视频编码为h264的视频文件的处理,视频格式本身没有限制。
调用参数
目前支持的参数见视频截帧功能的文档: https://help.aliyun.com/document_detail/64555.html。
这里介绍一下具体的一些应用:
时间越界
视频截帧是通过t来指定截帧时间参数,t的范围为0到INT32_MAX,当t指定的时间超出视频的长度的时候,返回视频最后一帧的内容。
控制图片输出大小
视频截帧功能支持选择输出图片的大小,使用w参数指定宽度,h指定长度。
- 不指定w和h参数,或者w和h都指定为0,输出的图片大小为视频的真实长宽。
- 单独指定w或者h参数,输出的图片大小指定的数值,另外一个没有指定的数值通过视频原始比例自动计算出来。
- 同时指定w和h参数,输出图片大小为指定的数值,如果长宽比例和原始视频比不相等则强制拉伸。
比如下面这个url就是将输出的图片大小指定为800宽度。
关键帧
关键帧,也称I帧,是视频编码中的一个关键概念,指的是不依赖于前后参考帧就能独立解码的一种视频帧,在h264格式中常见的关键帧间隔为3-10秒。解码关键帧只需要读取关键帧对应的数据,而解码非关键帧需要顺序读取上一个关键帧到当前帧所有的数据才能完成。因此在OSS视频截帧功能中提供了控制功能,可以选择是否只读取关键帧信息,即m参数。
当m指定为fast的时候,OSS读取到指定时间点之前最接近的一个关键帧就解码返回;如果没有指定该参数则会持续解码到精确的时间点对应的视频帧再返回。对于没有特殊需求的用户来说,OSS强烈建议指定m_fast参数,这样可以大大提升截帧的请求响应速度。
输出格式
OSS输出的视频格式支持jpg和png两种格式,可以通过f参数来切换,默认输出的是jpg格式,对于没有特殊需求的用户无需指定该参数。
下面这个url就是将输出格式切换为png。
本文链接地址: 阿里对象存储视频预览API