Preset模板
更新时间:2023-04-24
模板是系统预设的对于一个视频资源在做转码计算时所需定义的集合。用户可以更简便的将一个模板应用于一个和多个视频的转码任务,以使这些任务输出相同规格的目标视频资源。
音视频转码为用户预设了丰富且完备的系统模板,以满足用户对于目标规格在格式、码率、分辨率、加解密、水印等诸多方向上的普遍需求,对于不希望过多了解音视频复杂技术背景的用户来说,是最佳的选择。百度为那些在音视频技术上有着丰富积累的用户,提供了可定制化的转码模板,以帮助他们满足复杂业务条件下的转码需求。
当用户仅需对于音视频的容器格式做变化时,百度提供Transmux(转封装, 封装格式转换, 比如mp4转mov)模板帮助用户以秒级的延迟快速完成容器格式的转换,比如从MP4转换成HLS,而保持原音视频的属性不变。
查询当前用户Preset及所有系统Preset
用户可以通过如下代码查询所有的Preset
Go
1listPresetsResponse, err := MEDIA_CLIENT.ListPresets()
2if err != nil {
3 fmt.Printf("list preset error: %+v\n", err)
4 return
5}
6fmt.Printf("list preset success: %+v\n", listPresetsResponse)
查询指定的Preset信息
如下代码通过指定pipelineName查询该Pipeline下的所有Job:
Go
1presetName := "test"
2getPresetResponse, err := MEDIA_CLIENT.GetPreset(preset)
3if err != nil {
4 fmt.Printf("list preset error: %+v\n", err)
5 return
6}
7fmt.Printf("list preset success: %+v\n", getPresetResponse)
创建Preset
如果系统预设的Preset无法满足用户的需求,用户可以自定义自己的Preset。根据不同的转码需求,可以使用不同的接口创建Preset。
创建仅支持容器格式转换的Preset
如下代码创建仅执行容器格式转换Preset
Go
1presetName := "test"
2description := "测试创建模板"
3container := "mp4"
4err := MEDIA_CLIENT.CreatePreset(presetName, description, container)
5if err != nil {
6 fmt.Printf("create preset error: %+v\n", err)
7 return
8}
9fmt.Println("create preset success")
创建音频文件的转码Preset,不需要截取片段和加密
如果创建一个不需要截取片段和加密的音频文件转码Preset,可以参考如下代码
Go
1preset := &api.Preset{}
2preset.PresetName = "go_test_customize"
3preset.Description = "自定义创建模板"
4preset.Container = "mp3"
5
6audio := &api.Audio{}
7audio.BitRateInBps = 256000
8preset.Audio = audio
9
10err := MEDIA_CLIENT.CreatePrestCustomize(preset)
11if err != nil {
12 fmt.Printf("create preset error: %+v\n", err)
13 return
14}
15fmt.Println("create preset success")
创建音频文件转码Preset,需要设置片段截取属性和加密属性
如果创建一个支持截取片段和加密的音频文件转码Preset,可以参考如下代码
Go
1preset := &api.Preset{}
2preset.PresetName = "go_test_customize_encryption_clip"
3preset.Description = "自定义创建模板"
4preset.Container = "mp3"
5
6audio := &api.Audio{}
7audio.BitRateInBps = 256000
8preset.Audio = audio
9
10clip := &api.Clip{}
11clip.StartTimeInSecond = 2
12clip.DurationInSecond = 10
13preset.Clip = clip
14
15encryption := &api.Encryption{}
16encryption.Strategy = "PlayerBinding"
17preset.Encryption = encryption
18
19err := MEDIA_CLIENT.CreatePrestCustomize(preset)
20err := MEDIA_CLIENT.CreatePrestCustomize(preset)
21if err != nil {
22 fmt.Printf("create preset error: %+v\n", err)
23 return
24}
25fmt.Println("create preset success")
创建视频文件转码Preset,不需要截取片段、加密和水印属性
如果创建一个不需要截取片段,加密和水印的视频文件转码Preset,可以参考如下代码
Go
1preset := &api.Preset{}
2preset.PresetName = "go_test_customize_audio_video"
3preset.Description = "自定义创建模板"
4preset.Container = "mp4"
5
6audio := &api.Audio{}
7audio.BitRateInBps = 256000
8preset.Audio = audio
9
10video := &api.Video{}
11video.BitRateInBps = 1024000
12preset.Video = video
13
14err := MEDIA_CLIENT.CreatePrestCustomize(preset)
15if err != nil {
16 fmt.Printf("create preset error: %+v\n", err)
17 return
18}
19fmt.Println("create preset success")
创建视频文件转码Preset,需要设置片段截取、加密和水印属性
如果创建一个需要截取片段,加密和添加水印的视频文件转码Preset,可以参考如下代码
Go
1preset := &api.Preset{}
2preset.PresetName = "go_test_customize_clp_aud_vid_en_wat"
3preset.Description = "自定义创建模板"
4preset.Container = "mp4"
5
6clip := &api.Clip{}
7clip.StartTimeInSecond = 0
8clip.DurationInSecond = 60
9preset.Clip = clip
10
11audio := &api.Audio{}
12audio.BitRateInBps = 256000
13preset.Audio = audio
14
15video := &api.Video{}
16video.BitRateInBps = 1024000
17preset.Video = video
18
19encryption := &api.Encryption{}
20encryption.Strategy = "PlayerBinding"
21preset.Encryption = encryption
22
23preset.WatermarkID = "wmk-xxxxxx"
24
25err := MEDIA_CLIENT.CreatePrestCustomize(preset)
26if err != nil {
27 fmt.Printf("create preset error: %+v\n", err)
28 return
29}
30fmt.Println("create preset success")
创建Preset,指定所有的参数
如果需要定制所有配置参数,可以参考如下代码
Go
1preset := &api.Preset{}
2preset.PresetName = "go_test_customize_full_args"
3preset.Description = "全参数"
4preset.Container = "hls"
5preset.Transmux = false
6
7clip := &api.Clip{}
8clip.StartTimeInSecond = 0
9clip.DurationInSecond = 60
10preset.Clip = clip
11
12audio := &api.Audio{}
13audio.BitRateInBps = 256000
14preset.Audio = audio
15
16video := &api.Video{}
17video.BitRateInBps = 1024000
18preset.Video = video
19
20encryption := &api.Encryption{}
21encryption.Strategy = "PlayerBinding"
22preset.Encryption = encryption
23
24water := &api.Watermarks{}
25water.Image = []string{"wmk-pc0rdhzbm8ff99qw"}
26preset.Watermarks = water
27
28transCfg := &api.TransCfg{}
29transCfg.TransMode = "normal"
30preset.TransCfg = transCfg
31
32extraCfg := &api.ExtraCfg{}
33extraCfg.SegmentDurationInSecond = 6.66
34preset.ExtraCfg = extraCfg
35
36err := MEDIA_CLIENT.CreatePrestCustomize(preset)
37if err != nil {
38 fmt.Printf("create preset error: %+v\n", err)
39 return
40}
41fmt.Println("create preset success")
更新Preset
用户可以根据模板名更新自己创建的模板:
Go
1preset, _ := MEDIA_CLIENT.GetPreset("go_test_customize")
2preset.Description = "test update preset"
3err := MEDIA_CLIENT.UpdatePreset(preset)
4if err != nil {
5 fmt.Printf("update preset error: %+v\n", err)
6 return
7}
8fmt.Println("update preset success")