You need to enable JavaScript to run this app.
导航

录制配置

最近更新时间2024.04.15 11:36:59

首次发布时间2023.12.28 21:21:51

阅读本文,您可以获取 Java SDK 录制配置的接口调用示例,实现快速开发。

说明

本文的调用示例包含接口的全部参数。由于参数间可能存在互斥关系,在调用时,请您参考注释,进行调整。

调用说明

  • 本文提供的接口调用示例均通过 AK 和 SK 初始化实例。
  • 接口的参数说明和错误码等信息可通过接口文档或打开 API Explorer文档说明页签查看。

前提条件

调用接口前,请先完成 Java SDK 的安装及初始化操作

调用示例

本节为您介绍录制配置相关接口的功能和调用示例。

添加录制配置

您可以调用 CreateRecordPresetV2 接口添加录制配置。详细的参数说明可参见 CreateRecordPresetV2 接口文档。

接口调用示例如下所示。

package com.volcengine.live.demo;
import com.volcengine.model.live.v20230101.CreateRecordPresetV2Body; 
import com.volcengine.model.live.v20230101.CreateRecordPresetV2BodyRecordPresetConfig; 
import com.volcengine.model.live.v20230101.CreateRecordPresetV2BodyRecordPresetConfigFlvParam; 
import com.volcengine.model.live.v20230101.CreateRecordPresetV2BodyRecordPresetConfigFlvParamTOSParam; 
import com.volcengine.model.live.v20230101.CreateRecordPresetV2BodyRecordPresetConfigFlvParamVODParam; 
import com.volcengine.model.live.v20230101.CreateRecordPresetV2BodyRecordPresetConfigHlsParam; 
import com.volcengine.model.live.v20230101.CreateRecordPresetV2BodyRecordPresetConfigHlsParamTOSParam; 
import com.volcengine.model.live.v20230101.CreateRecordPresetV2BodyRecordPresetConfigHlsParamVODParam; 
import com.volcengine.model.live.v20230101.CreateRecordPresetV2BodyRecordPresetConfigMp4Param; 
import com.volcengine.model.live.v20230101.CreateRecordPresetV2BodyRecordPresetConfigMp4ParamTOSParam; 
import com.volcengine.model.live.v20230101.CreateRecordPresetV2BodyRecordPresetConfigMp4ParamVODParam;
import com.volcengine.model.live.v20230101.CreateRecordPresetV2Res;
import com.volcengine.service.live.v20230101.LiveService;
import java.util.ArrayList; 
import java.util.List; 

public class CreateRecordPresetV2Demo  {
  public static void main(String[] args) {
    // 强烈建议不要把 AccessKey ID 和 AccessKey Secret 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。
    // 本示例通过从环境变量中读取 AccessKey ID 和 AccessKey Secret,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 ACCESS_KEY_ID 和 ACCESS KEY_SECRET
    LiveService service = LiveService.getInstance();

    service.setAccessKey(System.getenv("ACCESS_KEY_ID"));

    service.setSecretKey(System.getenv("ACCESS_KEY_SECRET"));

    CreateRecordPresetV2Body body = new CreateRecordPresetV2Body();
     
    // 域名空间,即直播流地址的域名所属的域名空间。您可以调用 [ListDomainDetail](https//www.volcengine.com/docs/6469/1126815) 接口或在视频直播控制台的[域名管理](https//console-stable.volcanicengine.com/live/main/domain/list)页面,查看需要录制的直播流使用的域名所属的域名空间。
    body.setVhost("push.example.com");
    
    // 应用名称,取值与直播流地址的 `AppName` 字段取值相同,支持填写星号(*)或由 1 到 30 位数字(0 - 9)、大写小字母(A - Z、a - z)、下划线(_)、短横线(-)和句点(.)组成,默认为空。
    // note:
    // <li> `App` 取值为空时,`Stream` 取值也需为空,表示录制配置为 Vhost 级别的全局配置。 </li>
    // <li> `App` 取值不为空时,`Stream` 取值含义请参见 Stream 参数说明。 </li>
    body.setApp("live");
    
    // 流名称,取值与直播流地址的 StreamName 字段取值相同,支持填写星号(*)或由 1 到 100 位数字(0 - 9)、字母、下划线(_)、短横线(-)和句点(.)组成。
    // note:
    // <li> `App` 取值不为空、`Stream` 取值为空时,表示录制配置为 Vhost + App 级别的配置。 </li>
    // <li> `App` 取值不为空、`Stream` 取值不为空时,表示录制为 Vhost + App + Stream 的配置。 </li>
    body.setStream("stream001");
    
    // 直播流录制配置的详细配置。
    CreateRecordPresetV2BodyRecordPresetConfig CreateRecordPresetV2BodyRecordPresetConfig = new CreateRecordPresetV2BodyRecordPresetConfig();  

    
    // 是否录制转码流,默认值为 `0`,支持的取值及含义如下所示。
    // <li> `0`:不录制; </li>
    // <li> `1`:录制全部转码流; </li>
    // <li> `2`:录制指定转码流,即通过转码后缀列表 `TranscodeSuffixList` 匹配转码流进行录制,如果转码流后缀列表为空仍表示录制全部转码流。 </li>
    // note:
    // 转码流和源流需至少选一个进行录制,即是否录制转码流(`TranscodeRecord`)和是否录制源流(`OriginRecord`)的取值至少一个不为 0。
    CreateRecordPresetV2BodyRecordPresetConfig.setTranscodeRecord(1);
    
    // 转码流后缀列表,转码流录制配置为根据转码流列表匹配(`TranscodeRecord` 取值为 `2`)时生效,`TranscodeSuffixList` 默认配置为空,效果等同于录制全部转码流。
    List<String> CreateRecordPresetV2BodyRecordPresetConfigTranscodeSuffixList = new ArrayList<>(); 

    CreateRecordPresetV2BodyRecordPresetConfigTranscodeSuffixList.add("_hd");
    CreateRecordPresetV2BodyRecordPresetConfigTranscodeSuffixList.add("_bd");
    
    CreateRecordPresetV2BodyRecordPresetConfig.setTranscodeSuffixList(CreateRecordPresetV2BodyRecordPresetConfigTranscodeSuffixList); 
    
    // 是否源流录制,默认值为 `0`,支持的取值及含义如下所示。
    // <li> `0`:不录制; </li>
    // <li> `1`:录制。 </li>
    // note:
    // 转码流和源流需至少选一个进行录制,即是否录制转码流(`TranscodeRecord`)和是否录制源流(`OriginRecord`)的取值至少一个不为 0。
    CreateRecordPresetV2BodyRecordPresetConfig.setOriginRecord(0);
    
    // 录制为 HLS 格式时,单个 TS 切片时长,单位为秒,默认值为 `10`,取值范围为 [5,30]。
    CreateRecordPresetV2BodyRecordPresetConfig.setSliceDuration(5);
    
    // 录制为 FLV 格式时的录制参数。
    // note:
    // 您需至少配置一种录制格式,即 `FlvParam`、`HlsParam`、`Mp4Param` 至少开启一个。
    CreateRecordPresetV2BodyRecordPresetConfigFlvParam CreateRecordPresetV2BodyRecordPresetConfigFlvParam = new CreateRecordPresetV2BodyRecordPresetConfigFlvParam();  

    
    // 当前格式的录制是否开启,默认值为 `false`,支持的取值及含义如下所示。
    // <li> `false`:不开启; </li>
    // <li> `true`:开启。 </li>
    CreateRecordPresetV2BodyRecordPresetConfigFlvParam.setEnable(true);
    
    // 断流录制场景下,单文件录制时长,单位为秒,默认值为 `7200`,取值范围为 `-1` 和 [300,86400]。
    // <li> 取值为 `-1` 时,表示不限制录制时长,录制结束后生成一个完整的录制文件。 </li>
    // <li> 取值为 [300,86400] 之间的值时,表示根据设置的录制文件时分段长生成录制文件,完成录制后一起上传。 </li>
    // note:
    // 断流录制场景仅在录制格式为 HLS 时生效,且断流录制和实时录制为二选一配置。
    CreateRecordPresetV2BodyRecordPresetConfigFlvParam.setDuration(7200);
    
    // 实时录制场景下,断流等待时长,单位为秒,默认值为 `180`,取值范围为 [0,3600]。如果实际断流时间小于断流等待时长,录制任务不会停止;如果实际断流时间大于断流等待时长,录制任务会停止,断流恢复后重新开始一个新的录制任务。
    CreateRecordPresetV2BodyRecordPresetConfigFlvParam.setContinueDuration(180);
    
    // 实时录制场景下,单文件录制时长,单位为秒,默认值为 `1800`,取值范围为 [300,21600]。录制时间到达设置的单文件录制时长时,会立即生成录制文件实时上传存储。
    CreateRecordPresetV2BodyRecordPresetConfigFlvParam.setRealtimeRecordDuration(300);
    
    // 断流录制场景下,断流拼接时长,单位为秒,默认值为 `0`,支持的取值及含义如下所示。
    // <li> `-1`:一直拼接,表示每次断流都不会影响录制任务,录制完成后生成一个完整的录制文件; </li>
    // <li> `0`:不拼接,表示每次断流结束录制任务生成一个录制文件,断流恢复重新开始一个新的录制任务; </li>
    // <li> 大于 0:拼接容错时间,表示如果断流时间小于拼接容错时间时,则录制任务不会停止,不会生成新的录制文件;如果断流时间大于拼接容错时间,则录制任务停止,断流恢复后重新开始一个新的录制任务。 </li>
    // note:
    // 断流录制场景仅在录制格式为 HLS 时生效,且断流录制和实时录制为二选一配置。
    CreateRecordPresetV2BodyRecordPresetConfigFlvParam.setSplice(0);
    
    // TOS 存储相关配置。
    // note:
    // 录制文件只能选择一个位置进行存储,即 `TOSParam` 和 `VODParam` 配置且配置其中一个。
    CreateRecordPresetV2BodyRecordPresetConfigFlvParamTOSParam CreateRecordPresetV2BodyRecordPresetConfigFlvParamTOSParam = new CreateRecordPresetV2BodyRecordPresetConfigFlvParamTOSParam();  

    
    // 是否使用 TOS 存储,默认为 `false`,取值及含义如下所示。
    // <li> `false`:不使用; </li>
    // <li> `true`:使用。 </li>
    CreateRecordPresetV2BodyRecordPresetConfigFlvParamTOSParam.setEnable(true);
    
    // TOS 存储对应的 Bucket。例如,存储位置为 live-test-tos-example/live/liveapp 时,`Bucket` 取值为 `live-test-tos-example`。
    // note:
    // 如果使用 TOS 存储,即 `TOSParam` 中 `Enable` 取值为 `true` 时,`Bucket` 为必填。
    CreateRecordPresetV2BodyRecordPresetConfigFlvParamTOSParam.setBucket("live-test-tos-example");
    
    // TOS 存储对应 Bucket 下的存储目录,默认为空。例如,存储位置为 live-test-tos-example/live/liveapp 时,`StorageDir` 取值为 `live/liveapp`。
    CreateRecordPresetV2BodyRecordPresetConfigFlvParamTOSParam.setStorageDir("live/liveapp");
    
    // 录制文件的存储规则,最大长度为 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>
    CreateRecordPresetV2BodyRecordPresetConfigFlvParamTOSParam.setExactObject("record/{PubDomain}/{App}/{Stream}/{StartTime}_{EndTime}");
     
    CreateRecordPresetV2BodyRecordPresetConfigFlvParam.setTOSParam(CreateRecordPresetV2BodyRecordPresetConfigFlvParamTOSParam); 
        
    
    // VOD 存储相关配置。
    // note:
    // 录制文件只能选择一个位置进行存储,即 `TOSParam` 和 `VODParam` 配置且配置其中一个。
    CreateRecordPresetV2BodyRecordPresetConfigFlvParamVODParam CreateRecordPresetV2BodyRecordPresetConfigFlvParamVODParam = new CreateRecordPresetV2BodyRecordPresetConfigFlvParamVODParam();  

    
    // 是否使用 VOD 存储,默认为 `false`,支持的取值及含义如下所示。
    // <li> `false`:不使用; </li>
    // <li> `true`:使用。 </li>
    CreateRecordPresetV2BodyRecordPresetConfigFlvParamVODParam.setEnable(true);
    
    // 视频点播(VOD)空间名称。可登录[视频点播控制台](https//console.volcengine.com/vod/)查询。
    // note:
    // 如果使用 VOD 存储,即 `VODParam` 中 `Enable` 取值为 `true` 时,`VodNamespace` 为必填。
    CreateRecordPresetV2BodyRecordPresetConfigFlvParamVODParam.setVodNamespace("Snapshot");
    
    // 视频点播工作流模板 ID,对于存储在点播的录制文件,会使用该工作流模版对录制的视频进行处理,可登录[视频点播控制台](https//console.volcengine.com/vod/)获取工作流模板 ID,默认为空。
    CreateRecordPresetV2BodyRecordPresetConfigFlvParamVODParam.setWorkflowID("25524a2d*********891d7daf4b9");
    
    // 直播录制文件存储到点播时的视频分类 ID,您可以通过视频点播的 [ListVideoClassifications](https//www.volcengine.com/docs/4/101661) 接口查询视频分类 ID 等信息,默认为空。
    CreateRecordPresetV2BodyRecordPresetConfigFlvParamVODParam.setClassificationID(1234);
    
    // 直播录制文件存储到点播时的存储类型,存储类型介绍请参考[媒资存储管理](https//www.volcengine.com/docs/4/73629#媒资存储)。默认值为 `1`,支持的取值及含义如下所示。
    // <li> `1`:标准存储; </li>
    // <li> `2`:归档存储。 </li>
    CreateRecordPresetV2BodyRecordPresetConfigFlvParamVODParam.setStorageClass(1);
    
    // 录制文件的存储规则,最大长度为 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>
    CreateRecordPresetV2BodyRecordPresetConfigFlvParamVODParam.setExactObject("record/{PubDomain}/{App}/{Stream}/{StartTime}_{EndTime}");
     
    CreateRecordPresetV2BodyRecordPresetConfigFlvParam.setVODParam(CreateRecordPresetV2BodyRecordPresetConfigFlvParamVODParam); 
        
     
    CreateRecordPresetV2BodyRecordPresetConfig.setFlvParam(CreateRecordPresetV2BodyRecordPresetConfigFlvParam); 
        
    
    // 录制为 HLS 合适时的录制参数。
    // note:
    // 您需至少配置一种录制格式,即 `FlvParam`、`HlsParam`、`Mp4Param` 至少开启一个。
    CreateRecordPresetV2BodyRecordPresetConfigHlsParam CreateRecordPresetV2BodyRecordPresetConfigHlsParam = new CreateRecordPresetV2BodyRecordPresetConfigHlsParam();  

    
    // 当前格式的录制是否开启,默认值为 `false`,支持的取值及含义如下所示。
    // <li> `false`:不开启; </li>
    // <li> `true`:开启。 </li>
    CreateRecordPresetV2BodyRecordPresetConfigHlsParam.setEnable(true);
    
    // 断流录制场景下,单文件录制时长,单位为秒,默认值为 `7200`,取值范围为 `-1` 和 [300,86400]。
    // <li> 取值为 `-1` 时,表示不限制录制时长,录制结束后生成一个完整的录制文件。 </li>
    // <li> 取值为 [300,86400] 之间的值时,表示根据设置的录制文件时分段长生成录制文件,完成录制后一起上传。 </li>
    // note:
    // 断流录制场景仅在录制格式为 HLS 时生效,且断流录制和实时录制为二选一配置。
    CreateRecordPresetV2BodyRecordPresetConfigHlsParam.setDuration(7200);
    
    // 实时录制场景下,断流等待时长,单位为秒,默认值为 `180`,取值范围为 [0,3600]。如果实际断流时间小于断流等待时长,录制任务不会停止;如果实际断流时间大于断流等待时长,录制任务会停止,断流恢复后重新开始一个新的录制任务。
    CreateRecordPresetV2BodyRecordPresetConfigHlsParam.setContinueDuration(180);
    
    // 实时录制场景下,单文件录制时长,单位为秒,默认值为 `1800`,取值范围为 [300,21600]。录制时间到达设置的单文件录制时长时,会立即生成录制文件实时上传存储。
    CreateRecordPresetV2BodyRecordPresetConfigHlsParam.setRealtimeRecordDuration(300);
    
    // 断流录制场景下,断流拼接时长,单位为秒,默认值为 `0`,支持的取值及含义如下所示。
    // <li> `-1`:一直拼接,表示每次断流都不会影响录制任务,录制完成后生成一个完整的录制文件; </li>
    // <li> `0`:不拼接,表示每次断流结束录制任务生成一个录制文件,断流恢复重新开始一个新的录制任务; </li>
    // <li> 大于 0:拼接容错时间,表示如果断流时间小于拼接容错时间时,则录制任务不会停止,不会生成新的录制文件;如果断流时间大于拼接容错时间,则录制任务停止,断流恢复后重新开始一个新的录制任务。 </li>
    // note:
    // 断流录制场景仅在录制格式为 HLS 时生效,且断流录制和实时录制为二选一配置。
    CreateRecordPresetV2BodyRecordPresetConfigHlsParam.setSplice(0);
    
    // TOS 存储相关配置。
    // note:
    // 录制文件只能选择一个位置进行存储,即 `TOSParam` 和 `VODParam` 配置且配置其中一个。
    CreateRecordPresetV2BodyRecordPresetConfigHlsParamTOSParam CreateRecordPresetV2BodyRecordPresetConfigHlsParamTOSParam = new CreateRecordPresetV2BodyRecordPresetConfigHlsParamTOSParam();  

    
    // 是否使用 TOS 存储,默认为 `false`,取值及含义如下所示。
    // <li> `false`:不使用; </li>
    // <li> `true`:使用。 </li>
    CreateRecordPresetV2BodyRecordPresetConfigHlsParamTOSParam.setEnable(true);
    
    // TOS 存储对应的 Bucket。例如,存储位置为 live-test-tos-example/live/liveapp 时,`Bucket` 取值为 `live-test-tos-example`。
    // note:
    // 如果使用 TOS 存储,即 `TOSParam` 中 `Enable` 取值为 `true` 时,`Bucket` 为必填。
    CreateRecordPresetV2BodyRecordPresetConfigHlsParamTOSParam.setBucket("live-test-tos-example");
    
    // TOS 存储对应 Bucket 下的存储目录,默认为空。例如,存储位置为 live-test-tos-example/live/liveapp 时,`StorageDir` 取值为 `live/liveapp`。
    CreateRecordPresetV2BodyRecordPresetConfigHlsParamTOSParam.setStorageDir("live/liveapp");
    
    // 录制文件的存储规则,最大长度为 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>
    CreateRecordPresetV2BodyRecordPresetConfigHlsParamTOSParam.setExactObject("record/{PubDomain}/{App}/{Stream}/{StartTime}_{EndTime}");
     
    CreateRecordPresetV2BodyRecordPresetConfigHlsParam.setTOSParam(CreateRecordPresetV2BodyRecordPresetConfigHlsParamTOSParam); 
        
    
    // VOD 存储相关配置。
    // note:
    // 录制文件只能选择一个位置进行存储,即 `TOSParam` 和 `VODParam` 配置且配置其中一个。
    CreateRecordPresetV2BodyRecordPresetConfigHlsParamVODParam CreateRecordPresetV2BodyRecordPresetConfigHlsParamVODParam = new CreateRecordPresetV2BodyRecordPresetConfigHlsParamVODParam();  

    
    // 是否使用 VOD 存储,默认为 `false`,支持的取值及含义如下所示。
    // <li> `false`:不使用; </li>
    // <li> `true`:使用。 </li>
    CreateRecordPresetV2BodyRecordPresetConfigHlsParamVODParam.setEnable(true);
    
    // 视频点播(VOD)空间名称。可登录[视频点播控制台](https//console.volcengine.com/vod/)查询。
    // note:
    // 如果使用 VOD 存储,即 `VODParam` 中 `Enable` 取值为 `true` 时,`VodNamespace` 为必填。
    CreateRecordPresetV2BodyRecordPresetConfigHlsParamVODParam.setVodNamespace("Snapshot");
    
    // 视频点播工作流模板 ID,对于存储在点播的录制文件,会使用该工作流模版对录制的视频进行处理,可登录[视频点播控制台](https//console.volcengine.com/vod/)获取工作流模板 ID,默认为空。
    CreateRecordPresetV2BodyRecordPresetConfigHlsParamVODParam.setWorkflowID("25524a2d*********891d7daf4b9");
    
    // 直播录制文件存储到点播时的视频分类 ID,您可以通过视频点播的 [ListVideoClassifications](https//www.volcengine.com/docs/4/101661) 接口查询视频分类 ID 等信息,默认为空。
    CreateRecordPresetV2BodyRecordPresetConfigHlsParamVODParam.setClassificationID(1234);
    
    // 直播录制文件存储到点播时的存储类型,存储类型介绍请参考[媒资存储管理](https//www.volcengine.com/docs/4/73629#媒资存储)。默认值为 `1`,支持的取值及含义如下所示。
    // <li> `1`:标准存储; </li>
    // <li> `2`:归档存储。 </li>
    CreateRecordPresetV2BodyRecordPresetConfigHlsParamVODParam.setStorageClass(1);
    
    // 录制文件的存储规则,最大长度为 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>
    CreateRecordPresetV2BodyRecordPresetConfigHlsParamVODParam.setExactObject("record/{PubDomain}/{App}/{Stream}/{StartTime}_{EndTime}");
     
    CreateRecordPresetV2BodyRecordPresetConfigHlsParam.setVODParam(CreateRecordPresetV2BodyRecordPresetConfigHlsParamVODParam); 
        
     
    CreateRecordPresetV2BodyRecordPresetConfig.setHlsParam(CreateRecordPresetV2BodyRecordPresetConfigHlsParam); 
        
    
    // 录制为 MP4 格式时的录制参数。
    // note:
    // 您需至少配置一种录制格式,即 `FlvParam`、`HlsParam`、`Mp4Param` 至少开启一个。
    CreateRecordPresetV2BodyRecordPresetConfigMp4Param CreateRecordPresetV2BodyRecordPresetConfigMp4Param = new CreateRecordPresetV2BodyRecordPresetConfigMp4Param();  

    
    // 当前格式的录制是否开启,默认值为 `false`,支持的取值及含义如下所示。
    // <li> `false`:不开启; </li>
    // <li> `true`:开启。 </li>
    CreateRecordPresetV2BodyRecordPresetConfigMp4Param.setEnable(true);
    
    // 断流录制场景下,单文件录制时长,单位为秒,默认值为 `7200`,取值范围为 `-1` 和 [300,86400]。
    // <li> 取值为 `-1` 时,表示不限制录制时长,录制结束后生成一个完整的录制文件。 </li>
    // <li> 取值为 [300,86400] 之间的值时,表示根据设置的录制文件时分段长生成录制文件,完成录制后一起上传。 </li>
    // note:
    // 断流录制场景仅在录制格式为 HLS 时生效,且断流录制和实时录制为二选一配置。
    CreateRecordPresetV2BodyRecordPresetConfigMp4Param.setDuration(7200);
    
    // 实时录制场景下,断流等待时长,单位为秒,默认值为 `180`,取值范围为 [0,3600]。如果实际断流时间小于断流等待时长,录制任务不会停止;如果实际断流时间大于断流等待时长,录制任务会停止,断流恢复后重新开始一个新的录制任务。
    CreateRecordPresetV2BodyRecordPresetConfigMp4Param.setContinueDuration(180);
    
    // 实时录制场景下,单文件录制时长,单位为秒,默认值为 `1800`,取值范围为 [300,21600]。录制时间到达设置的单文件录制时长时,会立即生成录制文件实时上传存储。
    CreateRecordPresetV2BodyRecordPresetConfigMp4Param.setRealtimeRecordDuration(300);
    
    // 断流录制场景下,断流拼接时长,单位为秒,默认值为 `0`,支持的取值及含义如下所示。
    // <li> `-1`:一直拼接,表示每次断流都不会影响录制任务,录制完成后生成一个完整的录制文件; </li>
    // <li> `0`:不拼接,表示每次断流结束录制任务生成一个录制文件,断流恢复重新开始一个新的录制任务; </li>
    // <li> 大于 0:拼接容错时间,表示如果断流时间小于拼接容错时间时,则录制任务不会停止,不会生成新的录制文件;如果断流时间大于拼接容错时间,则录制任务停止,断流恢复后重新开始一个新的录制任务。 </li>
    // note:
    // 断流录制场景仅在录制格式为 HLS 时生效,且断流录制和实时录制为二选一配置。
    CreateRecordPresetV2BodyRecordPresetConfigMp4Param.setSplice(0);
    
    // TOS 存储相关配置。
    // note:
    // 录制文件只能选择一个位置进行存储,即 `TOSParam` 和 `VODParam` 配置且配置其中一个。
    CreateRecordPresetV2BodyRecordPresetConfigMp4ParamTOSParam CreateRecordPresetV2BodyRecordPresetConfigMp4ParamTOSParam = new CreateRecordPresetV2BodyRecordPresetConfigMp4ParamTOSParam();  

    
    // 是否使用 TOS 存储,默认为 `false`,取值及含义如下所示。
    // <li> `false`:不使用; </li>
    // <li> `true`:使用。 </li>
    CreateRecordPresetV2BodyRecordPresetConfigMp4ParamTOSParam.setEnable(true);
    
    // TOS 存储对应的 Bucket。例如,存储位置为 live-test-tos-example/live/liveapp 时,`Bucket` 取值为 `live-test-tos-example`。
    // note:
    // 如果使用 TOS 存储,即 `TOSParam` 中 `Enable` 取值为 `true` 时,`Bucket` 为必填。
    CreateRecordPresetV2BodyRecordPresetConfigMp4ParamTOSParam.setBucket("live-test-tos-example");
    
    // TOS 存储对应 Bucket 下的存储目录,默认为空。例如,存储位置为 live-test-tos-example/live/liveapp 时,`StorageDir` 取值为 `live/liveapp`。
    CreateRecordPresetV2BodyRecordPresetConfigMp4ParamTOSParam.setStorageDir("live/liveapp");
    
    // 录制文件的存储规则,最大长度为 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>
    CreateRecordPresetV2BodyRecordPresetConfigMp4ParamTOSParam.setExactObject("record/{PubDomain}/{App}/{Stream}/{StartTime}_{EndTime}");
     
    CreateRecordPresetV2BodyRecordPresetConfigMp4Param.setTOSParam(CreateRecordPresetV2BodyRecordPresetConfigMp4ParamTOSParam); 
        
    
    // VOD 存储相关配置。
    // note:
    // 录制文件只能选择一个位置进行存储,即 `TOSParam` 和 `VODParam` 配置且配置其中一个。
    CreateRecordPresetV2BodyRecordPresetConfigMp4ParamVODParam CreateRecordPresetV2BodyRecordPresetConfigMp4ParamVODParam = new CreateRecordPresetV2BodyRecordPresetConfigMp4ParamVODParam();  

    
    // 是否使用 VOD 存储,默认为 `false`,支持的取值及含义如下所示。
    // <li> `false`:不使用; </li>
    // <li> `true`:使用。 </li>
    CreateRecordPresetV2BodyRecordPresetConfigMp4ParamVODParam.setEnable(true);
    
    // 视频点播(VOD)空间名称。可登录[视频点播控制台](https//console.volcengine.com/vod/)查询。
    // note:
    // 如果使用 VOD 存储,即 `VODParam` 中 `Enable` 取值为 `true` 时,`VodNamespace` 为必填。
    CreateRecordPresetV2BodyRecordPresetConfigMp4ParamVODParam.setVodNamespace("Snapshot");
    
    // 视频点播工作流模板 ID,对于存储在点播的录制文件,会使用该工作流模版对录制的视频进行处理,可登录[视频点播控制台](https//console.volcengine.com/vod/)获取工作流模板 ID,默认为空。
    CreateRecordPresetV2BodyRecordPresetConfigMp4ParamVODParam.setWorkflowID("25524a2d*********891d7daf4b9");
    
    // 直播录制文件存储到点播时的视频分类 ID,您可以通过视频点播的 [ListVideoClassifications](https//www.volcengine.com/docs/4/101661) 接口查询视频分类 ID 等信息,默认为空。
    CreateRecordPresetV2BodyRecordPresetConfigMp4ParamVODParam.setClassificationID(1234);
    
    // 直播录制文件存储到点播时的存储类型,存储类型介绍请参考[媒资存储管理](https//www.volcengine.com/docs/4/73629#媒资存储)。默认值为 `1`,支持的取值及含义如下所示。
    // <li> `1`:标准存储; </li>
    // <li> `2`:归档存储。 </li>
    CreateRecordPresetV2BodyRecordPresetConfigMp4ParamVODParam.setStorageClass(1);
    
    // 录制文件的存储规则,最大长度为 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>
    CreateRecordPresetV2BodyRecordPresetConfigMp4ParamVODParam.setExactObject("record/{PubDomain}/{App}/{Stream}/{StartTime}_{EndTime}");
     
    CreateRecordPresetV2BodyRecordPresetConfigMp4Param.setVODParam(CreateRecordPresetV2BodyRecordPresetConfigMp4ParamVODParam); 
        
     
    CreateRecordPresetV2BodyRecordPresetConfig.setMp4Param(CreateRecordPresetV2BodyRecordPresetConfigMp4Param); 
        
     
    body.setRecordPresetConfig(CreateRecordPresetV2BodyRecordPresetConfig);

    try {
      CreateRecordPresetV2Res resp = service.createRecordPresetV2(body);
      System.out.println(resp);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

删除录制配置

您可以调用 DeleteRecordPreset 接口删除录制配置。详细的参数说明可参见 DeleteRecordPreset 接口文档。

接口调用示例如下所示。

package com.volcengine.live.demo;
import com.volcengine.model.live.v20230101.DeleteRecordPresetBody;
import com.volcengine.model.live.v20230101.DeleteRecordPresetRes;
import com.volcengine.service.live.v20230101.LiveService;

public class DeleteRecordPresetDemo  {
  public static void main(String[] args) {
    // 强烈建议不要把 AccessKey ID 和 AccessKey Secret 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。
    // 本示例通过从环境变量中读取 AccessKey ID 和 AccessKey Secret,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 ACCESS_KEY_ID 和 ACCESS KEY_SECRET
    LiveService service = LiveService.getInstance();

    service.setAccessKey(System.getenv("ACCESS_KEY_ID"));

    service.setSecretKey(System.getenv("ACCESS_KEY_SECRET"));

    DeleteRecordPresetBody body = new DeleteRecordPresetBody();
     
    // 应用名称,您可以调用 [ListVhostRecordPresetV2](https//www.volcengine.com/docs/6469/1126858) 接口查看待删除的录制配置 App 取值。
    body.setApp("live");
    
    // 录制配置的名称。可调用 [ListVhostRecordPresetV2](https//www.volcengine.com/docs/6469/1126858) 接口,查询配置的名称。
    body.setPreset("liverecord");
    
    // 域名空间。您可以调用 [ListVhostRecordPresetV2](https//www.volcengine.com/docs/6469/1126858) 接口查看待更新录制配置的 `Vhost` 取值。
    body.setVhost("push.example.com");
    
    // 流名称,取值与直播流地址的 `StreamName` 字段取值相应,用来指定待更新的录制配置,默认为空。您可以调用 [ListVhostRecordPresetV2](https//www.volcengine.com/docs/6469/1126858) 接口查看待更新录制配置的 `Stream` 取值。
    body.setStream("example_stream");

    try {
      DeleteRecordPresetRes resp = service.deleteRecordPreset(body);
      System.out.println(resp);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

更新录制配置

您可以调用 UpdateRecordPresetV2 接口更新录制配置。详细的参数说明可参见 UpdateRecordPresetV2 接口文档。

接口调用示例如下所示。

package com.volcengine.live.demo;
import com.volcengine.model.live.v20230101.UpdateRecordPresetV2Body; 
import com.volcengine.model.live.v20230101.UpdateRecordPresetV2BodyRecordPresetConfig; 
import com.volcengine.model.live.v20230101.UpdateRecordPresetV2BodyRecordPresetConfigFlvParam; 
import com.volcengine.model.live.v20230101.UpdateRecordPresetV2BodyRecordPresetConfigFlvParamTOSParam; 
import com.volcengine.model.live.v20230101.UpdateRecordPresetV2BodyRecordPresetConfigFlvParamVODParam; 
import com.volcengine.model.live.v20230101.UpdateRecordPresetV2BodyRecordPresetConfigHlsParam; 
import com.volcengine.model.live.v20230101.UpdateRecordPresetV2BodyRecordPresetConfigHlsParamTOSParam; 
import com.volcengine.model.live.v20230101.UpdateRecordPresetV2BodyRecordPresetConfigHlsParamVODParam; 
import com.volcengine.model.live.v20230101.UpdateRecordPresetV2BodyRecordPresetConfigMp4Param; 
import com.volcengine.model.live.v20230101.UpdateRecordPresetV2BodyRecordPresetConfigMp4ParamTOSParam; 
import com.volcengine.model.live.v20230101.UpdateRecordPresetV2BodyRecordPresetConfigMp4ParamVODParam;
import com.volcengine.model.live.v20230101.UpdateRecordPresetV2Res;
import com.volcengine.service.live.v20230101.LiveService;
import java.util.ArrayList; 
import java.util.List; 

public class UpdateRecordPresetV2Demo  {
  public static void main(String[] args) {
    // 强烈建议不要把 AccessKey ID 和 AccessKey Secret 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。
    // 本示例通过从环境变量中读取 AccessKey ID 和 AccessKey Secret,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 ACCESS_KEY_ID 和 ACCESS KEY_SECRET
    LiveService service = LiveService.getInstance();

    service.setAccessKey(System.getenv("ACCESS_KEY_ID"));

    service.setSecretKey(System.getenv("ACCESS_KEY_SECRET"));

    UpdateRecordPresetV2Body body = new UpdateRecordPresetV2Body();
     
    // 域名空间。您可以调用 [ListVhostRecordPresetV2](https//www.volcengine.com/docs/6469/1126858) 接口查看待更新录制配置的 `Vhost` 取值。
    body.setVhost("push.example.com");
    
    // 应用名称,取值与直播流地址的 `AppName` 字段取值相同,用来指定待更新的录制配置,默认为空。您可以调用 [ListVhostRecordPresetV2](https//www.volcengine.com/docs/6469/1126858) 接口查看待更新录制配置的 `App` 取值。
    body.setApp("live");
    
    // 录制配置的名称。您可以调用 [ListVhostRecordPresetV2](https//www.volcengine.com/docs/6469/1126858) 接口查看待更新录制配置的 `Name` 取值。
    body.setPreset("liverecord");
    
    // 录制配置的详细参数配置。
    // note:
    // 以下录制参数,未传入值时表示与更新前的配置相同。
    UpdateRecordPresetV2BodyRecordPresetConfig UpdateRecordPresetV2BodyRecordPresetConfig = new UpdateRecordPresetV2BodyRecordPresetConfig();  

    
    // 是否录制转码流,默认值为 0。支持的取值如下所示。
    // <li> `0`:不录制; </li>
    // <li> `1`:录制全部转码流; </li>
    // <li> `2`:录制指定转码流,即通过转码后缀列表 `TranscodeSuffixList` 匹配转码流进行录制,如果转码流后缀列表为空仍表示录制全部转码流。 </li>
    // note:
    // 转码流和源流需至少选一个进行录制,即是否录制转码流(`TranscodeRecord`)和是否录制源流(`OriginRecord`)的取值至少一个不为 0。
    UpdateRecordPresetV2BodyRecordPresetConfig.setTranscodeRecord(1);
    
    // 是否录制源流,默认值为 `0`,支持的取值及含义如下所示。
    // <li> `0`:不录制; </li>
    // <li> `1`:录制。 </li>
    // note:
    // 转码流和源流需至少选一个进行录制,即是否录制转码流(`TranscodeRecord`)和是否录制源流(`OriginRecord`)的取值至少一个不为 0。
    UpdateRecordPresetV2BodyRecordPresetConfig.setOriginRecord(1);
    
    // 录制为 HLS 格式时,单个 TS 切片时长,单位为秒,默认值为 `10`,取值范围为 [5,30]。
    UpdateRecordPresetV2BodyRecordPresetConfig.setSliceDuration(5);
    
    // 转码流后缀列表,转码流录制配置为根据转码流列表匹配(`TranscodeRecord` 取值为 `2`)时生效,`TranscodeSuffixList` 默认配置为空,效果等同于录制全部转码流。
    List<String> UpdateRecordPresetV2BodyRecordPresetConfigTranscodeSuffixList = new ArrayList<>(); 

    UpdateRecordPresetV2BodyRecordPresetConfigTranscodeSuffixList.add("_hd");
    
    UpdateRecordPresetV2BodyRecordPresetConfig.setTranscodeSuffixList(UpdateRecordPresetV2BodyRecordPresetConfigTranscodeSuffixList); 
    
    // 录制为 FLV 格式时的录制参数。
    // note:
    // 您需至少配置一个录制格式,即 `FlvParam`、`HlsParam`、`Mp4Param` 至少开启一个。
    UpdateRecordPresetV2BodyRecordPresetConfigFlvParam UpdateRecordPresetV2BodyRecordPresetConfigFlvParam = new UpdateRecordPresetV2BodyRecordPresetConfigFlvParam();  

    
    // 当前格式的录制是否开启,默认 `false`,取值及含义如下所示。
    // <li> `false`:不开启; </li>
    // <li> `true`:开启。 </li>
    UpdateRecordPresetV2BodyRecordPresetConfigFlvParam.setEnable(true);
    
    // 断流录制场景下,单文件录制时长,单位为秒,默认值为 `7200`,取值范围为 `-1` 和 [300,86400]。
    // <li> 取值为 `-1` 时,表示不限制录制时长,录制结束后生成一个完整的录制文件。 </li>
    // <li> 取值为 [300,86400] 之间的值时,表示根据设置的录制文件时长分段生成录制文件,完成录制后一起上传。 </li>
    // note:
    // 断流录制场景仅在录制格式为 HLS 时生效,且断流录制和实时录制为二选一配置。
    UpdateRecordPresetV2BodyRecordPresetConfigFlvParam.setDuration(7200);
    
    // 实时录制场景下,单文件录制时长,单位为秒,默认值为 `1800`,取值范围为 [300,21600]。录制时间到达设置的单文件录制时长时,会立即生成录制文件实时上传存储。
    UpdateRecordPresetV2BodyRecordPresetConfigFlvParam.setRealtimeRecordDuration(7200);
    
    // 断流录制场景下,断流拼接时长,单位为秒,默认值为 `0`,支持的取值及含义如下所示。
    // <li> `-1`:一直拼接,表示每次断流都不会影响录制任务,录制完成后生成一个完整的录制文件; </li>
    // <li> `0`:不拼接,表示每次断流结束录制任务生成一个录制文件,断流恢复重新开始一个新的录制任务; </li>
    // <li> 大于 0:拼接容错时间,表示如果断流时间小于拼接容错时间时,则录制任务不会停止,不会生成新的录制文件;如果断流时间大于拼接容错时间,则录制任务停止,断流恢复后重新开始一个新的录制任务。 </li>
    // note:
    // 断流录制场景仅在录制格式为 HLS 时生效,且断流录制和实时录制为二选一配置。
    UpdateRecordPresetV2BodyRecordPresetConfigFlvParam.setSplice(0);
    
    // TOS 存储相关配置。
    // note:
    // 录制文件只能选择一个位置进行存储,即 `TOSParam` 和 `VODParam` 配置且配置其中一个。
    UpdateRecordPresetV2BodyRecordPresetConfigFlvParamTOSParam UpdateRecordPresetV2BodyRecordPresetConfigFlvParamTOSParam = new UpdateRecordPresetV2BodyRecordPresetConfigFlvParamTOSParam();  

    
    // 是否使用 TOS 存储,默认为 `false`,取值及含义如下所示。
    // <li> `false`:不使用; </li>
    // <li> `true`:使用。 </li>
    UpdateRecordPresetV2BodyRecordPresetConfigFlvParamTOSParam.setEnable(true);
    
    // TOS 存储对应的 Bucket。例如,存储位置为 live-test-tos-example/live/liveapp 时,`Bucket` 取值为 `live-test-tos-example`。
    // note:
    // 如果使用 TOS 存储,即 `TOSParam` 中 `Enable` 取值为 `true` 时,`Bucket` 为必填。
    UpdateRecordPresetV2BodyRecordPresetConfigFlvParamTOSParam.setBucket("live-test-tos-example");
    
    // TOS 存储对应 Bucket 下的存储目录,默认为空。例如,存储位置为 live-test-tos-example/live/liveapp 时,`StorageDir` 取值为 `live/liveapp`。
    UpdateRecordPresetV2BodyRecordPresetConfigFlvParamTOSParam.setStorageDir("live/liveapp");
    
    // 录制文件的存储规则,最大长度为 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>
    UpdateRecordPresetV2BodyRecordPresetConfigFlvParamTOSParam.setExactObject("record/{PubDomain}/{App}/{Stream}/{StartTime}_{EndTime}");
     
    UpdateRecordPresetV2BodyRecordPresetConfigFlvParam.setTOSParam(UpdateRecordPresetV2BodyRecordPresetConfigFlvParamTOSParam); 
        
    
    // VOD 存储相关配置。
    // note:
    // 录制文件只能选择一个位置进行存储,即 `TOSParam` 和 `VODParam` 配置且配置其中一个。
    UpdateRecordPresetV2BodyRecordPresetConfigFlvParamVODParam UpdateRecordPresetV2BodyRecordPresetConfigFlvParamVODParam = new UpdateRecordPresetV2BodyRecordPresetConfigFlvParamVODParam();  

    
    // 是否使用 VOD 存储,默认为 `false`,取值及含义如下所示。
    // <li> `false`:不使用; </li>
    // <li> `true`:使用。 </li>
    UpdateRecordPresetV2BodyRecordPresetConfigFlvParamVODParam.setEnable(true);
    
    // 视频点播(VOD)空间名称。可登录[视频点播控制台](https//console.volcengine.com/vod/)查询。
    // note:
    // 如果使用 VOD 存储,即 `VODParam` 中 `Enable` 取值为 `true` 时,`VodNamespace` 为必填。
    UpdateRecordPresetV2BodyRecordPresetConfigFlvParamVODParam.setVodNamespace("Snapshot");
    
    // 视频点播工作流模板 ID,对于存储在点播的录制文件,会使用该工作流模版对录制的视频进行处理,可登录[视频点播控制台](https//console.volcengine.com/vod/)获取工作流模板 ID,默认为空。
    UpdateRecordPresetV2BodyRecordPresetConfigFlvParamVODParam.setWorkflowID("25524a2d*********891d7daf4b9");
    
    // 直播录制文件存储到点播时的视频分类 ID,您可以通过视频点播的 [ListVideoClassifications](https//www.volcengine.com/docs/4/101661) 接口查询视频分类 ID 等信息,默认为空。
    UpdateRecordPresetV2BodyRecordPresetConfigFlvParamVODParam.setClassificationID(1234);
    
    // 直播录制文件存储到点播时的存储类型,存储类型介绍请参考[媒资存储管理](https//www.volcengine.com/docs/4/73629#媒资存储)。默认值为 `1`,支持的取值及含义如下所示。
    // <li> `1`:标准存储; </li>
    // <li> `2`:归档存储。 </li>
    UpdateRecordPresetV2BodyRecordPresetConfigFlvParamVODParam.setStorageClass(1);
    
    // 录制文件的存储规则,最大长度为 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>
    UpdateRecordPresetV2BodyRecordPresetConfigFlvParamVODParam.setExactObject("record/{PubDomain}/{App}/{Stream}/{StartTime}_{EndTime}");
     
    UpdateRecordPresetV2BodyRecordPresetConfigFlvParam.setVODParam(UpdateRecordPresetV2BodyRecordPresetConfigFlvParamVODParam); 
        
    
    // 实时录制场景下,断流等待时长,单位为秒,默认值为 `180`,取值范围为 [0,3600]。如果实际断流时间小于断流等待时长,录制任务不会停止;如果实际断流时间大于断流等待时长,录制任务会停止,断流恢复后重新开始一个新的录制任务。
    UpdateRecordPresetV2BodyRecordPresetConfigFlvParam.setContinueDuration(180);
     
    UpdateRecordPresetV2BodyRecordPresetConfig.setFlvParam(UpdateRecordPresetV2BodyRecordPresetConfigFlvParam); 
        
    
    // 录制为 HLS 格式时的录制参数。
    // note:
    // 您需至少配置一个录制格式,即 `FlvParam`、`HlsParam`、`Mp4Param` 至少开启一个。
    UpdateRecordPresetV2BodyRecordPresetConfigHlsParam UpdateRecordPresetV2BodyRecordPresetConfigHlsParam = new UpdateRecordPresetV2BodyRecordPresetConfigHlsParam();  

    
    // 当前格式的录制是否开启,默认 `false`,取值及含义如下所示。
    // <li> `false`:不开启; </li>
    // <li> `true`:开启。 </li>
    UpdateRecordPresetV2BodyRecordPresetConfigHlsParam.setEnable(true);
    
    // 断流录制场景下,单文件录制时长,单位为秒,默认值为 `7200`,取值范围为 `-1` 和 [300,86400]。
    // <li> 取值为 `-1` 时,表示不限制录制时长,录制结束后生成一个完整的录制文件。 </li>
    // <li> 取值为 [300,86400] 之间的值时,表示根据设置的录制文件时长分段生成录制文件,完成录制后一起上传。 </li>
    // note:
    // 断流录制场景仅在录制格式为 HLS 时生效,且断流录制和实时录制为二选一配置。
    UpdateRecordPresetV2BodyRecordPresetConfigHlsParam.setDuration(7200);
    
    // 实时录制场景下,单文件录制时长,单位为秒,默认值为 `1800`,取值范围为 [300,21600]。录制时间到达设置的单文件录制时长时,会立即生成录制文件实时上传存储。
    UpdateRecordPresetV2BodyRecordPresetConfigHlsParam.setRealtimeRecordDuration(7200);
    
    // 断流录制场景下,断流拼接时长,单位为秒,默认值为 `0`,支持的取值及含义如下所示。
    // <li> `-1`:一直拼接,表示每次断流都不会影响录制任务,录制完成后生成一个完整的录制文件; </li>
    // <li> `0`:不拼接,表示每次断流结束录制任务生成一个录制文件,断流恢复重新开始一个新的录制任务; </li>
    // <li> 大于 0:拼接容错时间,表示如果断流时间小于拼接容错时间时,则录制任务不会停止,不会生成新的录制文件;如果断流时间大于拼接容错时间,则录制任务停止,断流恢复后重新开始一个新的录制任务。 </li>
    // note:
    // 断流录制场景仅在录制格式为 HLS 时生效,且断流录制和实时录制为二选一配置。
    UpdateRecordPresetV2BodyRecordPresetConfigHlsParam.setSplice(0);
    
    // TOS 存储相关配置。
    // note:
    // 录制文件只能选择一个位置进行存储,即 `TOSParam` 和 `VODParam` 配置且配置其中一个。
    UpdateRecordPresetV2BodyRecordPresetConfigHlsParamTOSParam UpdateRecordPresetV2BodyRecordPresetConfigHlsParamTOSParam = new UpdateRecordPresetV2BodyRecordPresetConfigHlsParamTOSParam();  

    
    // 是否使用 TOS 存储,默认为 `false`,取值及含义如下所示。
    // <li> `false`:不使用; </li>
    // <li> `true`:使用。 </li>
    UpdateRecordPresetV2BodyRecordPresetConfigHlsParamTOSParam.setEnable(true);
    
    // TOS 存储对应的 Bucket。例如,存储位置为 live-test-tos-example/live/liveapp 时,`Bucket` 取值为 `live-test-tos-example`。
    // note:
    // 如果使用 TOS 存储,即 `TOSParam` 中 `Enable` 取值为 `true` 时,`Bucket` 为必填。
    UpdateRecordPresetV2BodyRecordPresetConfigHlsParamTOSParam.setBucket("live-test-tos-example");
    
    // TOS 存储对应 Bucket 下的存储目录,默认为空。例如,存储位置为 live-test-tos-example/live/liveapp 时,`StorageDir` 取值为 `live/liveapp`。
    UpdateRecordPresetV2BodyRecordPresetConfigHlsParamTOSParam.setStorageDir("live/liveapp");
    
    // 录制文件的存储规则,最大长度为 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>
    UpdateRecordPresetV2BodyRecordPresetConfigHlsParamTOSParam.setExactObject("record/{PubDomain}/{App}/{Stream}/{StartTime}_{EndTime}");
     
    UpdateRecordPresetV2BodyRecordPresetConfigHlsParam.setTOSParam(UpdateRecordPresetV2BodyRecordPresetConfigHlsParamTOSParam); 
        
    
    // VOD 存储相关配置。
    // note:
    // 录制文件只能选择一个位置进行存储,即 `TOSParam` 和 `VODParam` 配置且配置其中一个。
    UpdateRecordPresetV2BodyRecordPresetConfigHlsParamVODParam UpdateRecordPresetV2BodyRecordPresetConfigHlsParamVODParam = new UpdateRecordPresetV2BodyRecordPresetConfigHlsParamVODParam();  

    
    // 是否使用 VOD 存储,默认为 `false`,取值及含义如下所示。
    // <li> `false`:不使用; </li>
    // <li> `true`:使用。 </li>
    UpdateRecordPresetV2BodyRecordPresetConfigHlsParamVODParam.setEnable(true);
    
    // 视频点播(VOD)空间名称。可登录[视频点播控制台](https//console.volcengine.com/vod/)查询。
    // note:
    // 如果使用 VOD 存储,即 `VODParam` 中 `Enable` 取值为 `true` 时,`VodNamespace` 为必填。
    UpdateRecordPresetV2BodyRecordPresetConfigHlsParamVODParam.setVodNamespace("Snapshot");
    
    // 视频点播工作流模板 ID,对于存储在点播的录制文件,会使用该工作流模版对录制的视频进行处理,可登录[视频点播控制台](https//console.volcengine.com/vod/)获取工作流模板 ID,默认为空。
    UpdateRecordPresetV2BodyRecordPresetConfigHlsParamVODParam.setWorkflowID("25524a2d*********891d7daf4b9");
    
    // 直播录制文件存储到点播时的视频分类 ID,您可以通过视频点播的 [ListVideoClassifications](https//www.volcengine.com/docs/4/101661) 接口查询视频分类 ID 等信息,默认为空。
    UpdateRecordPresetV2BodyRecordPresetConfigHlsParamVODParam.setClassificationID(1234);
    
    // 直播录制文件存储到点播时的存储类型,存储类型介绍请参考[媒资存储管理](https//www.volcengine.com/docs/4/73629#媒资存储)。默认值为 `1`,支持的取值及含义如下所示。
    // <li> `1`:标准存储; </li>
    // <li> `2`:归档存储。 </li>
    UpdateRecordPresetV2BodyRecordPresetConfigHlsParamVODParam.setStorageClass(1);
    
    // 录制文件的存储规则,最大长度为 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>
    UpdateRecordPresetV2BodyRecordPresetConfigHlsParamVODParam.setExactObject("record/{PubDomain}/{App}/{Stream}/{StartTime}_{EndTime}");
     
    UpdateRecordPresetV2BodyRecordPresetConfigHlsParam.setVODParam(UpdateRecordPresetV2BodyRecordPresetConfigHlsParamVODParam); 
        
    
    // 实时录制场景下,断流等待时长,单位为秒,默认值为 `180`,取值范围为 [0,3600]。如果实际断流时间小于断流等待时长,录制任务不会停止;如果实际断流时间大于断流等待时长,录制任务会停止,断流恢复后重新开始一个新的录制任务。
    UpdateRecordPresetV2BodyRecordPresetConfigHlsParam.setContinueDuration(180);
     
    UpdateRecordPresetV2BodyRecordPresetConfig.setHlsParam(UpdateRecordPresetV2BodyRecordPresetConfigHlsParam); 
        
    
    // 录制为 MP4 格式时的录制参数。
    // note:
    // 您需至少配置一个录制格式,即 `FlvParam`、`HlsParam`、`Mp4Param` 至少开启一个。
    UpdateRecordPresetV2BodyRecordPresetConfigMp4Param UpdateRecordPresetV2BodyRecordPresetConfigMp4Param = new UpdateRecordPresetV2BodyRecordPresetConfigMp4Param();  

    
    // 当前格式的录制是否开启,默认 `false`,取值及含义如下所示。
    // <li> `false`:不开启; </li>
    // <li> `true`:开启。 </li>
    UpdateRecordPresetV2BodyRecordPresetConfigMp4Param.setEnable(true);
    
    // 断流录制场景下,单文件录制时长,单位为秒,默认值为 `7200`,取值范围为 `-1` 和 [300,86400]。
    // <li> 取值为 `-1` 时,表示不限制录制时长,录制结束后生成一个完整的录制文件。 </li>
    // <li> 取值为 [300,86400] 之间的值时,表示根据设置的录制文件时长分段生成录制文件,完成录制后一起上传。 </li>
    // note:
    // 断流录制场景仅在录制格式为 HLS 时生效,且断流录制和实时录制为二选一配置。
    UpdateRecordPresetV2BodyRecordPresetConfigMp4Param.setDuration(7200);
    
    // 实时录制场景下,单文件录制时长,单位为秒,默认值为 `1800`,取值范围为 [300,21600]。录制时间到达设置的单文件录制时长时,会立即生成录制文件实时上传存储。
    UpdateRecordPresetV2BodyRecordPresetConfigMp4Param.setRealtimeRecordDuration(7200);
    
    // 断流录制场景下,断流拼接时长,单位为秒,默认值为 `0`,支持的取值及含义如下所示。
    // <li> `-1`:一直拼接,表示每次断流都不会影响录制任务,录制完成后生成一个完整的录制文件; </li>
    // <li> `0`:不拼接,表示每次断流结束录制任务生成一个录制文件,断流恢复重新开始一个新的录制任务; </li>
    // <li> 大于 0:拼接容错时间,表示如果断流时间小于拼接容错时间时,则录制任务不会停止,不会生成新的录制文件;如果断流时间大于拼接容错时间,则录制任务停止,断流恢复后重新开始一个新的录制任务。 </li>
    // note:
    // 断流录制场景仅在录制格式为 HLS 时生效,且断流录制和实时录制为二选一配置。
    UpdateRecordPresetV2BodyRecordPresetConfigMp4Param.setSplice(0);
    
    // TOS 存储相关配置。
    // note:
    // 录制文件只能选择一个位置进行存储,即 `TOSParam` 和 `VODParam` 配置且配置其中一个。
    UpdateRecordPresetV2BodyRecordPresetConfigMp4ParamTOSParam UpdateRecordPresetV2BodyRecordPresetConfigMp4ParamTOSParam = new UpdateRecordPresetV2BodyRecordPresetConfigMp4ParamTOSParam();  

    
    // 是否使用 TOS 存储,默认为 `false`,取值及含义如下所示。
    // <li> `false`:不使用; </li>
    // <li> `true`:使用。 </li>
    UpdateRecordPresetV2BodyRecordPresetConfigMp4ParamTOSParam.setEnable(true);
    
    // TOS 存储对应的 Bucket。例如,存储位置为 live-test-tos-example/live/liveapp 时,`Bucket` 取值为 `live-test-tos-example`。
    // note:
    // 如果使用 TOS 存储,即 `TOSParam` 中 `Enable` 取值为 `true` 时,`Bucket` 为必填。
    UpdateRecordPresetV2BodyRecordPresetConfigMp4ParamTOSParam.setBucket("live-test-tos-example");
    
    // TOS 存储对应 Bucket 下的存储目录,默认为空。例如,存储位置为 live-test-tos-example/live/liveapp 时,`StorageDir` 取值为 `live/liveapp`。
    UpdateRecordPresetV2BodyRecordPresetConfigMp4ParamTOSParam.setStorageDir("live/liveapp");
    
    // 录制文件的存储规则,最大长度为 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>
    UpdateRecordPresetV2BodyRecordPresetConfigMp4ParamTOSParam.setExactObject("record/{PubDomain}/{App}/{Stream}/{StartTime}_{EndTime}");
     
    UpdateRecordPresetV2BodyRecordPresetConfigMp4Param.setTOSParam(UpdateRecordPresetV2BodyRecordPresetConfigMp4ParamTOSParam); 
        
    
    // VOD 存储相关配置。
    // note:
    // 录制文件只能选择一个位置进行存储,即 `TOSParam` 和 `VODParam` 配置且配置其中一个。
    UpdateRecordPresetV2BodyRecordPresetConfigMp4ParamVODParam UpdateRecordPresetV2BodyRecordPresetConfigMp4ParamVODParam = new UpdateRecordPresetV2BodyRecordPresetConfigMp4ParamVODParam();  

    
    // 是否使用 VOD 存储,默认为 `false`,取值及含义如下所示。
    // <li> `false`:不使用; </li>
    // <li> `true`:使用。 </li>
    UpdateRecordPresetV2BodyRecordPresetConfigMp4ParamVODParam.setEnable(true);
    
    // 视频点播(VOD)空间名称。可登录[视频点播控制台](https//console.volcengine.com/vod/)查询。
    // note:
    // 如果使用 VOD 存储,即 `VODParam` 中 `Enable` 取值为 `true` 时,`VodNamespace` 为必填。
    UpdateRecordPresetV2BodyRecordPresetConfigMp4ParamVODParam.setVodNamespace("Snapshot");
    
    // 视频点播工作流模板 ID,对于存储在点播的录制文件,会使用该工作流模版对录制的视频进行处理,可登录[视频点播控制台](https//console.volcengine.com/vod/)获取工作流模板 ID,默认为空。
    UpdateRecordPresetV2BodyRecordPresetConfigMp4ParamVODParam.setWorkflowID("25524a2d*********891d7daf4b9");
    
    // 直播录制文件存储到点播时的视频分类 ID,您可以通过视频点播的 [ListVideoClassifications](https//www.volcengine.com/docs/4/101661) 接口查询视频分类 ID 等信息,默认为空。
    UpdateRecordPresetV2BodyRecordPresetConfigMp4ParamVODParam.setClassificationID(1234);
    
    // 直播录制文件存储到点播时的存储类型,存储类型介绍请参考[媒资存储管理](https//www.volcengine.com/docs/4/73629#媒资存储)。默认值为 `1`,支持的取值及含义如下所示。
    // <li> `1`:标准存储; </li>
    // <li> `2`:归档存储。 </li>
    UpdateRecordPresetV2BodyRecordPresetConfigMp4ParamVODParam.setStorageClass(1);
    
    // 录制文件的存储规则,最大长度为 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>
    UpdateRecordPresetV2BodyRecordPresetConfigMp4ParamVODParam.setExactObject("record/{PubDomain}/{App}/{Stream}/{StartTime}_{EndTime}");
     
    UpdateRecordPresetV2BodyRecordPresetConfigMp4Param.setVODParam(UpdateRecordPresetV2BodyRecordPresetConfigMp4ParamVODParam); 
        
    
    // 实时录制场景下,断流等待时长,单位为秒,默认值为 `180`,取值范围为 [0,3600]。如果实际断流时间小于断流等待时长,录制任务不会停止;如果实际断流时间大于断流等待时长,录制任务会停止,断流恢复后重新开始一个新的录制任务。
    UpdateRecordPresetV2BodyRecordPresetConfigMp4Param.setContinueDuration(180);
     
    UpdateRecordPresetV2BodyRecordPresetConfig.setMp4Param(UpdateRecordPresetV2BodyRecordPresetConfigMp4Param); 
        
     
    body.setRecordPresetConfig(UpdateRecordPresetV2BodyRecordPresetConfig); 
        
    
    // 流名称,取值与直播流地址的 `StreamName` 字段取值相应,用来指定待更新的录制配置,默认为空。您可以调用 [ListVhostRecordPresetV2](https//www.volcengine.com/docs/6469/1126858) 接口查看待更新录制配置的 `Stream` 取值。
    body.setStream("example_stream");

    try {
      UpdateRecordPresetV2Res resp = service.updateRecordPresetV2(body);
      System.out.println(resp);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

查询录制配置列表

您可以调用 ListVhostRecordPresetV2 接口查询录制配置列表。详细的参数说明可参见 ListVhostRecordPresetV2 接口文档。

接口调用示例如下所示。

package com.volcengine.live.demo;
import com.volcengine.model.live.v20230101.ListVhostRecordPresetV2Body;
import com.volcengine.model.live.v20230101.ListVhostRecordPresetV2Res;
import com.volcengine.service.live.v20230101.LiveService;

public class ListVhostRecordPresetV2Demo  {
  public static void main(String[] args) {
    // 强烈建议不要把 AccessKey ID 和 AccessKey Secret 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。
    // 本示例通过从环境变量中读取 AccessKey ID 和 AccessKey Secret,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 ACCESS_KEY_ID 和 ACCESS KEY_SECRET
    LiveService service = LiveService.getInstance();

    service.setAccessKey(System.getenv("ACCESS_KEY_ID"));

    service.setSecretKey(System.getenv("ACCESS_KEY_SECRET"));

    ListVhostRecordPresetV2Body body = new ListVhostRecordPresetV2Body();
     
    // 域名空间,即直播流地址的域名所属的域名空间。您可以调用 [ListDomainDetail](https//www.volcengine.com/docs/6469/1126815) 接口或在视频直播控制台的[域名管理](https//console-stable.volcanicengine.com/live/main/domain/list)页面,查看需要录制的直播流使用的域名所属的域名空间。
    body.setVhost("push.example.com");
    
    // 直播录制的存储类型,默认值为 `tos`,支持的取值及含义如下所示。
    // <li> `vod`:录制文件存在 VOD; </li>
    // <li> `tos`:录制文件存在 TOS。 </li>
    body.setType("tos");

    try {
      ListVhostRecordPresetV2Res resp = service.listVhostRecordPresetV2(body);
      System.out.println(resp);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

创建直播录制任务

您可以调用 CreatePullRecordTask 接口创建直播录制任务。详细的参数说明可参见 CreatePullRecordTask 接口文档。

接口调用示例如下所示。

package com.volcengine.live.demo;
import com.volcengine.model.live.v20230101.CreatePullRecordTaskBody;
import com.volcengine.model.live.v20230101.CreatePullRecordTaskRes;
import com.volcengine.service.live.v20230101.LiveService;

public class CreatePullRecordTaskDemo  {
  public static void main(String[] args) {
    // 强烈建议不要把 AccessKey ID 和 AccessKey Secret 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。
    // 本示例通过从环境变量中读取 AccessKey ID 和 AccessKey Secret,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 ACCESS_KEY_ID 和 ACCESS KEY_SECRET
    LiveService service = LiveService.getInstance();

    service.setAccessKey(System.getenv("ACCESS_KEY_ID"));

    service.setSecretKey(System.getenv("ACCESS_KEY_SECRET"));

    CreatePullRecordTaskBody body = new CreatePullRecordTaskBody();
     
    // 域名空间。您可以调用 [ListVhostRecordPresetV2](https//www.volcengine.com/docs/6469/1126858) 接口查看待使用的录制配置的 `Vhost` 取值。
    body.setVhost("live.example.push.com");
    
    // 直播流使用的域名。您可以调用 [ListDomainDetail](https//www.volcengine.com/docs/6469/1126815) 接口或在视频直播控制台的[域名管理](https//console-stable.volcanicengine.com/live/main/domain/list)页面,查看直播流使用的域名。
    body.setDomain("live.example.push.com");
    
    // 应用名称,即直播流地址的 `AppName` 字段取值,支持由大小写字母(A - Z、a - z)、数字(0 - 9)、下划线(_)、短横线(-)和句点(.)组成,长度为 1 到 30 个字符。
    body.setApp("Live");
    
    // 流名称,即直播流地址的 `StreamName` 字段取值,支持由大小写字母(A - Z、a - z)、数字(0 - 9)、字母、下划线(_)、短横线(-)和句点(.)组成,长度为 1 到 100 个字符。
    body.setStream("livestream001");
    
    // 待录制直播流的拉流地址。
    body.setStreamURL("http://live.example.pull.com/Live/livestream001.flv");
    
    // 录制的开始时间,RFC3339 格式的时间戳,精度为秒。
    body.setStartTime("2023-06-30T15:04:05+08:00");
    
    // 录制的结束时间,RFC3339 格式的时间戳,精度为秒。
    body.setEndTime("2023-06-30T15:05:05+08:00");

    try {
      CreatePullRecordTaskRes resp = service.createPullRecordTask(body);
      System.out.println(resp);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

停止直播录制任务

您可以调用 StopPullRecordTask 接口停止直播录制任务。详细的参数说明可参见 StopPullRecordTask 接口文档。

接口调用示例如下所示。

package com.volcengine.live.demo;
import com.volcengine.model.live.v20230101.StopPullRecordTaskBody;
import com.volcengine.model.live.v20230101.StopPullRecordTaskRes;
import com.volcengine.service.live.v20230101.LiveService;

public class StopPullRecordTaskDemo  {
  public static void main(String[] args) {
    // 强烈建议不要把 AccessKey ID 和 AccessKey Secret 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。
    // 本示例通过从环境变量中读取 AccessKey ID 和 AccessKey Secret,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 ACCESS_KEY_ID 和 ACCESS KEY_SECRET
    LiveService service = LiveService.getInstance();

    service.setAccessKey(System.getenv("ACCESS_KEY_ID"));

    service.setSecretKey(System.getenv("ACCESS_KEY_SECRET"));

    StopPullRecordTaskBody body = new StopPullRecordTaskBody();
     
    // 任务 ID,录制任务的唯一标识。您可以调用 [ListPullRecordTask](https//www.volcengine.com/docs/6469/1111480) 接口查看直播录制任务的任务 ID。
    body.setTaskId("f831f3b0********1aa4dcf7621");

    try {
      StopPullRecordTaskRes resp = service.stopPullRecordTask(body);
      System.out.println(resp);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

查询直播录制任务

您可以调用 ListPullRecordTask 接口查询直播录制任务。详细的参数说明可参见 ListPullRecordTask 接口文档。

接口调用示例如下所示。

package com.volcengine.live.demo;
import com.volcengine.model.live.v20230101.ListPullRecordTaskBody;
import com.volcengine.model.live.v20230101.ListPullRecordTaskRes;
import com.volcengine.service.live.v20230101.LiveService;

public class ListPullRecordTaskDemo  {
  public static void main(String[] args) {
    // 强烈建议不要把 AccessKey ID 和 AccessKey Secret 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。
    // 本示例通过从环境变量中读取 AccessKey ID 和 AccessKey Secret,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 ACCESS_KEY_ID 和 ACCESS KEY_SECRET
    LiveService service = LiveService.getInstance();

    service.setAccessKey(System.getenv("ACCESS_KEY_ID"));

    service.setSecretKey(System.getenv("ACCESS_KEY_SECRET"));

    ListPullRecordTaskBody body = new ListPullRecordTaskBody();
     
    // 查询数据的页码,默认为 `1`,表示查询第一页的数据,取值范围为正整数。
    body.setPageNum(1);
    
    // 每页显示的数据条数,默认为 `20`,最大值为 500。
    body.setPageSize(5);

    try {
      ListPullRecordTaskRes resp = service.listPullRecordTask(body);
      System.out.println(resp);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

查询录制历史详情

您可以调用 DescribeRecordTaskFileHistory 接口查询录制历史详情。详细的参数说明可参见 DescribeRecordTaskFileHistory 接口文档。

接口调用示例如下所示。

package com.volcengine.live.demo;
import com.volcengine.model.live.v20230101.DescribeRecordTaskFileHistoryBody;
import com.volcengine.model.live.v20230101.DescribeRecordTaskFileHistoryRes;
import com.volcengine.service.live.v20230101.LiveService;

public class DescribeRecordTaskFileHistoryDemo  {
  public static void main(String[] args) {
    // 强烈建议不要把 AccessKey ID 和 AccessKey Secret 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。
    // 本示例通过从环境变量中读取 AccessKey ID 和 AccessKey Secret,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 ACCESS_KEY_ID 和 ACCESS KEY_SECRET
    LiveService service = LiveService.getInstance();

    service.setAccessKey(System.getenv("ACCESS_KEY_ID"));

    service.setSecretKey(System.getenv("ACCESS_KEY_SECRET"));

    DescribeRecordTaskFileHistoryBody body = new DescribeRecordTaskFileHistoryBody();
     
    // 域名空间,即直播流地址的域名所属的域名空间,默认为空表示查询所有录制历史。您可以调用 [`ListDomainDetail`](https//www.volcengine.com/docs/6469/1126815) 接口或在视频直播控制台的[域名管理](https//console-stable.volcanicengine.com/live/main/domain/list)页面,查看直播流使用的域名所属的域名空间。
    body.setVhost("push.example.com");
    
    // 应用名称,取值与直播流地址的 AppName 字段取值相同,默认为空表示查询 vhost 下的所有录制历史。支持由大小写字母(A - Z、a - z)、下划线(_)、短横线(-)和句点(.)组成,长度为 1 到 30 个字符。
    body.setApp("live");
    
    // 流名称,取值与直播流地址的 StreamName 字段取值相同,默认为空表示查询 App 下的所有录制历史。支持由大小写字母(A - Z、a - z)、下划线(_)、短横线(-)和句点(.)组成,长度为 1 到 100 个字符。
    // note:
    // 如果指定 `Stream`,必须同时指定 `App` 的值。
    body.setStream("stream-123");
    
    // 开始录制时间,RFC3339 格式的时间字符串,精度为秒。当您查询指定录制任务详情时,DateFrom 应设置为开始时间之前的任意时间。
    body.setDateFrom("2023-11-01T00:00:00+08:00");
    
    // 结束录制时间,结束时间需晚于 `DateFrom`,且与 `DateFrom` 间隔不超过 7天,RFC3339 格式的时间字符串,精度为秒。
    body.setDateTo("2023-11-07T23:59:59+08:00");
    
    // 查询数据的页码,默认为 1,表示查询第一页的数据,取值范围为正整数。
    body.setPageNum(1);
    
    // 每页显示的数据条数,取值范围为正整数。
    body.setPageSize(30);
    
    // 录制文件保存位置,支持的取值及含义如下所示。
    // <li> `tos`:存储到 TOS(默认值); </li>
    // <li> `vod`:存储到 VOD。 </li>
    body.setType("tos");

    try {
      DescribeRecordTaskFileHistoryRes resp = service.describeRecordTaskFileHistory(body);
      System.out.println(resp);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

查询单个直播录制任务

您可以调用 GetPullRecordTask 接口查询单个直播录制任务。详细的参数说明可参见 GetPullRecordTask 接口文档。

接口调用示例如下所示。

package com.volcengine.live.demo;
import com.volcengine.model.live.v20230101.GetPullRecordTaskBody;
import com.volcengine.model.live.v20230101.GetPullRecordTaskRes;
import com.volcengine.service.live.v20230101.LiveService;

public class GetPullRecordTaskDemo  {
  public static void main(String[] args) {
    // 强烈建议不要把 AccessKey ID 和 AccessKey Secret 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。
    // 本示例通过从环境变量中读取 AccessKey ID 和 AccessKey Secret,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 ACCESS_KEY_ID 和 ACCESS KEY_SECRET
    LiveService service = LiveService.getInstance();

    service.setAccessKey(System.getenv("ACCESS_KEY_ID"));

    service.setSecretKey(System.getenv("ACCESS_KEY_SECRET"));

    GetPullRecordTaskBody body = new GetPullRecordTaskBody();
     
    // 任务 ID,录制任务的唯一标识。您可以调用 [ListPullRecordTask](https//www.volcengine.com/docs/6469/1111480) 获取任务 ID。
    body.setTaskID("5b903f78c7f5ae*******01f6fe2eea");

    try {
      GetPullRecordTaskRes resp = service.getPullRecordTask(body);
      System.out.println(resp);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

创建录制索引文件

您可以调用 CreateLiveStreamRecordIndexFiles 接口创建录制索引文件。详细的参数说明可参见 CreateLiveStreamRecordIndexFiles 接口文档。

接口调用示例如下所示。

package com.volcengine.live.demo;
import com.volcengine.model.live.v20230101.CreateLiveStreamRecordIndexFilesBody;
import com.volcengine.model.live.v20230101.CreateLiveStreamRecordIndexFilesRes;
import com.volcengine.service.live.v20230101.LiveService;

public class CreateLiveStreamRecordIndexFilesDemo  {
  public static void main(String[] args) {
    // 强烈建议不要把 AccessKey ID 和 AccessKey Secret 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。
    // 本示例通过从环境变量中读取 AccessKey ID 和 AccessKey Secret,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 ACCESS_KEY_ID 和 ACCESS KEY_SECRET
    LiveService service = LiveService.getInstance();

    service.setAccessKey(System.getenv("ACCESS_KEY_ID"));

    service.setSecretKey(System.getenv("ACCESS_KEY_SECRET"));

    CreateLiveStreamRecordIndexFilesBody body = new CreateLiveStreamRecordIndexFilesBody();
     
    // 直播流使用的域名。您可以调用 [ListDomainDetail](https//www.volcengine.com/docs/6469/1126815) 接口或在视频直播控制台的[域名管理](https//console-stable.volcanicengine.com/live/main/domain/list)页面,查看直播流使用的域名。
    body.setDomain("live.example.push.com");
    
    // 应用名称,取值与直播流地址中 AppName 字段取值相同。支持由大小写字母(A - Z、a - z)、下划线(_)、短横线(-)和句点(.)组成,长度为 1 到 30 个字符。
    body.setApp("Live");
    
    // 流名称,取值与直播流地址中 StreamName 字段取值相同。支持由大小写字母(A - Z、a - z)、下划线(_)、短横线(-)和句点(.)组成,长度为 1 到 100 个字符。
    body.setStream("livestream001");
    
    // 录制索引文件的开始时间,RFC3339 格式的时间戳,精度为秒。
    body.setStartTime("2023-06-30T15:04:05+08:00");
    
    // 录制索引文件的结束时间,RFC3339 格式的时间戳,精度为秒。
    body.setEndTime("2023-06-30T15:04:05+08:00");
    
    // 将录制文件存储到 TOS 时的 Bucket,默认为空,表示与对应录制配置中的 TOS 存储配置一致。
    body.setOutputBucket("testBucket");
    
    // 将录制文件存储到 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>
    body.setOutputObject("record/{PubDomain}/{App}/{Stream}/{StartTime}_{EndTime}");
    
    // 是否开启获取录制视频宽高数据的功能,开启后会获取视频宽和高信息,支持的取值及含义如下所示,默认不传时表示开启。
    // <li> `true`:开启; </li>
    // <li> `false`:禁用。 </li>
    body.setNeedFFProbe(true);
    
    // 将录制文件存储到点播时,是否开启索引文件与 TS 文件分离,默认禁用。
    // <li> `true`:启用,删除索引文件时不会删除关联的 TS 文件; </li>
    // <li> `false`:禁用,删除索引文件时会删除关联的 TS 文件。 </li>
    body.setSeparatedTS(true);
    
    // 将录制文件存储到点播时,如需进行视频处理,可选择已定义的视频处理工作流模板,获取方法请参见[工作流模板](https//www.volcengine.com/docs/4/65675),默认为空。
    body.setWorkflowID("25524a2d*********891d7daf4b9");
    
    // 指定访问录制文件的地址中的网络协议,取值及含义如下所示。
    // <li> `http`:超文本传输协议(默认值); </li>
    // <li> `https`:安全的超文本传输协议。 </li>
    body.setTSScheme("http");

    try {
      CreateLiveStreamRecordIndexFilesRes resp = service.createLiveStreamRecordIndexFiles(body);
      System.out.println(resp);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}