TOS 支持将视频截帧后的图片保存到指定存储桶。本文介绍如何通过 TOS Go SDK 将视频截帧的图片保存到指定存储桶。
以下代码展示如何截取第 300ms 的视频帧,并将截取后的图片命名为 temp.jpg,并保存至目标存储桶。
package main import ( "context" "encoding/base64" "encoding/json" "fmt" "github.com/volcengine/ve-tos-golang-sdk/v2/tos" ) func checkErr(err error) { if err != nil { if serverErr, ok := err.(*tos.TosServerError); ok { fmt.Println("Error:", serverErr.Error()) fmt.Println("Request ID:", serverErr.RequestID) fmt.Println("Response Status Code:", serverErr.StatusCode) fmt.Println("Response Header:", serverErr.Header) fmt.Println("Response Err Code:", serverErr.Code) fmt.Println("Response Err Msg:", serverErr.Message) } else { fmt.Println("Error:", err) } panic(err) } } type SaveAsResult struct { Bucket string `json:"bucket"` FileSize string `json:"fileSize"` Object string `json:"object"` Status string `json:"status"` } func main() { var ( accessKey = os.Getenv("TOS_ACCESS_KEY") secretKey = os.Getenv("TOS_SECRET_KEY") // Bucket 所在区域对应的 Endpoint,如果以华北2(北京)为例,则 Endpoint 为 https://tos-cn-beijing.volces.com。 endpoint = "https://tos-cn-beijing.volces.com" region = "cn-beijing" // 填写 BucketName bucketName = "*** Provide your bucket name ***" // 视频名称 videoKey = "video.mp4" ctx = context.Background() // 指定保存图片的存储桶的名称 saveBucket = "*** Provide your bucket name ***" // 指定截取到的图片名称 saveObject = "temp.jpg" ) // 初始化客户端 client, err := tos.NewClientV2(endpoint, tos.WithRegion(region), tos.WithCredentials(tos.NewStaticCredentials(accessKey, secretKey))) checkErr(err) // 请求并增加数据处理 style := "video/snapshot,t_300" /* 视频截帧,截取第 300ms 的视频帧 */ out, err := client.GetObjectV2(ctx, &tos.GetObjectV2Input{Bucket: bucketName, Key: videoKey, Process: style, SaveBucket: base64.URLEncoding.EncodeToString([]byte(saveBucket)), SaveObject: base64.URLEncoding.EncodeToString([]byte(saveObject))}) checkErr(err) var saveAsResult SaveAsResult err = json.NewDecoder(out.Content).Decode(&saveAsResult) checkErr(err) fmt.Println("Save As Result:", saveAsResult) }
关于视频截帧图片持久化的详细介绍,请参见图片持久化。