最近更新时间:2024.04.15 11:37:01
首次发布时间:2023.12.28 21:21:52
阅读本文,您可以获取 Go SDK 录制配置的接口调用示例,实现快速开发。
说明
本文的调用示例包含接口的全部参数。由于参数间可能存在互斥关系,在调用时,请您参考注释,进行调整。
调用接口前,请先完成 Go SDK 的安装及初始化操作
本节为您介绍录制配置相关接口的功能和调用示例。
您可以调用 CreateRecordPresetV2 接口添加录制配置。详细的参数说明可参见 CreateRecordPresetV2 接口文档。
接口调用示例如下所示。
package main import ( "os" "context" "fmt" "github.com/volcengine/volc-sdk-golang/base" "github.com/volcengine/volc-sdk-golang/service/live/v20230101" ) func main () { // 强烈建议不要把 AccessKey ID 和 AccessKey Secret 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 AccessKey ID 和 AccessKey Secret,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 ACCESS_KEY_ID 和 ACCESS KEY_SECRET service := live_v20230101.NewInstance() service.SetCredential(base.Credentials{ AccessKeyID: os.Getenv("ACCESS_KEY_ID"), SecretAccessKey: os.Getenv("ACCESS_KEY_SECRET"), }) body := &live_v20230101.CreateRecordPresetV2Body{} //域名空间,即直播流地址的域名所属的域名空间。您可以调用 [ListDomainDetail](https://www.volcengine.com/docs/6469/1126815) 接口或在视频直播控制台的[域名管理](https://console-stable.volcanicengine.com/live/main/domain/list)页面,查看需要录制的直播流使用的域名所属的域名空间。 body.Vhost = "push.example.com" //应用名称,取值与直播流地址的 `AppName` 字段取值相同,支持填写星号(*)或由 1 到 30 位数字(0 - 9)、大写小字母(A - Z、a - z)、下划线(_)、短横线(-)和句点(.)组成,默认为空。 // note: // <li> `App` 取值为空时,`Stream` 取值也需为空,表示录制配置为 Vhost 级别的全局配置。 </li> // <li> `App` 取值不为空时,`Stream` 取值含义请参见 Stream 参数说明。 </li> var bodyApp *string var bodyAppValue string = "live" bodyApp = &bodyAppValue body.App = bodyApp //流名称,取值与直播流地址的 StreamName 字段取值相同,支持填写星号(*)或由 1 到 100 位数字(0 - 9)、字母、下划线(_)、短横线(-)和句点(.)组成。 // note: // <li> `App` 取值不为空、`Stream` 取值为空时,表示录制配置为 Vhost + App 级别的配置。 </li> // <li> `App` 取值不为空、`Stream` 取值不为空时,表示录制为 Vhost + App + Stream 的配置。 </li> var bodyStream *string var bodyStreamValue string = "stream001" bodyStream = &bodyStreamValue body.Stream = bodyStream //直播流录制配置的详细配置。 bodyRecordPresetConfig := live_v20230101.CreateRecordPresetV2BodyRecordPresetConfig{} //是否录制转码流,默认值为 `0`,支持的取值及含义如下所示。 // <li> `0`:不录制; </li> // <li> `1`:录制全部转码流; </li> // <li> `2`:录制指定转码流,即通过转码后缀列表 `TranscodeSuffixList` 匹配转码流进行录制,如果转码流后缀列表为空仍表示录制全部转码流。 </li> // note: // 转码流和源流需至少选一个进行录制,即是否录制转码流(`TranscodeRecord`)和是否录制源流(`OriginRecord`)的取值至少一个不为 0。 var bodyRecordPresetConfigTranscodeRecord *int32 var bodyRecordPresetConfigTranscodeRecordValue int32 = 1 bodyRecordPresetConfigTranscodeRecord = &bodyRecordPresetConfigTranscodeRecordValue bodyRecordPresetConfig.TranscodeRecord = bodyRecordPresetConfigTranscodeRecord //转码流后缀列表,转码流录制配置为根据转码流列表匹配(`TranscodeRecord` 取值为 `2`)时生效,`TranscodeSuffixList` 默认配置为空,效果等同于录制全部转码流。 bodyRecordPresetConfigTranscodeSuffixList := []*string{} var bodyRecordPresetConfigTranscodeSuffixList0 *string var bodyRecordPresetConfigTranscodeSuffixList0Value string = "_hd" bodyRecordPresetConfigTranscodeSuffixList0 = &bodyRecordPresetConfigTranscodeSuffixList0Value bodyRecordPresetConfigTranscodeSuffixList = append(bodyRecordPresetConfigTranscodeSuffixList, bodyRecordPresetConfigTranscodeSuffixList0) var bodyRecordPresetConfigTranscodeSuffixList1 *string var bodyRecordPresetConfigTranscodeSuffixList1Value string = "_bd" bodyRecordPresetConfigTranscodeSuffixList1 = &bodyRecordPresetConfigTranscodeSuffixList1Value bodyRecordPresetConfigTranscodeSuffixList = append(bodyRecordPresetConfigTranscodeSuffixList, bodyRecordPresetConfigTranscodeSuffixList1) bodyRecordPresetConfig.TranscodeSuffixList = bodyRecordPresetConfigTranscodeSuffixList //是否源流录制,默认值为 `0`,支持的取值及含义如下所示。 // <li> `0`:不录制; </li> // <li> `1`:录制。 </li> // note: // 转码流和源流需至少选一个进行录制,即是否录制转码流(`TranscodeRecord`)和是否录制源流(`OriginRecord`)的取值至少一个不为 0。 var bodyRecordPresetConfigOriginRecord *int32 var bodyRecordPresetConfigOriginRecordValue int32 = 0 bodyRecordPresetConfigOriginRecord = &bodyRecordPresetConfigOriginRecordValue bodyRecordPresetConfig.OriginRecord = bodyRecordPresetConfigOriginRecord //录制为 HLS 格式时,单个 TS 切片时长,单位为秒,默认值为 `10`,取值范围为 [5,30]。 var bodyRecordPresetConfigSliceDuration *int32 var bodyRecordPresetConfigSliceDurationValue int32 = 5 bodyRecordPresetConfigSliceDuration = &bodyRecordPresetConfigSliceDurationValue bodyRecordPresetConfig.SliceDuration = bodyRecordPresetConfigSliceDuration //录制为 FLV 格式时的录制参数。 // note: // 您需至少配置一种录制格式,即 `FlvParam`、`HlsParam`、`Mp4Param` 至少开启一个。 bodyRecordPresetConfigFlvParam := live_v20230101.CreateRecordPresetV2BodyRecordPresetConfigFlvParam{} //当前格式的录制是否开启,默认值为 `false`,支持的取值及含义如下所示。 // <li> `false`:不开启; </li> // <li> `true`:开启。 </li> var bodyRecordPresetConfigFlvParamEnable *bool var bodyRecordPresetConfigFlvParamEnableValue bool = true bodyRecordPresetConfigFlvParamEnable = &bodyRecordPresetConfigFlvParamEnableValue bodyRecordPresetConfigFlvParam.Enable = bodyRecordPresetConfigFlvParamEnable //断流录制场景下,单文件录制时长,单位为秒,默认值为 `7200`,取值范围为 `-1` 和 [300,86400]。 // <li> 取值为 `-1` 时,表示不限制录制时长,录制结束后生成一个完整的录制文件。 </li> // <li> 取值为 [300,86400] 之间的值时,表示根据设置的录制文件时分段长生成录制文件,完成录制后一起上传。 </li> // note: // 断流录制场景仅在录制格式为 HLS 时生效,且断流录制和实时录制为二选一配置。 var bodyRecordPresetConfigFlvParamDuration *int32 var bodyRecordPresetConfigFlvParamDurationValue int32 = 7200 bodyRecordPresetConfigFlvParamDuration = &bodyRecordPresetConfigFlvParamDurationValue bodyRecordPresetConfigFlvParam.Duration = bodyRecordPresetConfigFlvParamDuration //实时录制场景下,断流等待时长,单位为秒,默认值为 `180`,取值范围为 [0,3600]。如果实际断流时间小于断流等待时长,录制任务不会停止;如果实际断流时间大于断流等待时长,录制任务会停止,断流恢复后重新开始一个新的录制任务。 var bodyRecordPresetConfigFlvParamContinueDuration *int32 var bodyRecordPresetConfigFlvParamContinueDurationValue int32 = 180 bodyRecordPresetConfigFlvParamContinueDuration = &bodyRecordPresetConfigFlvParamContinueDurationValue bodyRecordPresetConfigFlvParam.ContinueDuration = bodyRecordPresetConfigFlvParamContinueDuration //实时录制场景下,单文件录制时长,单位为秒,默认值为 `1800`,取值范围为 [300,21600]。录制时间到达设置的单文件录制时长时,会立即生成录制文件实时上传存储。 var bodyRecordPresetConfigFlvParamRealtimeRecordDuration *int32 var bodyRecordPresetConfigFlvParamRealtimeRecordDurationValue int32 = 300 bodyRecordPresetConfigFlvParamRealtimeRecordDuration = &bodyRecordPresetConfigFlvParamRealtimeRecordDurationValue bodyRecordPresetConfigFlvParam.RealtimeRecordDuration = bodyRecordPresetConfigFlvParamRealtimeRecordDuration //断流录制场景下,断流拼接时长,单位为秒,默认值为 `0`,支持的取值及含义如下所示。 // <li> `-1`:一直拼接,表示每次断流都不会影响录制任务,录制完成后生成一个完整的录制文件; </li> // <li> `0`:不拼接,表示每次断流结束录制任务生成一个录制文件,断流恢复重新开始一个新的录制任务; </li> // <li> 大于 0:拼接容错时间,表示如果断流时间小于拼接容错时间时,则录制任务不会停止,不会生成新的录制文件;如果断流时间大于拼接容错时间,则录制任务停止,断流恢复后重新开始一个新的录制任务。 </li> // note: // 断流录制场景仅在录制格式为 HLS 时生效,且断流录制和实时录制为二选一配置。 var bodyRecordPresetConfigFlvParamSplice *int32 var bodyRecordPresetConfigFlvParamSpliceValue int32 = 0 bodyRecordPresetConfigFlvParamSplice = &bodyRecordPresetConfigFlvParamSpliceValue bodyRecordPresetConfigFlvParam.Splice = bodyRecordPresetConfigFlvParamSplice //TOS 存储相关配置。 // note: // 录制文件只能选择一个位置进行存储,即 `TOSParam` 和 `VODParam` 配置且配置其中一个。 bodyRecordPresetConfigFlvParamTOSParam := live_v20230101.CreateRecordPresetV2BodyRecordPresetConfigFlvParamTOSParam{} //是否使用 TOS 存储,默认为 `false`,取值及含义如下所示。 // <li> `false`:不使用; </li> // <li> `true`:使用。 </li> var bodyRecordPresetConfigFlvParamTOSParamEnable *bool var bodyRecordPresetConfigFlvParamTOSParamEnableValue bool = true bodyRecordPresetConfigFlvParamTOSParamEnable = &bodyRecordPresetConfigFlvParamTOSParamEnableValue bodyRecordPresetConfigFlvParamTOSParam.Enable = bodyRecordPresetConfigFlvParamTOSParamEnable //TOS 存储对应的 Bucket。例如,存储位置为 live-test-tos-example/live/liveapp 时,`Bucket` 取值为 `live-test-tos-example`。 // note: // 如果使用 TOS 存储,即 `TOSParam` 中 `Enable` 取值为 `true` 时,`Bucket` 为必填。 var bodyRecordPresetConfigFlvParamTOSParamBucket *string var bodyRecordPresetConfigFlvParamTOSParamBucketValue string = "live-test-tos-example" bodyRecordPresetConfigFlvParamTOSParamBucket = &bodyRecordPresetConfigFlvParamTOSParamBucketValue bodyRecordPresetConfigFlvParamTOSParam.Bucket = bodyRecordPresetConfigFlvParamTOSParamBucket //TOS 存储对应 Bucket 下的存储目录,默认为空。例如,存储位置为 live-test-tos-example/live/liveapp 时,`StorageDir` 取值为 `live/liveapp`。 var bodyRecordPresetConfigFlvParamTOSParamStorageDir *string var bodyRecordPresetConfigFlvParamTOSParamStorageDirValue string = "live/liveapp" bodyRecordPresetConfigFlvParamTOSParamStorageDir = &bodyRecordPresetConfigFlvParamTOSParamStorageDirValue bodyRecordPresetConfigFlvParamTOSParam.StorageDir = bodyRecordPresetConfigFlvParamTOSParamStorageDir //录制文件的存储规则,最大长度为 200 个字符,支持以 // `record/{PubDomain}/{App}/{Stream}/{StartTime}_{EndTime}` 样式设置存储规则,支持输入字母(A - Z、a - z)、数字(0 - 9)、短横线(-)、叹号(!)、下划线(_)、句点(.)、星号(*)及占位符。 // 存储规则设置注意事项如下。 // <li> 目录层级至少包含2级及以上,如 `live/{App}/{Stream}`。 </li> // <li> record 为自定义字段; </li> // <li> {PubDomain} 取值为当前配置的 `vhost` 值; </li> // <li> {App} 取值为当前配置的 `AppName` 值; </li> // <li> {Stream} 取值为当前配置的 `StreamName` 值; </li> // <li> {StartTime} 取值为录制的开始时间戳; </li> // <li> {EndTime} 取值为录制的结束时间戳。 </li> var bodyRecordPresetConfigFlvParamTOSParamExactObject *string var bodyRecordPresetConfigFlvParamTOSParamExactObjectValue string = "record/{PubDomain}/{App}/{Stream}/{StartTime}_{EndTime}" bodyRecordPresetConfigFlvParamTOSParamExactObject = &bodyRecordPresetConfigFlvParamTOSParamExactObjectValue bodyRecordPresetConfigFlvParamTOSParam.ExactObject = bodyRecordPresetConfigFlvParamTOSParamExactObject bodyRecordPresetConfigFlvParam.TOSParam = &bodyRecordPresetConfigFlvParamTOSParam //VOD 存储相关配置。 // note: // 录制文件只能选择一个位置进行存储,即 `TOSParam` 和 `VODParam` 配置且配置其中一个。 bodyRecordPresetConfigFlvParamVODParam := live_v20230101.CreateRecordPresetV2BodyRecordPresetConfigFlvParamVODParam{} //是否使用 VOD 存储,默认为 `false`,支持的取值及含义如下所示。 // <li> `false`:不使用; </li> // <li> `true`:使用。 </li> var bodyRecordPresetConfigFlvParamVODParamEnable *bool var bodyRecordPresetConfigFlvParamVODParamEnableValue bool = true bodyRecordPresetConfigFlvParamVODParamEnable = &bodyRecordPresetConfigFlvParamVODParamEnableValue bodyRecordPresetConfigFlvParamVODParam.Enable = bodyRecordPresetConfigFlvParamVODParamEnable //视频点播(VOD)空间名称。可登录[视频点播控制台](https://console.volcengine.com/vod/)查询。 // note: // 如果使用 VOD 存储,即 `VODParam` 中 `Enable` 取值为 `true` 时,`VodNamespace` 为必填。 var bodyRecordPresetConfigFlvParamVODParamVodNamespace *string var bodyRecordPresetConfigFlvParamVODParamVodNamespaceValue string = "Snapshot" bodyRecordPresetConfigFlvParamVODParamVodNamespace = &bodyRecordPresetConfigFlvParamVODParamVodNamespaceValue bodyRecordPresetConfigFlvParamVODParam.VodNamespace = bodyRecordPresetConfigFlvParamVODParamVodNamespace //视频点播工作流模板 ID,对于存储在点播的录制文件,会使用该工作流模版对录制的视频进行处理,可登录[视频点播控制台](https://console.volcengine.com/vod/)获取工作流模板 ID,默认为空。 var bodyRecordPresetConfigFlvParamVODParamWorkflowID *string var bodyRecordPresetConfigFlvParamVODParamWorkflowIDValue string = "25524a2d*********891d7daf4b9" bodyRecordPresetConfigFlvParamVODParamWorkflowID = &bodyRecordPresetConfigFlvParamVODParamWorkflowIDValue bodyRecordPresetConfigFlvParamVODParam.WorkflowID = bodyRecordPresetConfigFlvParamVODParamWorkflowID //直播录制文件存储到点播时的视频分类 ID,您可以通过视频点播的 [ListVideoClassifications](https://www.volcengine.com/docs/4/101661) 接口查询视频分类 ID 等信息,默认为空。 var bodyRecordPresetConfigFlvParamVODParamClassificationID *int32 var bodyRecordPresetConfigFlvParamVODParamClassificationIDValue int32 = 1234 bodyRecordPresetConfigFlvParamVODParamClassificationID = &bodyRecordPresetConfigFlvParamVODParamClassificationIDValue bodyRecordPresetConfigFlvParamVODParam.ClassificationID = bodyRecordPresetConfigFlvParamVODParamClassificationID //直播录制文件存储到点播时的存储类型,存储类型介绍请参考[媒资存储管理](https://www.volcengine.com/docs/4/73629#媒资存储)。默认值为 `1`,支持的取值及含义如下所示。 // <li> `1`:标准存储; </li> // <li> `2`:归档存储。 </li> var bodyRecordPresetConfigFlvParamVODParamStorageClass *int32 var bodyRecordPresetConfigFlvParamVODParamStorageClassValue int32 = 1 bodyRecordPresetConfigFlvParamVODParamStorageClass = &bodyRecordPresetConfigFlvParamVODParamStorageClassValue bodyRecordPresetConfigFlvParamVODParam.StorageClass = bodyRecordPresetConfigFlvParamVODParamStorageClass //录制文件的存储规则,最大长度为 200 个字符,支持以 // `record/{PubDomain}/{App}/{Stream}/{StartTime}_{EndTime}` 样式设置存储规则,支持输入字母(A - Z、a - z)、数字(0 - 9)、短横线(-)、叹号(!)、下划线(_)、句点(.)、星号(*)及占位符。 // 存储规则设置注意事项如下。 // <li> 目录层级至少包含2级及以上,如 `live/{App}/{Stream}`。 </li> // <li> record 为自定义字段; </li> // <li> {PubDomain} 取值为当前配置的 `vhost` 值; </li> // <li> {App} 取值为当前配置的 `AppName` 值; </li> // <li> {Stream} 取值为当前配置的 `StreamName` 值; </li> // <li> {StartTime} 取值为录制的开始时间戳; </li> // <li> {EndTime} 取值为录制的结束时间戳。 </li> var bodyRecordPresetConfigFlvParamVODParamExactObject *string var bodyRecordPresetConfigFlvParamVODParamExactObjectValue string = "record/{PubDomain}/{App}/{Stream}/{StartTime}_{EndTime}" bodyRecordPresetConfigFlvParamVODParamExactObject = &bodyRecordPresetConfigFlvParamVODParamExactObjectValue bodyRecordPresetConfigFlvParamVODParam.ExactObject = bodyRecordPresetConfigFlvParamVODParamExactObject bodyRecordPresetConfigFlvParam.VODParam = &bodyRecordPresetConfigFlvParamVODParam bodyRecordPresetConfig.FlvParam = &bodyRecordPresetConfigFlvParam //录制为 HLS 合适时的录制参数。 // note: // 您需至少配置一种录制格式,即 `FlvParam`、`HlsParam`、`Mp4Param` 至少开启一个。 bodyRecordPresetConfigHlsParam := live_v20230101.CreateRecordPresetV2BodyRecordPresetConfigHlsParam{} //当前格式的录制是否开启,默认值为 `false`,支持的取值及含义如下所示。 // <li> `false`:不开启; </li> // <li> `true`:开启。 </li> var bodyRecordPresetConfigHlsParamEnable *bool var bodyRecordPresetConfigHlsParamEnableValue bool = true bodyRecordPresetConfigHlsParamEnable = &bodyRecordPresetConfigHlsParamEnableValue bodyRecordPresetConfigHlsParam.Enable = bodyRecordPresetConfigHlsParamEnable //断流录制场景下,单文件录制时长,单位为秒,默认值为 `7200`,取值范围为 `-1` 和 [300,86400]。 // <li> 取值为 `-1` 时,表示不限制录制时长,录制结束后生成一个完整的录制文件。 </li> // <li> 取值为 [300,86400] 之间的值时,表示根据设置的录制文件时分段长生成录制文件,完成录制后一起上传。 </li> // note: // 断流录制场景仅在录制格式为 HLS 时生效,且断流录制和实时录制为二选一配置。 var bodyRecordPresetConfigHlsParamDuration *int32 var bodyRecordPresetConfigHlsParamDurationValue int32 = 7200 bodyRecordPresetConfigHlsParamDuration = &bodyRecordPresetConfigHlsParamDurationValue bodyRecordPresetConfigHlsParam.Duration = bodyRecordPresetConfigHlsParamDuration //实时录制场景下,断流等待时长,单位为秒,默认值为 `180`,取值范围为 [0,3600]。如果实际断流时间小于断流等待时长,录制任务不会停止;如果实际断流时间大于断流等待时长,录制任务会停止,断流恢复后重新开始一个新的录制任务。 var bodyRecordPresetConfigHlsParamContinueDuration *int32 var bodyRecordPresetConfigHlsParamContinueDurationValue int32 = 180 bodyRecordPresetConfigHlsParamContinueDuration = &bodyRecordPresetConfigHlsParamContinueDurationValue bodyRecordPresetConfigHlsParam.ContinueDuration = bodyRecordPresetConfigHlsParamContinueDuration //实时录制场景下,单文件录制时长,单位为秒,默认值为 `1800`,取值范围为 [300,21600]。录制时间到达设置的单文件录制时长时,会立即生成录制文件实时上传存储。 var bodyRecordPresetConfigHlsParamRealtimeRecordDuration *int32 var bodyRecordPresetConfigHlsParamRealtimeRecordDurationValue int32 = 300 bodyRecordPresetConfigHlsParamRealtimeRecordDuration = &bodyRecordPresetConfigHlsParamRealtimeRecordDurationValue bodyRecordPresetConfigHlsParam.RealtimeRecordDuration = bodyRecordPresetConfigHlsParamRealtimeRecordDuration //断流录制场景下,断流拼接时长,单位为秒,默认值为 `0`,支持的取值及含义如下所示。 // <li> `-1`:一直拼接,表示每次断流都不会影响录制任务,录制完成后生成一个完整的录制文件; </li> // <li> `0`:不拼接,表示每次断流结束录制任务生成一个录制文件,断流恢复重新开始一个新的录制任务; </li> // <li> 大于 0:拼接容错时间,表示如果断流时间小于拼接容错时间时,则录制任务不会停止,不会生成新的录制文件;如果断流时间大于拼接容错时间,则录制任务停止,断流恢复后重新开始一个新的录制任务。 </li> // note: // 断流录制场景仅在录制格式为 HLS 时生效,且断流录制和实时录制为二选一配置。 var bodyRecordPresetConfigHlsParamSplice *int32 var bodyRecordPresetConfigHlsParamSpliceValue int32 = 0 bodyRecordPresetConfigHlsParamSplice = &bodyRecordPresetConfigHlsParamSpliceValue bodyRecordPresetConfigHlsParam.Splice = bodyRecordPresetConfigHlsParamSplice //TOS 存储相关配置。 // note: // 录制文件只能选择一个位置进行存储,即 `TOSParam` 和 `VODParam` 配置且配置其中一个。 bodyRecordPresetConfigHlsParamTOSParam := live_v20230101.CreateRecordPresetV2BodyRecordPresetConfigHlsParamTOSParam{} //是否使用 TOS 存储,默认为 `false`,取值及含义如下所示。 // <li> `false`:不使用; </li> // <li> `true`:使用。 </li> var bodyRecordPresetConfigHlsParamTOSParamEnable *bool var bodyRecordPresetConfigHlsParamTOSParamEnableValue bool = true bodyRecordPresetConfigHlsParamTOSParamEnable = &bodyRecordPresetConfigHlsParamTOSParamEnableValue bodyRecordPresetConfigHlsParamTOSParam.Enable = bodyRecordPresetConfigHlsParamTOSParamEnable //TOS 存储对应的 Bucket。例如,存储位置为 live-test-tos-example/live/liveapp 时,`Bucket` 取值为 `live-test-tos-example`。 // note: // 如果使用 TOS 存储,即 `TOSParam` 中 `Enable` 取值为 `true` 时,`Bucket` 为必填。 var bodyRecordPresetConfigHlsParamTOSParamBucket *string var bodyRecordPresetConfigHlsParamTOSParamBucketValue string = "live-test-tos-example" bodyRecordPresetConfigHlsParamTOSParamBucket = &bodyRecordPresetConfigHlsParamTOSParamBucketValue bodyRecordPresetConfigHlsParamTOSParam.Bucket = bodyRecordPresetConfigHlsParamTOSParamBucket //TOS 存储对应 Bucket 下的存储目录,默认为空。例如,存储位置为 live-test-tos-example/live/liveapp 时,`StorageDir` 取值为 `live/liveapp`。 var bodyRecordPresetConfigHlsParamTOSParamStorageDir *string var bodyRecordPresetConfigHlsParamTOSParamStorageDirValue string = "live/liveapp" bodyRecordPresetConfigHlsParamTOSParamStorageDir = &bodyRecordPresetConfigHlsParamTOSParamStorageDirValue bodyRecordPresetConfigHlsParamTOSParam.StorageDir = bodyRecordPresetConfigHlsParamTOSParamStorageDir //录制文件的存储规则,最大长度为 200 个字符,支持以 // `record/{PubDomain}/{App}/{Stream}/{StartTime}_{EndTime}` 样式设置存储规则,支持输入字母(A - Z、a - z)、数字(0 - 9)、短横线(-)、叹号(!)、下划线(_)、句点(.)、星号(*)及占位符。 // 存储规则设置注意事项如下。 // <li> 目录层级至少包含2级及以上,如 `live/{App}/{Stream}`。 </li> // <li> record 为自定义字段; </li> // <li> {PubDomain} 取值为当前配置的 `vhost` 值; </li> // <li> {App} 取值为当前配置的 `AppName` 值; </li> // <li> {Stream} 取值为当前配置的 `StreamName` 值; </li> // <li> {StartTime} 取值为录制的开始时间戳; </li> // <li> {EndTime} 取值为录制的结束时间戳。 </li> var bodyRecordPresetConfigHlsParamTOSParamExactObject *string var bodyRecordPresetConfigHlsParamTOSParamExactObjectValue string = "record/{PubDomain}/{App}/{Stream}/{StartTime}_{EndTime}" bodyRecordPresetConfigHlsParamTOSParamExactObject = &bodyRecordPresetConfigHlsParamTOSParamExactObjectValue bodyRecordPresetConfigHlsParamTOSParam.ExactObject = bodyRecordPresetConfigHlsParamTOSParamExactObject bodyRecordPresetConfigHlsParam.TOSParam = &bodyRecordPresetConfigHlsParamTOSParam //VOD 存储相关配置。 // note: // 录制文件只能选择一个位置进行存储,即 `TOSParam` 和 `VODParam` 配置且配置其中一个。 bodyRecordPresetConfigHlsParamVODParam := live_v20230101.CreateRecordPresetV2BodyRecordPresetConfigHlsParamVODParam{} //是否使用 VOD 存储,默认为 `false`,支持的取值及含义如下所示。 // <li> `false`:不使用; </li> // <li> `true`:使用。 </li> var bodyRecordPresetConfigHlsParamVODParamEnable *bool var bodyRecordPresetConfigHlsParamVODParamEnableValue bool = true bodyRecordPresetConfigHlsParamVODParamEnable = &bodyRecordPresetConfigHlsParamVODParamEnableValue bodyRecordPresetConfigHlsParamVODParam.Enable = bodyRecordPresetConfigHlsParamVODParamEnable //视频点播(VOD)空间名称。可登录[视频点播控制台](https://console.volcengine.com/vod/)查询。 // note: // 如果使用 VOD 存储,即 `VODParam` 中 `Enable` 取值为 `true` 时,`VodNamespace` 为必填。 var bodyRecordPresetConfigHlsParamVODParamVodNamespace *string var bodyRecordPresetConfigHlsParamVODParamVodNamespaceValue string = "Snapshot" bodyRecordPresetConfigHlsParamVODParamVodNamespace = &bodyRecordPresetConfigHlsParamVODParamVodNamespaceValue bodyRecordPresetConfigHlsParamVODParam.VodNamespace = bodyRecordPresetConfigHlsParamVODParamVodNamespace //视频点播工作流模板 ID,对于存储在点播的录制文件,会使用该工作流模版对录制的视频进行处理,可登录[视频点播控制台](https://console.volcengine.com/vod/)获取工作流模板 ID,默认为空。 var bodyRecordPresetConfigHlsParamVODParamWorkflowID *string var bodyRecordPresetConfigHlsParamVODParamWorkflowIDValue string = "25524a2d*********891d7daf4b9" bodyRecordPresetConfigHlsParamVODParamWorkflowID = &bodyRecordPresetConfigHlsParamVODParamWorkflowIDValue bodyRecordPresetConfigHlsParamVODParam.WorkflowID = bodyRecordPresetConfigHlsParamVODParamWorkflowID //直播录制文件存储到点播时的视频分类 ID,您可以通过视频点播的 [ListVideoClassifications](https://www.volcengine.com/docs/4/101661) 接口查询视频分类 ID 等信息,默认为空。 var bodyRecordPresetConfigHlsParamVODParamClassificationID *int32 var bodyRecordPresetConfigHlsParamVODParamClassificationIDValue int32 = 1234 bodyRecordPresetConfigHlsParamVODParamClassificationID = &bodyRecordPresetConfigHlsParamVODParamClassificationIDValue bodyRecordPresetConfigHlsParamVODParam.ClassificationID = bodyRecordPresetConfigHlsParamVODParamClassificationID //直播录制文件存储到点播时的存储类型,存储类型介绍请参考[媒资存储管理](https://www.volcengine.com/docs/4/73629#媒资存储)。默认值为 `1`,支持的取值及含义如下所示。 // <li> `1`:标准存储; </li> // <li> `2`:归档存储。 </li> var bodyRecordPresetConfigHlsParamVODParamStorageClass *int32 var bodyRecordPresetConfigHlsParamVODParamStorageClassValue int32 = 1 bodyRecordPresetConfigHlsParamVODParamStorageClass = &bodyRecordPresetConfigHlsParamVODParamStorageClassValue bodyRecordPresetConfigHlsParamVODParam.StorageClass = bodyRecordPresetConfigHlsParamVODParamStorageClass //录制文件的存储规则,最大长度为 200 个字符,支持以 // `record/{PubDomain}/{App}/{Stream}/{StartTime}_{EndTime}` 样式设置存储规则,支持输入字母(A - Z、a - z)、数字(0 - 9)、短横线(-)、叹号(!)、下划线(_)、句点(.)、星号(*)及占位符。 // 存储规则设置注意事项如下。 // <li> 目录层级至少包含2级及以上,如 `live/{App}/{Stream}`。 </li> // <li> record 为自定义字段; </li> // <li> {PubDomain} 取值为当前配置的 `vhost` 值; </li> // <li> {App} 取值为当前配置的 `AppName` 值; </li> // <li> {Stream} 取值为当前配置的 `StreamName` 值; </li> // <li> {StartTime} 取值为录制的开始时间戳; </li> // <li> {EndTime} 取值为录制的结束时间戳。 </li> var bodyRecordPresetConfigHlsParamVODParamExactObject *string var bodyRecordPresetConfigHlsParamVODParamExactObjectValue string = "record/{PubDomain}/{App}/{Stream}/{StartTime}_{EndTime}" bodyRecordPresetConfigHlsParamVODParamExactObject = &bodyRecordPresetConfigHlsParamVODParamExactObjectValue bodyRecordPresetConfigHlsParamVODParam.ExactObject = bodyRecordPresetConfigHlsParamVODParamExactObject bodyRecordPresetConfigHlsParam.VODParam = &bodyRecordPresetConfigHlsParamVODParam bodyRecordPresetConfig.HlsParam = &bodyRecordPresetConfigHlsParam //录制为 MP4 格式时的录制参数。 // note: // 您需至少配置一种录制格式,即 `FlvParam`、`HlsParam`、`Mp4Param` 至少开启一个。 bodyRecordPresetConfigMp4Param := live_v20230101.CreateRecordPresetV2BodyRecordPresetConfigMp4Param{} //当前格式的录制是否开启,默认值为 `false`,支持的取值及含义如下所示。 // <li> `false`:不开启; </li> // <li> `true`:开启。 </li> var bodyRecordPresetConfigMp4ParamEnable *bool var bodyRecordPresetConfigMp4ParamEnableValue bool = true bodyRecordPresetConfigMp4ParamEnable = &bodyRecordPresetConfigMp4ParamEnableValue bodyRecordPresetConfigMp4Param.Enable = bodyRecordPresetConfigMp4ParamEnable //断流录制场景下,单文件录制时长,单位为秒,默认值为 `7200`,取值范围为 `-1` 和 [300,86400]。 // <li> 取值为 `-1` 时,表示不限制录制时长,录制结束后生成一个完整的录制文件。 </li> // <li> 取值为 [300,86400] 之间的值时,表示根据设置的录制文件时分段长生成录制文件,完成录制后一起上传。 </li> // note: // 断流录制场景仅在录制格式为 HLS 时生效,且断流录制和实时录制为二选一配置。 var bodyRecordPresetConfigMp4ParamDuration *int32 var bodyRecordPresetConfigMp4ParamDurationValue int32 = 7200 bodyRecordPresetConfigMp4ParamDuration = &bodyRecordPresetConfigMp4ParamDurationValue bodyRecordPresetConfigMp4Param.Duration = bodyRecordPresetConfigMp4ParamDuration //实时录制场景下,断流等待时长,单位为秒,默认值为 `180`,取值范围为 [0,3600]。如果实际断流时间小于断流等待时长,录制任务不会停止;如果实际断流时间大于断流等待时长,录制任务会停止,断流恢复后重新开始一个新的录制任务。 var bodyRecordPresetConfigMp4ParamContinueDuration *int32 var bodyRecordPresetConfigMp4ParamContinueDurationValue int32 = 180 bodyRecordPresetConfigMp4ParamContinueDuration = &bodyRecordPresetConfigMp4ParamContinueDurationValue bodyRecordPresetConfigMp4Param.ContinueDuration = bodyRecordPresetConfigMp4ParamContinueDuration //实时录制场景下,单文件录制时长,单位为秒,默认值为 `1800`,取值范围为 [300,21600]。录制时间到达设置的单文件录制时长时,会立即生成录制文件实时上传存储。 var bodyRecordPresetConfigMp4ParamRealtimeRecordDuration *int32 var bodyRecordPresetConfigMp4ParamRealtimeRecordDurationValue int32 = 300 bodyRecordPresetConfigMp4ParamRealtimeRecordDuration = &bodyRecordPresetConfigMp4ParamRealtimeRecordDurationValue bodyRecordPresetConfigMp4Param.RealtimeRecordDuration = bodyRecordPresetConfigMp4ParamRealtimeRecordDuration //断流录制场景下,断流拼接时长,单位为秒,默认值为 `0`,支持的取值及含义如下所示。 // <li> `-1`:一直拼接,表示每次断流都不会影响录制任务,录制完成后生成一个完整的录制文件; </li> // <li> `0`:不拼接,表示每次断流结束录制任务生成一个录制文件,断流恢复重新开始一个新的录制任务; </li> // <li> 大于 0:拼接容错时间,表示如果断流时间小于拼接容错时间时,则录制任务不会停止,不会生成新的录制文件;如果断流时间大于拼接容错时间,则录制任务停止,断流恢复后重新开始一个新的录制任务。 </li> // note: // 断流录制场景仅在录制格式为 HLS 时生效,且断流录制和实时录制为二选一配置。 var bodyRecordPresetConfigMp4ParamSplice *int32 var bodyRecordPresetConfigMp4ParamSpliceValue int32 = 0 bodyRecordPresetConfigMp4ParamSplice = &bodyRecordPresetConfigMp4ParamSpliceValue bodyRecordPresetConfigMp4Param.Splice = bodyRecordPresetConfigMp4ParamSplice //TOS 存储相关配置。 // note: // 录制文件只能选择一个位置进行存储,即 `TOSParam` 和 `VODParam` 配置且配置其中一个。 bodyRecordPresetConfigMp4ParamTOSParam := live_v20230101.CreateRecordPresetV2BodyRecordPresetConfigMp4ParamTOSParam{} //是否使用 TOS 存储,默认为 `false`,取值及含义如下所示。 // <li> `false`:不使用; </li> // <li> `true`:使用。 </li> var bodyRecordPresetConfigMp4ParamTOSParamEnable *bool var bodyRecordPresetConfigMp4ParamTOSParamEnableValue bool = true bodyRecordPresetConfigMp4ParamTOSParamEnable = &bodyRecordPresetConfigMp4ParamTOSParamEnableValue bodyRecordPresetConfigMp4ParamTOSParam.Enable = bodyRecordPresetConfigMp4ParamTOSParamEnable //TOS 存储对应的 Bucket。例如,存储位置为 live-test-tos-example/live/liveapp 时,`Bucket` 取值为 `live-test-tos-example`。 // note: // 如果使用 TOS 存储,即 `TOSParam` 中 `Enable` 取值为 `true` 时,`Bucket` 为必填。 var bodyRecordPresetConfigMp4ParamTOSParamBucket *string var bodyRecordPresetConfigMp4ParamTOSParamBucketValue string = "live-test-tos-example" bodyRecordPresetConfigMp4ParamTOSParamBucket = &bodyRecordPresetConfigMp4ParamTOSParamBucketValue bodyRecordPresetConfigMp4ParamTOSParam.Bucket = bodyRecordPresetConfigMp4ParamTOSParamBucket //TOS 存储对应 Bucket 下的存储目录,默认为空。例如,存储位置为 live-test-tos-example/live/liveapp 时,`StorageDir` 取值为 `live/liveapp`。 var bodyRecordPresetConfigMp4ParamTOSParamStorageDir *string var bodyRecordPresetConfigMp4ParamTOSParamStorageDirValue string = "live/liveapp" bodyRecordPresetConfigMp4ParamTOSParamStorageDir = &bodyRecordPresetConfigMp4ParamTOSParamStorageDirValue bodyRecordPresetConfigMp4ParamTOSParam.StorageDir = bodyRecordPresetConfigMp4ParamTOSParamStorageDir //录制文件的存储规则,最大长度为 200 个字符,支持以 // `record/{PubDomain}/{App}/{Stream}/{StartTime}_{EndTime}` 样式设置存储规则,支持输入字母(A - Z、a - z)、数字(0 - 9)、短横线(-)、叹号(!)、下划线(_)、句点(.)、星号(*)及占位符。 // 存储规则设置注意事项如下。 // <li> 目录层级至少包含2级及以上,如 `live/{App}/{Stream}`。 </li> // <li> record 为自定义字段; </li> // <li> {PubDomain} 取值为当前配置的 `vhost` 值; </li> // <li> {App} 取值为当前配置的 `AppName` 值; </li> // <li> {Stream} 取值为当前配置的 `StreamName` 值; </li> // <li> {StartTime} 取值为录制的开始时间戳; </li> // <li> {EndTime} 取值为录制的结束时间戳。 </li> var bodyRecordPresetConfigMp4ParamTOSParamExactObject *string var bodyRecordPresetConfigMp4ParamTOSParamExactObjectValue string = "record/{PubDomain}/{App}/{Stream}/{StartTime}_{EndTime}" bodyRecordPresetConfigMp4ParamTOSParamExactObject = &bodyRecordPresetConfigMp4ParamTOSParamExactObjectValue bodyRecordPresetConfigMp4ParamTOSParam.ExactObject = bodyRecordPresetConfigMp4ParamTOSParamExactObject bodyRecordPresetConfigMp4Param.TOSParam = &bodyRecordPresetConfigMp4ParamTOSParam //VOD 存储相关配置。 // note: // 录制文件只能选择一个位置进行存储,即 `TOSParam` 和 `VODParam` 配置且配置其中一个。 bodyRecordPresetConfigMp4ParamVODParam := live_v20230101.CreateRecordPresetV2BodyRecordPresetConfigMp4ParamVODParam{} //是否使用 VOD 存储,默认为 `false`,支持的取值及含义如下所示。 // <li> `false`:不使用; </li> // <li> `true`:使用。 </li> var bodyRecordPresetConfigMp4ParamVODParamEnable *bool var bodyRecordPresetConfigMp4ParamVODParamEnableValue bool = true bodyRecordPresetConfigMp4ParamVODParamEnable = &bodyRecordPresetConfigMp4ParamVODParamEnableValue bodyRecordPresetConfigMp4ParamVODParam.Enable = bodyRecordPresetConfigMp4ParamVODParamEnable //视频点播(VOD)空间名称。可登录[视频点播控制台](https://console.volcengine.com/vod/)查询。 // note: // 如果使用 VOD 存储,即 `VODParam` 中 `Enable` 取值为 `true` 时,`VodNamespace` 为必填。 var bodyRecordPresetConfigMp4ParamVODParamVodNamespace *string var bodyRecordPresetConfigMp4ParamVODParamVodNamespaceValue string = "Snapshot" bodyRecordPresetConfigMp4ParamVODParamVodNamespace = &bodyRecordPresetConfigMp4ParamVODParamVodNamespaceValue bodyRecordPresetConfigMp4ParamVODParam.VodNamespace = bodyRecordPresetConfigMp4ParamVODParamVodNamespace //视频点播工作流模板 ID,对于存储在点播的录制文件,会使用该工作流模版对录制的视频进行处理,可登录[视频点播控制台](https://console.volcengine.com/vod/)获取工作流模板 ID,默认为空。 var bodyRecordPresetConfigMp4ParamVODParamWorkflowID *string var bodyRecordPresetConfigMp4ParamVODParamWorkflowIDValue string = "25524a2d*********891d7daf4b9" bodyRecordPresetConfigMp4ParamVODParamWorkflowID = &bodyRecordPresetConfigMp4ParamVODParamWorkflowIDValue bodyRecordPresetConfigMp4ParamVODParam.WorkflowID = bodyRecordPresetConfigMp4ParamVODParamWorkflowID //直播录制文件存储到点播时的视频分类 ID,您可以通过视频点播的 [ListVideoClassifications](https://www.volcengine.com/docs/4/101661) 接口查询视频分类 ID 等信息,默认为空。 var bodyRecordPresetConfigMp4ParamVODParamClassificationID *int32 var bodyRecordPresetConfigMp4ParamVODParamClassificationIDValue int32 = 1234 bodyRecordPresetConfigMp4ParamVODParamClassificationID = &bodyRecordPresetConfigMp4ParamVODParamClassificationIDValue bodyRecordPresetConfigMp4ParamVODParam.ClassificationID = bodyRecordPresetConfigMp4ParamVODParamClassificationID //直播录制文件存储到点播时的存储类型,存储类型介绍请参考[媒资存储管理](https://www.volcengine.com/docs/4/73629#媒资存储)。默认值为 `1`,支持的取值及含义如下所示。 // <li> `1`:标准存储; </li> // <li> `2`:归档存储。 </li> var bodyRecordPresetConfigMp4ParamVODParamStorageClass *int32 var bodyRecordPresetConfigMp4ParamVODParamStorageClassValue int32 = 1 bodyRecordPresetConfigMp4ParamVODParamStorageClass = &bodyRecordPresetConfigMp4ParamVODParamStorageClassValue bodyRecordPresetConfigMp4ParamVODParam.StorageClass = bodyRecordPresetConfigMp4ParamVODParamStorageClass //录制文件的存储规则,最大长度为 200 个字符,支持以 // `record/{PubDomain}/{App}/{Stream}/{StartTime}_{EndTime}` 样式设置存储规则,支持输入字母(A - Z、a - z)、数字(0 - 9)、短横线(-)、叹号(!)、下划线(_)、句点(.)、星号(*)及占位符。 // 存储规则设置注意事项如下。 // <li> 目录层级至少包含2级及以上,如 `live/{App}/{Stream}`。 </li> // <li> record 为自定义字段; </li> // <li> {PubDomain} 取值为当前配置的 `vhost` 值; </li> // <li> {App} 取值为当前配置的 `AppName` 值; </li> // <li> {Stream} 取值为当前配置的 `StreamName` 值; </li> // <li> {StartTime} 取值为录制的开始时间戳; </li> // <li> {EndTime} 取值为录制的结束时间戳。 </li> var bodyRecordPresetConfigMp4ParamVODParamExactObject *string var bodyRecordPresetConfigMp4ParamVODParamExactObjectValue string = "record/{PubDomain}/{App}/{Stream}/{StartTime}_{EndTime}" bodyRecordPresetConfigMp4ParamVODParamExactObject = &bodyRecordPresetConfigMp4ParamVODParamExactObjectValue bodyRecordPresetConfigMp4ParamVODParam.ExactObject = bodyRecordPresetConfigMp4ParamVODParamExactObject bodyRecordPresetConfigMp4Param.VODParam = &bodyRecordPresetConfigMp4ParamVODParam bodyRecordPresetConfig.Mp4Param = &bodyRecordPresetConfigMp4Param body.RecordPresetConfig = bodyRecordPresetConfig resp, err := service.CreateRecordPresetV2(context.Background(), body) if err != nil { fmt.Printf("error %v", err) } else { fmt.Printf("success %+v", resp) } }
您可以调用 DeleteRecordPreset 接口删除录制配置。详细的参数说明可参见 DeleteRecordPreset 接口文档。
接口调用示例如下所示。
package main import ( "os" "context" "fmt" "github.com/volcengine/volc-sdk-golang/base" "github.com/volcengine/volc-sdk-golang/service/live/v20230101" ) func main () { // 强烈建议不要把 AccessKey ID 和 AccessKey Secret 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 AccessKey ID 和 AccessKey Secret,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 ACCESS_KEY_ID 和 ACCESS KEY_SECRET service := live_v20230101.NewInstance() service.SetCredential(base.Credentials{ AccessKeyID: os.Getenv("ACCESS_KEY_ID"), SecretAccessKey: os.Getenv("ACCESS_KEY_SECRET"), }) body := &live_v20230101.DeleteRecordPresetBody{} //应用名称,您可以调用 [ListVhostRecordPresetV2](https://www.volcengine.com/docs/6469/1126858) 接口查看待删除的录制配置 App 取值。 var bodyApp *string var bodyAppValue string = "live" bodyApp = &bodyAppValue body.App = bodyApp //录制配置的名称。可调用 [ListVhostRecordPresetV2](https://www.volcengine.com/docs/6469/1126858) 接口,查询配置的名称。 body.Preset = "liverecord" //域名空间。您可以调用 [ListVhostRecordPresetV2](https://www.volcengine.com/docs/6469/1126858) 接口查看待更新录制配置的 `Vhost` 取值。 var bodyVhost *string var bodyVhostValue string = "push.example.com" bodyVhost = &bodyVhostValue body.Vhost = bodyVhost //流名称,取值与直播流地址的 `StreamName` 字段取值相应,用来指定待更新的录制配置,默认为空。您可以调用 [ListVhostRecordPresetV2](https://www.volcengine.com/docs/6469/1126858) 接口查看待更新录制配置的 `Stream` 取值。 var bodyStream *string var bodyStreamValue string = "example_stream" bodyStream = &bodyStreamValue body.Stream = bodyStream resp, err := service.DeleteRecordPreset(context.Background(), body) if err != nil { fmt.Printf("error %v", err) } else { fmt.Printf("success %+v", resp) } }
您可以调用 UpdateRecordPresetV2 接口更新录制配置。详细的参数说明可参见 UpdateRecordPresetV2 接口文档。
接口调用示例如下所示。
package main import ( "os" "context" "fmt" "github.com/volcengine/volc-sdk-golang/base" "github.com/volcengine/volc-sdk-golang/service/live/v20230101" ) func main () { // 强烈建议不要把 AccessKey ID 和 AccessKey Secret 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 AccessKey ID 和 AccessKey Secret,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 ACCESS_KEY_ID 和 ACCESS KEY_SECRET service := live_v20230101.NewInstance() service.SetCredential(base.Credentials{ AccessKeyID: os.Getenv("ACCESS_KEY_ID"), SecretAccessKey: os.Getenv("ACCESS_KEY_SECRET"), }) body := &live_v20230101.UpdateRecordPresetV2Body{} //域名空间。您可以调用 [ListVhostRecordPresetV2](https://www.volcengine.com/docs/6469/1126858) 接口查看待更新录制配置的 `Vhost` 取值。 body.Vhost = "push.example.com" //应用名称,取值与直播流地址的 `AppName` 字段取值相同,用来指定待更新的录制配置,默认为空。您可以调用 [ListVhostRecordPresetV2](https://www.volcengine.com/docs/6469/1126858) 接口查看待更新录制配置的 `App` 取值。 var bodyApp *string var bodyAppValue string = "live" bodyApp = &bodyAppValue body.App = bodyApp //录制配置的名称。您可以调用 [ListVhostRecordPresetV2](https://www.volcengine.com/docs/6469/1126858) 接口查看待更新录制配置的 `Name` 取值。 body.Preset = "liverecord" //录制配置的详细参数配置。 // note: // 以下录制参数,未传入值时表示与更新前的配置相同。 bodyRecordPresetConfig := live_v20230101.UpdateRecordPresetV2BodyRecordPresetConfig{} //是否录制转码流,默认值为 0。支持的取值如下所示。 // <li> `0`:不录制; </li> // <li> `1`:录制全部转码流; </li> // <li> `2`:录制指定转码流,即通过转码后缀列表 `TranscodeSuffixList` 匹配转码流进行录制,如果转码流后缀列表为空仍表示录制全部转码流。 </li> // note: // 转码流和源流需至少选一个进行录制,即是否录制转码流(`TranscodeRecord`)和是否录制源流(`OriginRecord`)的取值至少一个不为 0。 var bodyRecordPresetConfigTranscodeRecord *int32 var bodyRecordPresetConfigTranscodeRecordValue int32 = 1 bodyRecordPresetConfigTranscodeRecord = &bodyRecordPresetConfigTranscodeRecordValue bodyRecordPresetConfig.TranscodeRecord = bodyRecordPresetConfigTranscodeRecord //是否录制源流,默认值为 `0`,支持的取值及含义如下所示。 // <li> `0`:不录制; </li> // <li> `1`:录制。 </li> // note: // 转码流和源流需至少选一个进行录制,即是否录制转码流(`TranscodeRecord`)和是否录制源流(`OriginRecord`)的取值至少一个不为 0。 var bodyRecordPresetConfigOriginRecord *int32 var bodyRecordPresetConfigOriginRecordValue int32 = 1 bodyRecordPresetConfigOriginRecord = &bodyRecordPresetConfigOriginRecordValue bodyRecordPresetConfig.OriginRecord = bodyRecordPresetConfigOriginRecord //录制为 HLS 格式时,单个 TS 切片时长,单位为秒,默认值为 `10`,取值范围为 [5,30]。 var bodyRecordPresetConfigSliceDuration *int32 var bodyRecordPresetConfigSliceDurationValue int32 = 5 bodyRecordPresetConfigSliceDuration = &bodyRecordPresetConfigSliceDurationValue bodyRecordPresetConfig.SliceDuration = bodyRecordPresetConfigSliceDuration //转码流后缀列表,转码流录制配置为根据转码流列表匹配(`TranscodeRecord` 取值为 `2`)时生效,`TranscodeSuffixList` 默认配置为空,效果等同于录制全部转码流。 bodyRecordPresetConfigTranscodeSuffixList := []*string{} var bodyRecordPresetConfigTranscodeSuffixList0 *string var bodyRecordPresetConfigTranscodeSuffixList0Value string = "_hd" bodyRecordPresetConfigTranscodeSuffixList0 = &bodyRecordPresetConfigTranscodeSuffixList0Value bodyRecordPresetConfigTranscodeSuffixList = append(bodyRecordPresetConfigTranscodeSuffixList, bodyRecordPresetConfigTranscodeSuffixList0) bodyRecordPresetConfig.TranscodeSuffixList = bodyRecordPresetConfigTranscodeSuffixList //录制为 FLV 格式时的录制参数。 // note: // 您需至少配置一个录制格式,即 `FlvParam`、`HlsParam`、`Mp4Param` 至少开启一个。 bodyRecordPresetConfigFlvParam := live_v20230101.UpdateRecordPresetV2BodyRecordPresetConfigFlvParam{} //当前格式的录制是否开启,默认 `false`,取值及含义如下所示。 // <li> `false`:不开启; </li> // <li> `true`:开启。 </li> var bodyRecordPresetConfigFlvParamEnable *bool var bodyRecordPresetConfigFlvParamEnableValue bool = true bodyRecordPresetConfigFlvParamEnable = &bodyRecordPresetConfigFlvParamEnableValue bodyRecordPresetConfigFlvParam.Enable = bodyRecordPresetConfigFlvParamEnable //断流录制场景下,单文件录制时长,单位为秒,默认值为 `7200`,取值范围为 `-1` 和 [300,86400]。 // <li> 取值为 `-1` 时,表示不限制录制时长,录制结束后生成一个完整的录制文件。 </li> // <li> 取值为 [300,86400] 之间的值时,表示根据设置的录制文件时长分段生成录制文件,完成录制后一起上传。 </li> // note: // 断流录制场景仅在录制格式为 HLS 时生效,且断流录制和实时录制为二选一配置。 var bodyRecordPresetConfigFlvParamDuration *int32 var bodyRecordPresetConfigFlvParamDurationValue int32 = 7200 bodyRecordPresetConfigFlvParamDuration = &bodyRecordPresetConfigFlvParamDurationValue bodyRecordPresetConfigFlvParam.Duration = bodyRecordPresetConfigFlvParamDuration //实时录制场景下,单文件录制时长,单位为秒,默认值为 `1800`,取值范围为 [300,21600]。录制时间到达设置的单文件录制时长时,会立即生成录制文件实时上传存储。 var bodyRecordPresetConfigFlvParamRealtimeRecordDuration *int32 var bodyRecordPresetConfigFlvParamRealtimeRecordDurationValue int32 = 7200 bodyRecordPresetConfigFlvParamRealtimeRecordDuration = &bodyRecordPresetConfigFlvParamRealtimeRecordDurationValue bodyRecordPresetConfigFlvParam.RealtimeRecordDuration = bodyRecordPresetConfigFlvParamRealtimeRecordDuration //断流录制场景下,断流拼接时长,单位为秒,默认值为 `0`,支持的取值及含义如下所示。 // <li> `-1`:一直拼接,表示每次断流都不会影响录制任务,录制完成后生成一个完整的录制文件; </li> // <li> `0`:不拼接,表示每次断流结束录制任务生成一个录制文件,断流恢复重新开始一个新的录制任务; </li> // <li> 大于 0:拼接容错时间,表示如果断流时间小于拼接容错时间时,则录制任务不会停止,不会生成新的录制文件;如果断流时间大于拼接容错时间,则录制任务停止,断流恢复后重新开始一个新的录制任务。 </li> // note: // 断流录制场景仅在录制格式为 HLS 时生效,且断流录制和实时录制为二选一配置。 var bodyRecordPresetConfigFlvParamSplice *int32 var bodyRecordPresetConfigFlvParamSpliceValue int32 = 0 bodyRecordPresetConfigFlvParamSplice = &bodyRecordPresetConfigFlvParamSpliceValue bodyRecordPresetConfigFlvParam.Splice = bodyRecordPresetConfigFlvParamSplice //TOS 存储相关配置。 // note: // 录制文件只能选择一个位置进行存储,即 `TOSParam` 和 `VODParam` 配置且配置其中一个。 bodyRecordPresetConfigFlvParamTOSParam := live_v20230101.UpdateRecordPresetV2BodyRecordPresetConfigFlvParamTOSParam{} //是否使用 TOS 存储,默认为 `false`,取值及含义如下所示。 // <li> `false`:不使用; </li> // <li> `true`:使用。 </li> var bodyRecordPresetConfigFlvParamTOSParamEnable *bool var bodyRecordPresetConfigFlvParamTOSParamEnableValue bool = true bodyRecordPresetConfigFlvParamTOSParamEnable = &bodyRecordPresetConfigFlvParamTOSParamEnableValue bodyRecordPresetConfigFlvParamTOSParam.Enable = bodyRecordPresetConfigFlvParamTOSParamEnable //TOS 存储对应的 Bucket。例如,存储位置为 live-test-tos-example/live/liveapp 时,`Bucket` 取值为 `live-test-tos-example`。 // note: // 如果使用 TOS 存储,即 `TOSParam` 中 `Enable` 取值为 `true` 时,`Bucket` 为必填。 var bodyRecordPresetConfigFlvParamTOSParamBucket *string var bodyRecordPresetConfigFlvParamTOSParamBucketValue string = "live-test-tos-example" bodyRecordPresetConfigFlvParamTOSParamBucket = &bodyRecordPresetConfigFlvParamTOSParamBucketValue bodyRecordPresetConfigFlvParamTOSParam.Bucket = bodyRecordPresetConfigFlvParamTOSParamBucket //TOS 存储对应 Bucket 下的存储目录,默认为空。例如,存储位置为 live-test-tos-example/live/liveapp 时,`StorageDir` 取值为 `live/liveapp`。 var bodyRecordPresetConfigFlvParamTOSParamStorageDir *string var bodyRecordPresetConfigFlvParamTOSParamStorageDirValue string = "live/liveapp" bodyRecordPresetConfigFlvParamTOSParamStorageDir = &bodyRecordPresetConfigFlvParamTOSParamStorageDirValue bodyRecordPresetConfigFlvParamTOSParam.StorageDir = bodyRecordPresetConfigFlvParamTOSParamStorageDir //录制文件的存储规则,最大长度为 200 个字符,支持以 // `record/{PubDomain}/{App}/{Stream}/{StartTime}_{EndTime}` 样式设置存储规则,支持输入字母(A - Z、a - z)、数字(0 - 9)、短横线(-)、叹号(!)、下划线(_)、句点(.)、星号(*)及占位符。 // 存储规则设置注意事项如下。 // <li> 目录层级至少包含2级及以上,如 `live/{App}/{Stream}`。 </li> // <li> record 为自定义字段; </li> // <li> {PubDomain} 取值为当前配置的 `vhost` 值; </li> // <li> {App} 取值为当前配置的 `AppName` 值; </li> // <li> {Stream} 取值为当前配置的 `StreamName` 值; </li> // <li> {StartTime} 取值为录制的开始时间戳; </li> // <li> {EndTime} 取值为录制的结束时间戳。 </li> var bodyRecordPresetConfigFlvParamTOSParamExactObject *string var bodyRecordPresetConfigFlvParamTOSParamExactObjectValue string = "record/{PubDomain}/{App}/{Stream}/{StartTime}_{EndTime}" bodyRecordPresetConfigFlvParamTOSParamExactObject = &bodyRecordPresetConfigFlvParamTOSParamExactObjectValue bodyRecordPresetConfigFlvParamTOSParam.ExactObject = bodyRecordPresetConfigFlvParamTOSParamExactObject bodyRecordPresetConfigFlvParam.TOSParam = &bodyRecordPresetConfigFlvParamTOSParam //VOD 存储相关配置。 // note: // 录制文件只能选择一个位置进行存储,即 `TOSParam` 和 `VODParam` 配置且配置其中一个。 bodyRecordPresetConfigFlvParamVODParam := live_v20230101.UpdateRecordPresetV2BodyRecordPresetConfigFlvParamVODParam{} //是否使用 VOD 存储,默认为 `false`,取值及含义如下所示。 // <li> `false`:不使用; </li> // <li> `true`:使用。 </li> var bodyRecordPresetConfigFlvParamVODParamEnable *bool var bodyRecordPresetConfigFlvParamVODParamEnableValue bool = true bodyRecordPresetConfigFlvParamVODParamEnable = &bodyRecordPresetConfigFlvParamVODParamEnableValue bodyRecordPresetConfigFlvParamVODParam.Enable = bodyRecordPresetConfigFlvParamVODParamEnable //视频点播(VOD)空间名称。可登录[视频点播控制台](https://console.volcengine.com/vod/)查询。 // note: // 如果使用 VOD 存储,即 `VODParam` 中 `Enable` 取值为 `true` 时,`VodNamespace` 为必填。 var bodyRecordPresetConfigFlvParamVODParamVodNamespace *string var bodyRecordPresetConfigFlvParamVODParamVodNamespaceValue string = "Snapshot" bodyRecordPresetConfigFlvParamVODParamVodNamespace = &bodyRecordPresetConfigFlvParamVODParamVodNamespaceValue bodyRecordPresetConfigFlvParamVODParam.VodNamespace = bodyRecordPresetConfigFlvParamVODParamVodNamespace //视频点播工作流模板 ID,对于存储在点播的录制文件,会使用该工作流模版对录制的视频进行处理,可登录[视频点播控制台](https://console.volcengine.com/vod/)获取工作流模板 ID,默认为空。 var bodyRecordPresetConfigFlvParamVODParamWorkflowID *string var bodyRecordPresetConfigFlvParamVODParamWorkflowIDValue string = "25524a2d*********891d7daf4b9" bodyRecordPresetConfigFlvParamVODParamWorkflowID = &bodyRecordPresetConfigFlvParamVODParamWorkflowIDValue bodyRecordPresetConfigFlvParamVODParam.WorkflowID = bodyRecordPresetConfigFlvParamVODParamWorkflowID //直播录制文件存储到点播时的视频分类 ID,您可以通过视频点播的 [ListVideoClassifications](https://www.volcengine.com/docs/4/101661) 接口查询视频分类 ID 等信息,默认为空。 var bodyRecordPresetConfigFlvParamVODParamClassificationID *int32 var bodyRecordPresetConfigFlvParamVODParamClassificationIDValue int32 = 1234 bodyRecordPresetConfigFlvParamVODParamClassificationID = &bodyRecordPresetConfigFlvParamVODParamClassificationIDValue bodyRecordPresetConfigFlvParamVODParam.ClassificationID = bodyRecordPresetConfigFlvParamVODParamClassificationID //直播录制文件存储到点播时的存储类型,存储类型介绍请参考[媒资存储管理](https://www.volcengine.com/docs/4/73629#媒资存储)。默认值为 `1`,支持的取值及含义如下所示。 // <li> `1`:标准存储; </li> // <li> `2`:归档存储。 </li> var bodyRecordPresetConfigFlvParamVODParamStorageClass *int32 var bodyRecordPresetConfigFlvParamVODParamStorageClassValue int32 = 1 bodyRecordPresetConfigFlvParamVODParamStorageClass = &bodyRecordPresetConfigFlvParamVODParamStorageClassValue bodyRecordPresetConfigFlvParamVODParam.StorageClass = bodyRecordPresetConfigFlvParamVODParamStorageClass //录制文件的存储规则,最大长度为 200 个字符,支持以 // `record/{PubDomain}/{App}/{Stream}/{StartTime}_{EndTime}` 样式设置存储规则,支持输入字母(A - Z、a - z)、数字(0 - 9)、短横线(-)、叹号(!)、下划线(_)、句点(.)、星号(*)及占位符。 // 存储规则设置注意事项如下。 // <li> 目录层级至少包含2级及以上,如 `live/{App}/{Stream}`。 </li> // <li> record 为自定义字段; </li> // <li> {PubDomain} 取值为当前配置的 `vhost` 值; </li> // <li> {App} 取值为当前配置的 `AppName` 值; </li> // <li> {Stream} 取值为当前配置的 `StreamName` 值; </li> // <li> {StartTime} 取值为录制的开始时间戳; </li> // <li> {EndTime} 取值为录制的结束时间戳。 </li> var bodyRecordPresetConfigFlvParamVODParamExactObject *string var bodyRecordPresetConfigFlvParamVODParamExactObjectValue string = "record/{PubDomain}/{App}/{Stream}/{StartTime}_{EndTime}" bodyRecordPresetConfigFlvParamVODParamExactObject = &bodyRecordPresetConfigFlvParamVODParamExactObjectValue bodyRecordPresetConfigFlvParamVODParam.ExactObject = bodyRecordPresetConfigFlvParamVODParamExactObject bodyRecordPresetConfigFlvParam.VODParam = &bodyRecordPresetConfigFlvParamVODParam //实时录制场景下,断流等待时长,单位为秒,默认值为 `180`,取值范围为 [0,3600]。如果实际断流时间小于断流等待时长,录制任务不会停止;如果实际断流时间大于断流等待时长,录制任务会停止,断流恢复后重新开始一个新的录制任务。 var bodyRecordPresetConfigFlvParamContinueDuration *int32 var bodyRecordPresetConfigFlvParamContinueDurationValue int32 = 180 bodyRecordPresetConfigFlvParamContinueDuration = &bodyRecordPresetConfigFlvParamContinueDurationValue bodyRecordPresetConfigFlvParam.ContinueDuration = bodyRecordPresetConfigFlvParamContinueDuration bodyRecordPresetConfig.FlvParam = &bodyRecordPresetConfigFlvParam //录制为 HLS 格式时的录制参数。 // note: // 您需至少配置一个录制格式,即 `FlvParam`、`HlsParam`、`Mp4Param` 至少开启一个。 bodyRecordPresetConfigHlsParam := live_v20230101.UpdateRecordPresetV2BodyRecordPresetConfigHlsParam{} //当前格式的录制是否开启,默认 `false`,取值及含义如下所示。 // <li> `false`:不开启; </li> // <li> `true`:开启。 </li> var bodyRecordPresetConfigHlsParamEnable *bool var bodyRecordPresetConfigHlsParamEnableValue bool = true bodyRecordPresetConfigHlsParamEnable = &bodyRecordPresetConfigHlsParamEnableValue bodyRecordPresetConfigHlsParam.Enable = bodyRecordPresetConfigHlsParamEnable //断流录制场景下,单文件录制时长,单位为秒,默认值为 `7200`,取值范围为 `-1` 和 [300,86400]。 // <li> 取值为 `-1` 时,表示不限制录制时长,录制结束后生成一个完整的录制文件。 </li> // <li> 取值为 [300,86400] 之间的值时,表示根据设置的录制文件时长分段生成录制文件,完成录制后一起上传。 </li> // note: // 断流录制场景仅在录制格式为 HLS 时生效,且断流录制和实时录制为二选一配置。 var bodyRecordPresetConfigHlsParamDuration *int32 var bodyRecordPresetConfigHlsParamDurationValue int32 = 7200 bodyRecordPresetConfigHlsParamDuration = &bodyRecordPresetConfigHlsParamDurationValue bodyRecordPresetConfigHlsParam.Duration = bodyRecordPresetConfigHlsParamDuration //实时录制场景下,单文件录制时长,单位为秒,默认值为 `1800`,取值范围为 [300,21600]。录制时间到达设置的单文件录制时长时,会立即生成录制文件实时上传存储。 var bodyRecordPresetConfigHlsParamRealtimeRecordDuration *int32 var bodyRecordPresetConfigHlsParamRealtimeRecordDurationValue int32 = 7200 bodyRecordPresetConfigHlsParamRealtimeRecordDuration = &bodyRecordPresetConfigHlsParamRealtimeRecordDurationValue bodyRecordPresetConfigHlsParam.RealtimeRecordDuration = bodyRecordPresetConfigHlsParamRealtimeRecordDuration //断流录制场景下,断流拼接时长,单位为秒,默认值为 `0`,支持的取值及含义如下所示。 // <li> `-1`:一直拼接,表示每次断流都不会影响录制任务,录制完成后生成一个完整的录制文件; </li> // <li> `0`:不拼接,表示每次断流结束录制任务生成一个录制文件,断流恢复重新开始一个新的录制任务; </li> // <li> 大于 0:拼接容错时间,表示如果断流时间小于拼接容错时间时,则录制任务不会停止,不会生成新的录制文件;如果断流时间大于拼接容错时间,则录制任务停止,断流恢复后重新开始一个新的录制任务。 </li> // note: // 断流录制场景仅在录制格式为 HLS 时生效,且断流录制和实时录制为二选一配置。 var bodyRecordPresetConfigHlsParamSplice *int32 var bodyRecordPresetConfigHlsParamSpliceValue int32 = 0 bodyRecordPresetConfigHlsParamSplice = &bodyRecordPresetConfigHlsParamSpliceValue bodyRecordPresetConfigHlsParam.Splice = bodyRecordPresetConfigHlsParamSplice //TOS 存储相关配置。 // note: // 录制文件只能选择一个位置进行存储,即 `TOSParam` 和 `VODParam` 配置且配置其中一个。 bodyRecordPresetConfigHlsParamTOSParam := live_v20230101.UpdateRecordPresetV2BodyRecordPresetConfigHlsParamTOSParam{} //是否使用 TOS 存储,默认为 `false`,取值及含义如下所示。 // <li> `false`:不使用; </li> // <li> `true`:使用。 </li> var bodyRecordPresetConfigHlsParamTOSParamEnable *bool var bodyRecordPresetConfigHlsParamTOSParamEnableValue bool = true bodyRecordPresetConfigHlsParamTOSParamEnable = &bodyRecordPresetConfigHlsParamTOSParamEnableValue bodyRecordPresetConfigHlsParamTOSParam.Enable = bodyRecordPresetConfigHlsParamTOSParamEnable //TOS 存储对应的 Bucket。例如,存储位置为 live-test-tos-example/live/liveapp 时,`Bucket` 取值为 `live-test-tos-example`。 // note: // 如果使用 TOS 存储,即 `TOSParam` 中 `Enable` 取值为 `true` 时,`Bucket` 为必填。 var bodyRecordPresetConfigHlsParamTOSParamBucket *string var bodyRecordPresetConfigHlsParamTOSParamBucketValue string = "live-test-tos-example" bodyRecordPresetConfigHlsParamTOSParamBucket = &bodyRecordPresetConfigHlsParamTOSParamBucketValue bodyRecordPresetConfigHlsParamTOSParam.Bucket = bodyRecordPresetConfigHlsParamTOSParamBucket //TOS 存储对应 Bucket 下的存储目录,默认为空。例如,存储位置为 live-test-tos-example/live/liveapp 时,`StorageDir` 取值为 `live/liveapp`。 var bodyRecordPresetConfigHlsParamTOSParamStorageDir *string var bodyRecordPresetConfigHlsParamTOSParamStorageDirValue string = "live/liveapp" bodyRecordPresetConfigHlsParamTOSParamStorageDir = &bodyRecordPresetConfigHlsParamTOSParamStorageDirValue bodyRecordPresetConfigHlsParamTOSParam.StorageDir = bodyRecordPresetConfigHlsParamTOSParamStorageDir //录制文件的存储规则,最大长度为 200 个字符,支持以 // `record/{PubDomain}/{App}/{Stream}/{StartTime}_{EndTime}` 样式设置存储规则,支持输入字母(A - Z、a - z)、数字(0 - 9)、短横线(-)、叹号(!)、下划线(_)、句点(.)、星号(*)及占位符。 // 存储规则设置注意事项如下。 // <li> 目录层级至少包含2级及以上,如 `live/{App}/{Stream}`。 </li> // <li> record 为自定义字段; </li> // <li> {PubDomain} 取值为当前配置的 `vhost` 值; </li> // <li> {App} 取值为当前配置的 `AppName` 值; </li> // <li> {Stream} 取值为当前配置的 `StreamName` 值; </li> // <li> {StartTime} 取值为录制的开始时间戳; </li> // <li> {EndTime} 取值为录制的结束时间戳。 </li> var bodyRecordPresetConfigHlsParamTOSParamExactObject *string var bodyRecordPresetConfigHlsParamTOSParamExactObjectValue string = "record/{PubDomain}/{App}/{Stream}/{StartTime}_{EndTime}" bodyRecordPresetConfigHlsParamTOSParamExactObject = &bodyRecordPresetConfigHlsParamTOSParamExactObjectValue bodyRecordPresetConfigHlsParamTOSParam.ExactObject = bodyRecordPresetConfigHlsParamTOSParamExactObject bodyRecordPresetConfigHlsParam.TOSParam = &bodyRecordPresetConfigHlsParamTOSParam //VOD 存储相关配置。 // note: // 录制文件只能选择一个位置进行存储,即 `TOSParam` 和 `VODParam` 配置且配置其中一个。 bodyRecordPresetConfigHlsParamVODParam := live_v20230101.UpdateRecordPresetV2BodyRecordPresetConfigHlsParamVODParam{} //是否使用 VOD 存储,默认为 `false`,取值及含义如下所示。 // <li> `false`:不使用; </li> // <li> `true`:使用。 </li> var bodyRecordPresetConfigHlsParamVODParamEnable *bool var bodyRecordPresetConfigHlsParamVODParamEnableValue bool = true bodyRecordPresetConfigHlsParamVODParamEnable = &bodyRecordPresetConfigHlsParamVODParamEnableValue bodyRecordPresetConfigHlsParamVODParam.Enable = bodyRecordPresetConfigHlsParamVODParamEnable //视频点播(VOD)空间名称。可登录[视频点播控制台](https://console.volcengine.com/vod/)查询。 // note: // 如果使用 VOD 存储,即 `VODParam` 中 `Enable` 取值为 `true` 时,`VodNamespace` 为必填。 var bodyRecordPresetConfigHlsParamVODParamVodNamespace *string var bodyRecordPresetConfigHlsParamVODParamVodNamespaceValue string = "Snapshot" bodyRecordPresetConfigHlsParamVODParamVodNamespace = &bodyRecordPresetConfigHlsParamVODParamVodNamespaceValue bodyRecordPresetConfigHlsParamVODParam.VodNamespace = bodyRecordPresetConfigHlsParamVODParamVodNamespace //视频点播工作流模板 ID,对于存储在点播的录制文件,会使用该工作流模版对录制的视频进行处理,可登录[视频点播控制台](https://console.volcengine.com/vod/)获取工作流模板 ID,默认为空。 var bodyRecordPresetConfigHlsParamVODParamWorkflowID *string var bodyRecordPresetConfigHlsParamVODParamWorkflowIDValue string = "25524a2d*********891d7daf4b9" bodyRecordPresetConfigHlsParamVODParamWorkflowID = &bodyRecordPresetConfigHlsParamVODParamWorkflowIDValue bodyRecordPresetConfigHlsParamVODParam.WorkflowID = bodyRecordPresetConfigHlsParamVODParamWorkflowID //直播录制文件存储到点播时的视频分类 ID,您可以通过视频点播的 [ListVideoClassifications](https://www.volcengine.com/docs/4/101661) 接口查询视频分类 ID 等信息,默认为空。 var bodyRecordPresetConfigHlsParamVODParamClassificationID *int32 var bodyRecordPresetConfigHlsParamVODParamClassificationIDValue int32 = 1234 bodyRecordPresetConfigHlsParamVODParamClassificationID = &bodyRecordPresetConfigHlsParamVODParamClassificationIDValue bodyRecordPresetConfigHlsParamVODParam.ClassificationID = bodyRecordPresetConfigHlsParamVODParamClassificationID //直播录制文件存储到点播时的存储类型,存储类型介绍请参考[媒资存储管理](https://www.volcengine.com/docs/4/73629#媒资存储)。默认值为 `1`,支持的取值及含义如下所示。 // <li> `1`:标准存储; </li> // <li> `2`:归档存储。 </li> var bodyRecordPresetConfigHlsParamVODParamStorageClass *int32 var bodyRecordPresetConfigHlsParamVODParamStorageClassValue int32 = 1 bodyRecordPresetConfigHlsParamVODParamStorageClass = &bodyRecordPresetConfigHlsParamVODParamStorageClassValue bodyRecordPresetConfigHlsParamVODParam.StorageClass = bodyRecordPresetConfigHlsParamVODParamStorageClass //录制文件的存储规则,最大长度为 200 个字符,支持以 // `record/{PubDomain}/{App}/{Stream}/{StartTime}_{EndTime}` 样式设置存储规则,支持输入字母(A - Z、a - z)、数字(0 - 9)、短横线(-)、叹号(!)、下划线(_)、句点(.)、星号(*)及占位符。 // 存储规则设置注意事项如下。 // <li> 目录层级至少包含2级及以上,如 `live/{App}/{Stream}`。 </li> // <li> record 为自定义字段; </li> // <li> {PubDomain} 取值为当前配置的 `vhost` 值; </li> // <li> {App} 取值为当前配置的 `AppName` 值; </li> // <li> {Stream} 取值为当前配置的 `StreamName` 值; </li> // <li> {StartTime} 取值为录制的开始时间戳; </li> // <li> {EndTime} 取值为录制的结束时间戳。 </li> var bodyRecordPresetConfigHlsParamVODParamExactObject *string var bodyRecordPresetConfigHlsParamVODParamExactObjectValue string = "record/{PubDomain}/{App}/{Stream}/{StartTime}_{EndTime}" bodyRecordPresetConfigHlsParamVODParamExactObject = &bodyRecordPresetConfigHlsParamVODParamExactObjectValue bodyRecordPresetConfigHlsParamVODParam.ExactObject = bodyRecordPresetConfigHlsParamVODParamExactObject bodyRecordPresetConfigHlsParam.VODParam = &bodyRecordPresetConfigHlsParamVODParam //实时录制场景下,断流等待时长,单位为秒,默认值为 `180`,取值范围为 [0,3600]。如果实际断流时间小于断流等待时长,录制任务不会停止;如果实际断流时间大于断流等待时长,录制任务会停止,断流恢复后重新开始一个新的录制任务。 var bodyRecordPresetConfigHlsParamContinueDuration *int32 var bodyRecordPresetConfigHlsParamContinueDurationValue int32 = 180 bodyRecordPresetConfigHlsParamContinueDuration = &bodyRecordPresetConfigHlsParamContinueDurationValue bodyRecordPresetConfigHlsParam.ContinueDuration = bodyRecordPresetConfigHlsParamContinueDuration bodyRecordPresetConfig.HlsParam = &bodyRecordPresetConfigHlsParam //录制为 MP4 格式时的录制参数。 // note: // 您需至少配置一个录制格式,即 `FlvParam`、`HlsParam`、`Mp4Param` 至少开启一个。 bodyRecordPresetConfigMp4Param := live_v20230101.UpdateRecordPresetV2BodyRecordPresetConfigMp4Param{} //当前格式的录制是否开启,默认 `false`,取值及含义如下所示。 // <li> `false`:不开启; </li> // <li> `true`:开启。 </li> var bodyRecordPresetConfigMp4ParamEnable *bool var bodyRecordPresetConfigMp4ParamEnableValue bool = true bodyRecordPresetConfigMp4ParamEnable = &bodyRecordPresetConfigMp4ParamEnableValue bodyRecordPresetConfigMp4Param.Enable = bodyRecordPresetConfigMp4ParamEnable //断流录制场景下,单文件录制时长,单位为秒,默认值为 `7200`,取值范围为 `-1` 和 [300,86400]。 // <li> 取值为 `-1` 时,表示不限制录制时长,录制结束后生成一个完整的录制文件。 </li> // <li> 取值为 [300,86400] 之间的值时,表示根据设置的录制文件时长分段生成录制文件,完成录制后一起上传。 </li> // note: // 断流录制场景仅在录制格式为 HLS 时生效,且断流录制和实时录制为二选一配置。 var bodyRecordPresetConfigMp4ParamDuration *int32 var bodyRecordPresetConfigMp4ParamDurationValue int32 = 7200 bodyRecordPresetConfigMp4ParamDuration = &bodyRecordPresetConfigMp4ParamDurationValue bodyRecordPresetConfigMp4Param.Duration = bodyRecordPresetConfigMp4ParamDuration //实时录制场景下,单文件录制时长,单位为秒,默认值为 `1800`,取值范围为 [300,21600]。录制时间到达设置的单文件录制时长时,会立即生成录制文件实时上传存储。 var bodyRecordPresetConfigMp4ParamRealtimeRecordDuration *int32 var bodyRecordPresetConfigMp4ParamRealtimeRecordDurationValue int32 = 7200 bodyRecordPresetConfigMp4ParamRealtimeRecordDuration = &bodyRecordPresetConfigMp4ParamRealtimeRecordDurationValue bodyRecordPresetConfigMp4Param.RealtimeRecordDuration = bodyRecordPresetConfigMp4ParamRealtimeRecordDuration //断流录制场景下,断流拼接时长,单位为秒,默认值为 `0`,支持的取值及含义如下所示。 // <li> `-1`:一直拼接,表示每次断流都不会影响录制任务,录制完成后生成一个完整的录制文件; </li> // <li> `0`:不拼接,表示每次断流结束录制任务生成一个录制文件,断流恢复重新开始一个新的录制任务; </li> // <li> 大于 0:拼接容错时间,表示如果断流时间小于拼接容错时间时,则录制任务不会停止,不会生成新的录制文件;如果断流时间大于拼接容错时间,则录制任务停止,断流恢复后重新开始一个新的录制任务。 </li> // note: // 断流录制场景仅在录制格式为 HLS 时生效,且断流录制和实时录制为二选一配置。 var bodyRecordPresetConfigMp4ParamSplice *int32 var bodyRecordPresetConfigMp4ParamSpliceValue int32 = 0 bodyRecordPresetConfigMp4ParamSplice = &bodyRecordPresetConfigMp4ParamSpliceValue bodyRecordPresetConfigMp4Param.Splice = bodyRecordPresetConfigMp4ParamSplice //TOS 存储相关配置。 // note: // 录制文件只能选择一个位置进行存储,即 `TOSParam` 和 `VODParam` 配置且配置其中一个。 bodyRecordPresetConfigMp4ParamTOSParam := live_v20230101.UpdateRecordPresetV2BodyRecordPresetConfigMp4ParamTOSParam{} //是否使用 TOS 存储,默认为 `false`,取值及含义如下所示。 // <li> `false`:不使用; </li> // <li> `true`:使用。 </li> var bodyRecordPresetConfigMp4ParamTOSParamEnable *bool var bodyRecordPresetConfigMp4ParamTOSParamEnableValue bool = true bodyRecordPresetConfigMp4ParamTOSParamEnable = &bodyRecordPresetConfigMp4ParamTOSParamEnableValue bodyRecordPresetConfigMp4ParamTOSParam.Enable = bodyRecordPresetConfigMp4ParamTOSParamEnable //TOS 存储对应的 Bucket。例如,存储位置为 live-test-tos-example/live/liveapp 时,`Bucket` 取值为 `live-test-tos-example`。 // note: // 如果使用 TOS 存储,即 `TOSParam` 中 `Enable` 取值为 `true` 时,`Bucket` 为必填。 var bodyRecordPresetConfigMp4ParamTOSParamBucket *string var bodyRecordPresetConfigMp4ParamTOSParamBucketValue string = "live-test-tos-example" bodyRecordPresetConfigMp4ParamTOSParamBucket = &bodyRecordPresetConfigMp4ParamTOSParamBucketValue bodyRecordPresetConfigMp4ParamTOSParam.Bucket = bodyRecordPresetConfigMp4ParamTOSParamBucket //TOS 存储对应 Bucket 下的存储目录,默认为空。例如,存储位置为 live-test-tos-example/live/liveapp 时,`StorageDir` 取值为 `live/liveapp`。 var bodyRecordPresetConfigMp4ParamTOSParamStorageDir *string var bodyRecordPresetConfigMp4ParamTOSParamStorageDirValue string = "live/liveapp" bodyRecordPresetConfigMp4ParamTOSParamStorageDir = &bodyRecordPresetConfigMp4ParamTOSParamStorageDirValue bodyRecordPresetConfigMp4ParamTOSParam.StorageDir = bodyRecordPresetConfigMp4ParamTOSParamStorageDir //录制文件的存储规则,最大长度为 200 个字符,支持以 // `record/{PubDomain}/{App}/{Stream}/{StartTime}_{EndTime}` 样式设置存储规则,支持输入字母(A - Z、a - z)、数字(0 - 9)、短横线(-)、叹号(!)、下划线(_)、句点(.)、星号(*)及占位符。 // 存储规则设置注意事项如下。 // <li> 目录层级至少包含2级及以上,如 `live/{App}/{Stream}`。 </li> // <li> record 为自定义字段; </li> // <li> {PubDomain} 取值为当前配置的 `vhost` 值; </li> // <li> {App} 取值为当前配置的 `AppName` 值; </li> // <li> {Stream} 取值为当前配置的 `StreamName` 值; </li> // <li> {StartTime} 取值为录制的开始时间戳; </li> // <li> {EndTime} 取值为录制的结束时间戳。 </li> var bodyRecordPresetConfigMp4ParamTOSParamExactObject *string var bodyRecordPresetConfigMp4ParamTOSParamExactObjectValue string = "record/{PubDomain}/{App}/{Stream}/{StartTime}_{EndTime}" bodyRecordPresetConfigMp4ParamTOSParamExactObject = &bodyRecordPresetConfigMp4ParamTOSParamExactObjectValue bodyRecordPresetConfigMp4ParamTOSParam.ExactObject = bodyRecordPresetConfigMp4ParamTOSParamExactObject bodyRecordPresetConfigMp4Param.TOSParam = &bodyRecordPresetConfigMp4ParamTOSParam //VOD 存储相关配置。 // note: // 录制文件只能选择一个位置进行存储,即 `TOSParam` 和 `VODParam` 配置且配置其中一个。 bodyRecordPresetConfigMp4ParamVODParam := live_v20230101.UpdateRecordPresetV2BodyRecordPresetConfigMp4ParamVODParam{} //是否使用 VOD 存储,默认为 `false`,取值及含义如下所示。 // <li> `false`:不使用; </li> // <li> `true`:使用。 </li> var bodyRecordPresetConfigMp4ParamVODParamEnable *bool var bodyRecordPresetConfigMp4ParamVODParamEnableValue bool = true bodyRecordPresetConfigMp4ParamVODParamEnable = &bodyRecordPresetConfigMp4ParamVODParamEnableValue bodyRecordPresetConfigMp4ParamVODParam.Enable = bodyRecordPresetConfigMp4ParamVODParamEnable //视频点播(VOD)空间名称。可登录[视频点播控制台](https://console.volcengine.com/vod/)查询。 // note: // 如果使用 VOD 存储,即 `VODParam` 中 `Enable` 取值为 `true` 时,`VodNamespace` 为必填。 var bodyRecordPresetConfigMp4ParamVODParamVodNamespace *string var bodyRecordPresetConfigMp4ParamVODParamVodNamespaceValue string = "Snapshot" bodyRecordPresetConfigMp4ParamVODParamVodNamespace = &bodyRecordPresetConfigMp4ParamVODParamVodNamespaceValue bodyRecordPresetConfigMp4ParamVODParam.VodNamespace = bodyRecordPresetConfigMp4ParamVODParamVodNamespace //视频点播工作流模板 ID,对于存储在点播的录制文件,会使用该工作流模版对录制的视频进行处理,可登录[视频点播控制台](https://console.volcengine.com/vod/)获取工作流模板 ID,默认为空。 var bodyRecordPresetConfigMp4ParamVODParamWorkflowID *string var bodyRecordPresetConfigMp4ParamVODParamWorkflowIDValue string = "25524a2d*********891d7daf4b9" bodyRecordPresetConfigMp4ParamVODParamWorkflowID = &bodyRecordPresetConfigMp4ParamVODParamWorkflowIDValue bodyRecordPresetConfigMp4ParamVODParam.WorkflowID = bodyRecordPresetConfigMp4ParamVODParamWorkflowID //直播录制文件存储到点播时的视频分类 ID,您可以通过视频点播的 [ListVideoClassifications](https://www.volcengine.com/docs/4/101661) 接口查询视频分类 ID 等信息,默认为空。 var bodyRecordPresetConfigMp4ParamVODParamClassificationID *int32 var bodyRecordPresetConfigMp4ParamVODParamClassificationIDValue int32 = 1234 bodyRecordPresetConfigMp4ParamVODParamClassificationID = &bodyRecordPresetConfigMp4ParamVODParamClassificationIDValue bodyRecordPresetConfigMp4ParamVODParam.ClassificationID = bodyRecordPresetConfigMp4ParamVODParamClassificationID //直播录制文件存储到点播时的存储类型,存储类型介绍请参考[媒资存储管理](https://www.volcengine.com/docs/4/73629#媒资存储)。默认值为 `1`,支持的取值及含义如下所示。 // <li> `1`:标准存储; </li> // <li> `2`:归档存储。 </li> var bodyRecordPresetConfigMp4ParamVODParamStorageClass *int32 var bodyRecordPresetConfigMp4ParamVODParamStorageClassValue int32 = 1 bodyRecordPresetConfigMp4ParamVODParamStorageClass = &bodyRecordPresetConfigMp4ParamVODParamStorageClassValue bodyRecordPresetConfigMp4ParamVODParam.StorageClass = bodyRecordPresetConfigMp4ParamVODParamStorageClass //录制文件的存储规则,最大长度为 200 个字符,支持以 // `record/{PubDomain}/{App}/{Stream}/{StartTime}_{EndTime}` 样式设置存储规则,支持输入字母(A - Z、a - z)、数字(0 - 9)、短横线(-)、叹号(!)、下划线(_)、句点(.)、星号(*)及占位符。 // 存储规则设置注意事项如下。 // <li> 目录层级至少包含2级及以上,如 `live/{App}/{Stream}`。 </li> // <li> record 为自定义字段; </li> // <li> {PubDomain} 取值为当前配置的 `vhost` 值; </li> // <li> {App} 取值为当前配置的 `AppName` 值; </li> // <li> {Stream} 取值为当前配置的 `StreamName` 值; </li> // <li> {StartTime} 取值为录制的开始时间戳; </li> // <li> {EndTime} 取值为录制的结束时间戳。 </li> var bodyRecordPresetConfigMp4ParamVODParamExactObject *string var bodyRecordPresetConfigMp4ParamVODParamExactObjectValue string = "record/{PubDomain}/{App}/{Stream}/{StartTime}_{EndTime}" bodyRecordPresetConfigMp4ParamVODParamExactObject = &bodyRecordPresetConfigMp4ParamVODParamExactObjectValue bodyRecordPresetConfigMp4ParamVODParam.ExactObject = bodyRecordPresetConfigMp4ParamVODParamExactObject bodyRecordPresetConfigMp4Param.VODParam = &bodyRecordPresetConfigMp4ParamVODParam //实时录制场景下,断流等待时长,单位为秒,默认值为 `180`,取值范围为 [0,3600]。如果实际断流时间小于断流等待时长,录制任务不会停止;如果实际断流时间大于断流等待时长,录制任务会停止,断流恢复后重新开始一个新的录制任务。 var bodyRecordPresetConfigMp4ParamContinueDuration *int32 var bodyRecordPresetConfigMp4ParamContinueDurationValue int32 = 180 bodyRecordPresetConfigMp4ParamContinueDuration = &bodyRecordPresetConfigMp4ParamContinueDurationValue bodyRecordPresetConfigMp4Param.ContinueDuration = bodyRecordPresetConfigMp4ParamContinueDuration bodyRecordPresetConfig.Mp4Param = &bodyRecordPresetConfigMp4Param body.RecordPresetConfig = &bodyRecordPresetConfig //流名称,取值与直播流地址的 `StreamName` 字段取值相应,用来指定待更新的录制配置,默认为空。您可以调用 [ListVhostRecordPresetV2](https://www.volcengine.com/docs/6469/1126858) 接口查看待更新录制配置的 `Stream` 取值。 var bodyStream *string var bodyStreamValue string = "example_stream" bodyStream = &bodyStreamValue body.Stream = bodyStream resp, err := service.UpdateRecordPresetV2(context.Background(), body) if err != nil { fmt.Printf("error %v", err) } else { fmt.Printf("success %+v", resp) } }
您可以调用 ListVhostRecordPresetV2 接口查询录制配置列表。详细的参数说明可参见 ListVhostRecordPresetV2 接口文档。
接口调用示例如下所示。
package main import ( "os" "context" "fmt" "github.com/volcengine/volc-sdk-golang/base" "github.com/volcengine/volc-sdk-golang/service/live/v20230101" ) func main () { // 强烈建议不要把 AccessKey ID 和 AccessKey Secret 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 AccessKey ID 和 AccessKey Secret,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 ACCESS_KEY_ID 和 ACCESS KEY_SECRET service := live_v20230101.NewInstance() service.SetCredential(base.Credentials{ AccessKeyID: os.Getenv("ACCESS_KEY_ID"), SecretAccessKey: os.Getenv("ACCESS_KEY_SECRET"), }) body := &live_v20230101.ListVhostRecordPresetV2Body{} //域名空间,即直播流地址的域名所属的域名空间。您可以调用 [ListDomainDetail](https://www.volcengine.com/docs/6469/1126815) 接口或在视频直播控制台的[域名管理](https://console-stable.volcanicengine.com/live/main/domain/list)页面,查看需要录制的直播流使用的域名所属的域名空间。 body.Vhost = "push.example.com" //直播录制的存储类型,默认值为 `tos`,支持的取值及含义如下所示。 // <li> `vod`:录制文件存在 VOD; </li> // <li> `tos`:录制文件存在 TOS。 </li> var bodyType *string var bodyTypeValue string = "tos" bodyType = &bodyTypeValue body.Type = bodyType resp, err := service.ListVhostRecordPresetV2(context.Background(), body) if err != nil { fmt.Printf("error %v", err) } else { fmt.Printf("success %+v", resp) } }
您可以调用 CreatePullRecordTask 接口创建直播录制任务。详细的参数说明可参见 CreatePullRecordTask 接口文档。
接口调用示例如下所示。
package main import ( "os" "context" "fmt" "github.com/volcengine/volc-sdk-golang/base" "github.com/volcengine/volc-sdk-golang/service/live/v20230101" ) func main () { // 强烈建议不要把 AccessKey ID 和 AccessKey Secret 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 AccessKey ID 和 AccessKey Secret,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 ACCESS_KEY_ID 和 ACCESS KEY_SECRET service := live_v20230101.NewInstance() service.SetCredential(base.Credentials{ AccessKeyID: os.Getenv("ACCESS_KEY_ID"), SecretAccessKey: os.Getenv("ACCESS_KEY_SECRET"), }) body := &live_v20230101.CreatePullRecordTaskBody{} //域名空间。您可以调用 [ListVhostRecordPresetV2](https://www.volcengine.com/docs/6469/1126858) 接口查看待使用的录制配置的 `Vhost` 取值。 var bodyVhost *string var bodyVhostValue string = "live.example.push.com" bodyVhost = &bodyVhostValue body.Vhost = bodyVhost //直播流使用的域名。您可以调用 [ListDomainDetail](https://www.volcengine.com/docs/6469/1126815) 接口或在视频直播控制台的[域名管理](https://console-stable.volcanicengine.com/live/main/domain/list)页面,查看直播流使用的域名。 body.Domain = "live.example.push.com" //应用名称,即直播流地址的 `AppName` 字段取值,支持由大小写字母(A - Z、a - z)、数字(0 - 9)、下划线(_)、短横线(-)和句点(.)组成,长度为 1 到 30 个字符。 body.App = "Live" //流名称,即直播流地址的 `StreamName` 字段取值,支持由大小写字母(A - Z、a - z)、数字(0 - 9)、字母、下划线(_)、短横线(-)和句点(.)组成,长度为 1 到 100 个字符。 body.Stream = "livestream001" //待录制直播流的拉流地址。 body.StreamURL = "http://live.example.pull.com/Live/livestream001.flv" //录制的开始时间,RFC3339 格式的时间戳,精度为秒。 var bodyStartTime *string var bodyStartTimeValue string = "2023-06-30T15:04:05+08:00" bodyStartTime = &bodyStartTimeValue body.StartTime = bodyStartTime //录制的结束时间,RFC3339 格式的时间戳,精度为秒。 var bodyEndTime *string var bodyEndTimeValue string = "2023-06-30T15:05:05+08:00" bodyEndTime = &bodyEndTimeValue body.EndTime = bodyEndTime resp, err := service.CreatePullRecordTask(context.Background(), body) if err != nil { fmt.Printf("error %v", err) } else { fmt.Printf("success %+v", resp) } }
您可以调用 StopPullRecordTask 接口停止直播录制任务。详细的参数说明可参见 StopPullRecordTask 接口文档。
接口调用示例如下所示。
package main import ( "os" "context" "fmt" "github.com/volcengine/volc-sdk-golang/base" "github.com/volcengine/volc-sdk-golang/service/live/v20230101" ) func main () { // 强烈建议不要把 AccessKey ID 和 AccessKey Secret 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 AccessKey ID 和 AccessKey Secret,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 ACCESS_KEY_ID 和 ACCESS KEY_SECRET service := live_v20230101.NewInstance() service.SetCredential(base.Credentials{ AccessKeyID: os.Getenv("ACCESS_KEY_ID"), SecretAccessKey: os.Getenv("ACCESS_KEY_SECRET"), }) body := &live_v20230101.StopPullRecordTaskBody{} //任务 ID,录制任务的唯一标识。您可以调用 [ListPullRecordTask](https://www.volcengine.com/docs/6469/1111480) 接口查看直播录制任务的任务 ID。 body.TaskID = "f831f3b0********1aa4dcf7621" resp, err := service.StopPullRecordTask(context.Background(), body) if err != nil { fmt.Printf("error %v", err) } else { fmt.Printf("success %+v", resp) } }
您可以调用 ListPullRecordTask 接口查询直播录制任务。详细的参数说明可参见 ListPullRecordTask 接口文档。
接口调用示例如下所示。
package main import ( "os" "context" "fmt" "github.com/volcengine/volc-sdk-golang/base" "github.com/volcengine/volc-sdk-golang/service/live/v20230101" ) func main () { // 强烈建议不要把 AccessKey ID 和 AccessKey Secret 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 AccessKey ID 和 AccessKey Secret,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 ACCESS_KEY_ID 和 ACCESS KEY_SECRET service := live_v20230101.NewInstance() service.SetCredential(base.Credentials{ AccessKeyID: os.Getenv("ACCESS_KEY_ID"), SecretAccessKey: os.Getenv("ACCESS_KEY_SECRET"), }) body := &live_v20230101.ListPullRecordTaskBody{} //查询数据的页码,默认为 `1`,表示查询第一页的数据,取值范围为正整数。 body.PageNum = 1 //每页显示的数据条数,默认为 `20`,最大值为 500。 body.PageSize = 5 resp, err := service.ListPullRecordTask(context.Background(), body) if err != nil { fmt.Printf("error %v", err) } else { fmt.Printf("success %+v", resp) } }
您可以调用 DescribeRecordTaskFileHistory 接口查询录制历史详情。详细的参数说明可参见 DescribeRecordTaskFileHistory 接口文档。
接口调用示例如下所示。
package main import ( "os" "context" "fmt" "github.com/volcengine/volc-sdk-golang/base" "github.com/volcengine/volc-sdk-golang/service/live/v20230101" ) func main () { // 强烈建议不要把 AccessKey ID 和 AccessKey Secret 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 AccessKey ID 和 AccessKey Secret,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 ACCESS_KEY_ID 和 ACCESS KEY_SECRET service := live_v20230101.NewInstance() service.SetCredential(base.Credentials{ AccessKeyID: os.Getenv("ACCESS_KEY_ID"), SecretAccessKey: os.Getenv("ACCESS_KEY_SECRET"), }) body := &live_v20230101.DescribeRecordTaskFileHistoryBody{} //域名空间,即直播流地址的域名所属的域名空间,默认为空表示查询所有录制历史。您可以调用 [`ListDomainDetail`](https://www.volcengine.com/docs/6469/1126815) 接口或在视频直播控制台的[域名管理](https://console-stable.volcanicengine.com/live/main/domain/list)页面,查看直播流使用的域名所属的域名空间。 var bodyVhost *string var bodyVhostValue string = "push.example.com" bodyVhost = &bodyVhostValue body.Vhost = bodyVhost //应用名称,取值与直播流地址的 AppName 字段取值相同,默认为空表示查询 vhost 下的所有录制历史。支持由大小写字母(A - Z、a - z)、下划线(_)、短横线(-)和句点(.)组成,长度为 1 到 30 个字符。 var bodyApp *string var bodyAppValue string = "live" bodyApp = &bodyAppValue body.App = bodyApp //流名称,取值与直播流地址的 StreamName 字段取值相同,默认为空表示查询 App 下的所有录制历史。支持由大小写字母(A - Z、a - z)、下划线(_)、短横线(-)和句点(.)组成,长度为 1 到 100 个字符。 // note: // 如果指定 `Stream`,必须同时指定 `App` 的值。 var bodyStream *string var bodyStreamValue string = "stream-123" bodyStream = &bodyStreamValue body.Stream = bodyStream //开始录制时间,RFC3339 格式的时间字符串,精度为秒。当您查询指定录制任务详情时,DateFrom 应设置为开始时间之前的任意时间。 body.DateFrom = "2023-11-01T00:00:00+08:00" //结束录制时间,结束时间需晚于 `DateFrom`,且与 `DateFrom` 间隔不超过 7天,RFC3339 格式的时间字符串,精度为秒。 body.DateTo = "2023-11-07T23:59:59+08:00" //查询数据的页码,默认为 1,表示查询第一页的数据,取值范围为正整数。 body.PageNum = 1 //每页显示的数据条数,取值范围为正整数。 body.PageSize = 30 //录制文件保存位置,支持的取值及含义如下所示。 // <li> `tos`:存储到 TOS(默认值); </li> // <li> `vod`:存储到 VOD。 </li> var bodyType *string var bodyTypeValue string = "tos" bodyType = &bodyTypeValue body.Type = bodyType resp, err := service.DescribeRecordTaskFileHistory(context.Background(), body) if err != nil { fmt.Printf("error %v", err) } else { fmt.Printf("success %+v", resp) } }
您可以调用 GetPullRecordTask 接口查询单个直播录制任务。详细的参数说明可参见 GetPullRecordTask 接口文档。
接口调用示例如下所示。
package main import ( "os" "context" "fmt" "github.com/volcengine/volc-sdk-golang/base" "github.com/volcengine/volc-sdk-golang/service/live/v20230101" ) func main () { // 强烈建议不要把 AccessKey ID 和 AccessKey Secret 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 AccessKey ID 和 AccessKey Secret,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 ACCESS_KEY_ID 和 ACCESS KEY_SECRET service := live_v20230101.NewInstance() service.SetCredential(base.Credentials{ AccessKeyID: os.Getenv("ACCESS_KEY_ID"), SecretAccessKey: os.Getenv("ACCESS_KEY_SECRET"), }) body := &live_v20230101.GetPullRecordTaskBody{} //任务 ID,录制任务的唯一标识。您可以调用 [ListPullRecordTask](https://www.volcengine.com/docs/6469/1111480) 获取任务 ID。 body.TaskID = "5b903f78c7f5ae*******01f6fe2eea" resp, err := service.GetPullRecordTask(context.Background(), body) if err != nil { fmt.Printf("error %v", err) } else { fmt.Printf("success %+v", resp) } }
您可以调用 CreateLiveStreamRecordIndexFiles 接口创建录制索引文件。详细的参数说明可参见 CreateLiveStreamRecordIndexFiles 接口文档。
接口调用示例如下所示。
package main import ( "os" "context" "fmt" "github.com/volcengine/volc-sdk-golang/base" "github.com/volcengine/volc-sdk-golang/service/live/v20230101" ) func main () { // 强烈建议不要把 AccessKey ID 和 AccessKey Secret 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 AccessKey ID 和 AccessKey Secret,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 ACCESS_KEY_ID 和 ACCESS KEY_SECRET service := live_v20230101.NewInstance() service.SetCredential(base.Credentials{ AccessKeyID: os.Getenv("ACCESS_KEY_ID"), SecretAccessKey: os.Getenv("ACCESS_KEY_SECRET"), }) body := &live_v20230101.CreateLiveStreamRecordIndexFilesBody{} //直播流使用的域名。您可以调用 [ListDomainDetail](https://www.volcengine.com/docs/6469/1126815) 接口或在视频直播控制台的[域名管理](https://console-stable.volcanicengine.com/live/main/domain/list)页面,查看直播流使用的域名。 body.Domain = "live.example.push.com" //应用名称,取值与直播流地址中 AppName 字段取值相同。支持由大小写字母(A - Z、a - z)、下划线(_)、短横线(-)和句点(.)组成,长度为 1 到 30 个字符。 body.App = "Live" //流名称,取值与直播流地址中 StreamName 字段取值相同。支持由大小写字母(A - Z、a - z)、下划线(_)、短横线(-)和句点(.)组成,长度为 1 到 100 个字符。 body.Stream = "livestream001" //录制索引文件的开始时间,RFC3339 格式的时间戳,精度为秒。 body.StartTime = "2023-06-30T15:04:05+08:00" //录制索引文件的结束时间,RFC3339 格式的时间戳,精度为秒。 body.EndTime = "2023-06-30T15:04:05+08:00" //将录制文件存储到 TOS 时的 Bucket,默认为空,表示与对应录制配置中的 TOS 存储配置一致。 var bodyOutputBucket *string var bodyOutputBucketValue string = "testBucket" bodyOutputBucket = &bodyOutputBucketValue body.OutputBucket = bodyOutputBucket //将录制文件存储到 TOS 时的存储规则,最大长度为 200 个字符,支持以 `record/{PubDomain}/{App}/{Stream}/{StartTime}_{EndTime}` 样式设置存储规则,支持输入字母(A - Z、a - z)、数字(0 - 9)、短横线(-)、叹号(!)、下划线(_)、句点(.)、星号(*)及占位符。默认为空,表示与对应录制配置中的存储规则配置一致。 // 存储规则设置注意事项如下。 // <li> 目录层级至少包含2级及以上,如 `live/{App}/{Stream}`。 </li> // <li> record 为自定义字段; </li> // <li> {PubDomain} 取值为当前配置的 `vhost` 值; </li> // <li> {App} 取值为当前配置的 `AppName` 值; </li> // <li> {Stream} 取值为当前配置的 `StreamName` 值; </li> // <li> {StartTime} 取值为录制的开始时间戳; </li> // <li> {EndTime} 取值为录制的结束时间戳。 </li> var bodyOutputObject *string var bodyOutputObjectValue string = "record/{PubDomain}/{App}/{Stream}/{StartTime}_{EndTime}" bodyOutputObject = &bodyOutputObjectValue body.OutputObject = bodyOutputObject //是否开启获取录制视频宽高数据的功能,开启后会获取视频宽和高信息,支持的取值及含义如下所示,默认不传时表示开启。 // <li> `true`:开启; </li> // <li> `false`:禁用。 </li> var bodyNeedFFProbe *bool var bodyNeedFFProbeValue bool = true bodyNeedFFProbe = &bodyNeedFFProbeValue body.NeedFFProbe = bodyNeedFFProbe //将录制文件存储到点播时,是否开启索引文件与 TS 文件分离,默认禁用。 // <li> `true`:启用,删除索引文件时不会删除关联的 TS 文件; </li> // <li> `false`:禁用,删除索引文件时会删除关联的 TS 文件。 </li> var bodySeparatedTS *bool var bodySeparatedTSValue bool = true bodySeparatedTS = &bodySeparatedTSValue body.SeparatedTS = bodySeparatedTS //将录制文件存储到点播时,如需进行视频处理,可选择已定义的视频处理工作流模板,获取方法请参见[工作流模板](https://www.volcengine.com/docs/4/65675),默认为空。 var bodyWorkflowID *string var bodyWorkflowIDValue string = "25524a2d*********891d7daf4b9" bodyWorkflowID = &bodyWorkflowIDValue body.WorkflowID = bodyWorkflowID //指定访问录制文件的地址中的网络协议,取值及含义如下所示。 // <li> `http`:超文本传输协议(默认值); </li> // <li> `https`:安全的超文本传输协议。 </li> var bodyTSScheme *string var bodyTSSchemeValue string = "http" bodyTSScheme = &bodyTSSchemeValue body.TSScheme = bodyTSScheme resp, err := service.CreateLiveStreamRecordIndexFiles(context.Background(), body) if err != nil { fmt.Printf("error %v", err) } else { fmt.Printf("success %+v", resp) } }