Anda dapat menggunakan fitur snapshot video untuk menangkap snapshot berukuran tertentu pada titik waktu tertentu dalam sebuah video. Snapshot ini digunakan dalam skenario seperti thumbnail video, sprite, dan thumbnail bilah kemajuan. Anda dapat mengirimkan pekerjaan snapshot di konsol ApsaraVideo Media Processing (MPS) atau dengan menggunakan API atau SDK. Topik ini memberikan contoh cara menggunakan MPS SDK untuk Go V2.0 untuk mengirimkan dan menanyakan pekerjaan snapshot. Anda dapat menentukan titik waktu ketika snapshot ditangkap, interval antara dua snapshot berturut-turut, jumlah snapshot yang akan ditangkap, jenis snapshot yang akan ditangkap, serta apakah akan menggabungkan beberapa snapshot menjadi satu sprite gambar.
Prasyarat
Klien SDK telah diinisialisasi. Untuk informasi lebih lanjut, lihat Inisialisasi klien.
Kirim pekerjaan snapshot
Anda dapat memanggil operasi SubmitSnapshotJob untuk mengirimkan pekerjaan snapshot.
Saat mengirimkan pekerjaan snapshot menggunakan SDK, jalur file tempat file Anda berada harus dikodekan URL. Jika tidak, pekerjaan snapshot gagal dikirimkan. Untuk informasi lebih lanjut, lihat Pengkodean URL.
Pastikan nama file Anda valid. Jika tidak, file tidak dapat ditemukan dan pekerjaan snapshot gagal dikirimkan. Untuk informasi lebih lanjut, lihat Detail parameter.
Disarankan untuk mencatat ID pekerjaan snapshot karena mempermudah operasi penanyaan selanjutnya.
package main
import (
"encoding/json"
"strings"
"fmt"
"os"
mts20140618 "github.com/alibabacloud-go/mts-20140618/v6/client"
openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
util "github.com/alibabacloud-go/tea-utils/v2/service"
"github.com/alibabacloud-go/tea/tea"
)
// Deskripsi:
//
// Gunakan AccessKey ID dan Rahasia AccessKey Anda untuk menginisialisasi klien.
//
// @return Client
//
// @throws Exception
func CreateClient () (_result *mts20140618.Client, _err error) {
config := &openapi.Config{
// Diperlukan. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dikonfigurasi.
AccessKeyId: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")),
// Diperlukan. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET dikonfigurasi.
AccessKeySecret: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")),
}
config.Endpoint = tea.String("mts.cn-hangzhou.aliyuncs.com")
_result = &mts20140618.Client{}
_result, _err = mts20140618.NewClient(config)
return _result, _err
}
func _main (args []*string) (_err error) {
client, _err := CreateClient()
if _err != nil {
return _err
}
submitSnapshotJobRequest := &mts20140618.SubmitSnapshotJobRequest{
Input: tea.String("{\"Bucket\":\"example-bucket\",\"Location\":\"example-location\",\"Object\":\"example%2Ftest.flv\"}"),
SnapshotConfig: tea.String("{\"OutputFile\":{\"Bucket\":\"example-001\",\"Location\":\"example-location\",\"Object\":\"{Count}.jpg\"},\"Time\":\"5\",\"Num\":\"10\",\"Interval\":\"20\"}"),
}
runtime := &util.RuntimeOptions{}
tryErr := func()(_e error) {
defer func() {
if r := tea.Recover(recover()); r != nil {
_e = r
}
}()
// Tulis kode Anda sendiri untuk menampilkan respons dari operasi API jika perlu.
_, _err = client.SubmitSnapshotJobWithOptions(submitSnapshotJobRequest, runtime)
if _err != nil {
return _err
}
return nil
}()
if tryErr != nil {
var error = &tea.SDKError{}
if _t, ok := tryErr.(*tea.SDKError); ok {
error = _t
} else {
error.Message = tea.String(tryErr.Error())
}
// Tangani pengecualian dengan hati-hati dalam skenario bisnis aktual dan jangan pernah abaikan pengecualian dalam proyek Anda. Dalam contoh ini, pesan kesalahan ditampilkan hanya untuk referensi.
// Pesan kesalahan.
fmt.Println(tea.StringValue(error.Message))
// URL halaman diagnostik kesalahan terkait.
var data interface{}
d := json.NewDecoder(strings.NewReader(tea.StringValue(error.Data)))
d.Decode(&data)
if m, ok := data.(map[string]interface{}); ok {
recommend, _ := m["Recommend"]
fmt.Println(recommend)
}
_, _err = util.AssertAsString(error.Message)
if _err != nil {
return _err
}
}
return _err
}
func main() {
err := _main(tea.StringSlice(os.Args[1:]))
if err != nil {
panic(err)
}
}Tanyakan hasil pekerjaan snapshot
Anda dapat memanggil operasi QuerySnapshotJobList untuk menanyakan hasil pekerjaan snapshot.
package main
import (
"encoding/json"
"strings"
"fmt"
"os"
mts20140618 "github.com/alibabacloud-go/mts-20140618/v6/client"
openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
util "github.com/alibabacloud-go/tea-utils/v2/service"
"github.com/alibabacloud-go/tea/tea"
)
// Deskripsi:
//
// Gunakan AccessKey ID dan Rahasia AccessKey Anda untuk menginisialisasi klien.
//
// @return Client
//
// @throws Exception
func CreateClient () (_result *mts20140618.Client, _err error) {
config := &openapi.Config{
// Diperlukan. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_ID dikonfigurasi.
AccessKeyId: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")),
// Diperlukan. Pastikan variabel lingkungan ALIBABA_CLOUD_ACCESS_KEY_SECRET dikonfigurasi.
AccessKeySecret: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")),
}
config.Endpoint = tea.String("mts.cn-hangzhou.aliyuncs.com")
_result = &mts20140618.Client{}
_result, _err = mts20140618.NewClient(config)
return _result, _err
}
func _main (args []*string) (_err error) {
client, _err := CreateClient()
if _err != nil {
return _err
}
querySnapshotJobListRequest := &mts20140618.QuerySnapshotJobListRequest{}
runtime := &util.RuntimeOptions{}
tryErr := func()(_e error) {
defer func() {
if r := tea.Recover(recover()); r != nil {
_e = r
}
}()
// Tulis kode Anda sendiri untuk menampilkan respons dari operasi API jika perlu.
_, _err = client.QuerySnapshotJobListWithOptions(querySnapshotJobListRequest, runtime)
if _err != nil {
return _err
}
return nil
}()
if tryErr != nil {
var error = &tea.SDKError{}
if _t, ok := tryErr.(*tea.SDKError); ok {
error = _t
} else {
error.Message = tea.String(tryErr.Error())
}
// Tangani pengecualian dengan hati-hati dalam skenario bisnis aktual dan jangan pernah abaikan pengecualian dalam proyek Anda. Dalam contoh ini, pesan kesalahan ditampilkan hanya untuk referensi.
// Pesan kesalahan.
fmt.Println(tea.StringValue(error.Message))
// URL halaman diagnostik kesalahan terkait.
var data interface{}
d := json.NewDecoder(strings.NewReader(tea.StringValue(error.Data)))
d.Decode(&data)
if m, ok := data.(map[string]interface{}); ok {
recommend, _ := m["Recommend"]
fmt.Println(recommend)
}
_, _err = util.AssertAsString(error.Message)
if _err != nil {
return _err
}
}
return _err
}
func main() {
err := _main(tea.StringSlice(os.Args[1:]))
if err != nil {
panic(err)
}
}