视频截图是指对视频截取指定时间、指定尺寸的图片,用于生产视频封面、雪碧图、播放器进度条缩略图等场景,截图作业支持指定时间点、时间间隔、截图数量、类型以及是否拼图等。您可以通过媒体处理控制台、API或SDK提交截图作业。本文提供了Go SDK截图相关功能的API调用示例,包含提交截图作业、查询截图任务作业。截图作业支持指定时间点、时间间隔、截图数量、类型以及是否拼图等。
前提条件
使用前请先初始化客户端,详细说明请参见初始化。
提交截图任务
调用SubmitSnapshotJob接口,完成提交截图任务。
说明
通过SDK提交作业时Object需经URLEncode,否则会导致作业失败。更多信息,请参见URL Encoding说明。
请按照规范填写文件名称,否则会找不到文件导致作业失败。详细名称规范,请参见参数详情。
建议您在提交截图作业时记录任务的JobID,便于后续进行查询操作。
/**
* 提交截图任务
* @param client
* @return
*/
func SubmitSnapshotJob(client *mts.Client) (*mts.SubmitSnapshotJobResponse, error) {
request := mts.CreateSubmitSnapshotJobRequest()
//构建input, 需要保证Location区域和服务client区域一致
input := map[string]string{
"Location": "oss-cn-beijing",
"Bucket": "<your bucket name>",
"Object": url.QueryEscape("mps-test/demo/test.mp4"),
}
inputJson, _ := json.Marshal(input)
request.Input = string(inputJson)
//截图输出路径
outputFile := map[string]string{
"Location": "oss-cn-beijing",
"Bucket": "<your bucket name>",
"Object": url.QueryEscape("mps-test/demo/test-{Count}.jpg"),
}
outputFileJson, _ := json.Marshal(outputFile)
snapshotConfig := map[string]string{
"OutputFile": string(outputFileJson),
"Time": "100",
"Interval": "0",
"Num": "6",
"FrameType": "normal", //截图类型 normal(默认值):普通帧 intra:关键帧
}
snapshotConfigJson, _ := json.Marshal(snapshotConfig)
request.SnapshotConfig = string(snapshotConfigJson)
// PipelineId
request.PipelineId = pipelineId
return client.SubmitSnapshotJob(request)
}
查询截图作业结果
调用QuerySnapshotJobList接口,完成查询截图任务结果。
/**
* 查询截图任务结果
* @param client
* @return
*/
func QuerySnapshotJobList(client *mts.Client) (*mts.QuerySnapshotJobListResponse, error) {
request := mts.CreateQuerySnapshotJobListRequest()
//支持查询多个jobId 一次最多查询10个,使用半角逗号(,)分隔,通过submitSnapshotJob获取
request.SnapshotJobIds = "7ffbc8f9af8ba6fad2b****";
return client.QuerySnapshotJobList(request)
}
完整代码
package main
import (
"encoding/json"
"fmt"
"net/url"
mts "github.com/aliyun/alibaba-cloud-sdk-go/services/mts"
)
/**
* 提交截图任务
* @param client
* @return
*/
func SubmitSnapshotJob(client *mts.Client) (*mts.SubmitSnapshotJobResponse, error) {
request := mts.CreateSubmitSnapshotJobRequest()
//构建input, 需要保证Location区域和服务client区域一致
input := map[string]string{
"Location": "oss-cn-beijing",
"Bucket": "<your bucket name>",
"Object": url.QueryEscape("mps-test/demo/test.mp4"),
}
inputJson, _ := json.Marshal(input)
request.Input = string(inputJson)
//截图输出路径
outputFile := map[string]string{
"Location": "oss-cn-beijing",
"Bucket": "<your bucket name>",
"Object": url.QueryEscape("mps-test/demo/test-{Count}.jpg"),
}
outputFileJson, _ := json.Marshal(outputFile)
snapshotConfig := map[string]string{
"OutputFile": string(outputFileJson),
"Time": "100",
"Interval": "0",
"Num": "6",
"FrameType": "normal", //截图类型 normal(默认值):普通帧 intra:关键帧
}
snapshotConfigJson, _ := json.Marshal(snapshotConfig)
request.SnapshotConfig = string(snapshotConfigJson)
// PipelineId
request.PipelineId = pipelineId
return client.SubmitSnapshotJob(request)
}
/**
* 查询截图任务结果
* @param client
* @return
*/
func QuerySnapshotJobList(client *mts.Client) (*mts.QuerySnapshotJobListResponse, error) {
request := mts.CreateQuerySnapshotJobListRequest()
//支持查询多个jobId 一次最多查询10个,使用半角逗号(,)分隔,通过submitSnapshotJob获取
request.SnapshotJobIds = "7ffbc6fad2b8f9af8ba****";
return client.QuerySnapshotJobList(request)
}
const (
//管道ID, 可以在MPS控制台>全局设置>管道及回调查看
pipelineId = "bee7a5b96fad2bfe40a0cbf****"
)
func main() {
//初始化调用 client
client, err := InitMtsClient()
if err != nil {
panic(err)
}
response, err := SubmitSnapshotJob(client)
if err != nil {
panic(err)
}
fmt.Println("RequestId is:", response.RequestId)
fmt.Println("JobId is:", response.SnapshotJob.Id)
}
相关文档
反馈
- 本页导读 (1)
文档反馈