文档

视频截图是指对视频截取指定时间、指定尺寸的图片,用于生产视频封面、雪碧图、播放器进度条缩略图等场景,截图作业支持指定时间点、时间间隔、截图数量、类型以及是否拼图等。您可以通过媒体处理控制台、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)
文档反馈