Transcoding-Job转码任务
更新时间:2023-04-24
Transcoding Job(任务)是音视频转码中最基本的执行单元,每个任务将一个原始的音视频资源转码成目标规格的音视频资源。因此,任务和转码的目标是一一对应的,也就是说如果用户需要将一个原始多媒体文件转换成三种目标规格,比如从AVI格式转码成FLV/MP4/HLS格式,那么用户将会需要创建三个任务。
创建Transcoding Job
用户在创建转码任务时,需要为转码任务指定所属的Pipeline、所需应用的Preset以及原始音视频资源的BOS Key以及目标音视频资源BOS Key。
如下代码创建一个Job, 并获取新创建的jobID:
Go
1pipelineName := "go_sdk_test"
2sourceKey := "test.mp4"
3targetKey := "test-result.mp4"
4presetName := "test_preset"
5jobResponse, err := MEDIA_CLIENT.CreateJob(pipelineName, sourceKey, targetKey, presetName)
6if err != nil {
7 fmt.Printf("create job error: %+v\n", err)
8 return
9}
10fmt.Println("create job success jobId:", jobResponse.JobId)
如下代码创建一个支持视频合并、去水印、加水印(Job上而不是Preset上指定watermarkId)的Job, 并获取新创建的jobID:
Go
1args := &api.CreateJobArgs{}
2args.PipelineName = "go_sdk_test"
3source := &api.Source{Clips: &[]api.SourceClip{{
4 SourceKey: "01.mp4",
5 EnableDelogo: false,
6 DurationInMillisecond: 6656,
7 StartTimeInSecond: 2}}}
8args.Source = source
9target := &api.Target{}
10targetKey := "clips_playback_watermark_delogo_crop2.mp4"
11watermarkId := "wmk-xxxx"
12target.TargetKey = targetKey
13watermarkIdSlice := append(target.WatermarkIds, watermarkId)
14target.WatermarkIds = watermarkIdSlice
15presetName := "go_test_customize_audio_video"
16target.PresetName = presetName
17
18delogoArea := &api.Area{}
19delogoArea.X = 10
20delogoArea.Y = 10
21delogoArea.Width = 30
22delogoArea.Height = 40
23target.DelogoArea = delogoArea
24
25args.Target = target
26
27jobResponse, err := MEDIA_CLIENT.CreateJobCustomize(args)
28if err != nil {
29 fmt.Printf("create job error: %+v\n", err)
30 return
31}
32fmt.Println("create job success jobId:", jobResponse.JobId)
列出指定Pipeline的所有Transcoding Job
如下代码通过指定pipelineName查询该Pipeline下的所有Job:
Go
1pipelineName := "test"
2listTranscodingJobsResponse, err := MEDIA_CLIENT.ListTranscodingJobs(pipelineName)
3if err != nil {
4 fmt.Printf("list job error: %+v\n", err)
5 return
6}
7fmt.Printf("list job success : %+v\n", listTranscodingJobsResponse)
查询指定的Transcoding Job信息
可以通过如下代码通过jobId读取某个Job:
Go
1jobId := "job-xxxxxxxxx"
2getTranscodingJobResponse, err := MEDIA_CLIENT.GetTranscodingJob(jobId)
3if err != nil {
4 fmt.Printf("get job error: %+v\n", err)
5 return
6}
7fmt.Printf("get job success : %+v\n", getTranscodingJobResponse)