阅读本文,您可以获取 Java SDK 云端混流的接口调用示例,实现快速开发。
说明
本文的调用示例包含接口的部分参数。由于参数间可能存在互斥关系,在调用时,请您参考注释,进行调整。
调用接口前,请先完成 Java SDK 的安装及初始化操作。
本节为您介绍云端混流相关接口的功能和调用示例。
您可以调用 CreateCloudMixTask 接口创建云端混流任务。详细的参数说明可参见 CreateCloudMixTask 接口文档。
接口调用示例如下所示。
package com.volcengine.live.demo; import com.volcengine.model.live.v20230101.*; import com.volcengine.service.live.v20230101.LiveService; import java.util.ArrayList; import java.util.List; public class CreateCloudMixTaskDemo { public static void main(String[] args) { // 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY LiveService service = LiveService.getInstance(); service.setAccessKey(System.getenv("VOLC_ACCESSKEY")); service.setSecretKey(System.getenv("VOLC_SECRETKEY")); CreateCloudMixTaskBody body = new CreateCloudMixTaskBody(); // 混流任务名称,与正在进行中的任务名称不能重复。 body.setName("mixtask001"); // 混流任务详细配置。 CreateCloudMixTaskBodyMixedRules MixedRules = new CreateCloudMixTaskBodyMixedRules(); // 混流输出布局配置。 CreateCloudMixTaskBodyMixedRulesInputLayout InputLayout = new CreateCloudMixTaskBodyMixedRulesInputLayout(); // 混流输出画布配置及素材布局配置。 CreateCloudMixTaskBodyMixedRulesInputLayoutScene Scene = new CreateCloudMixTaskBodyMixedRulesInputLayoutScene(); // 混流素材在混流输出整体画面中的布局配置。 // note: // 混流素材布局中需包含所有素材的配置,且需与通过 Layer 参数与混流素材一一匹配。 List<CreateCloudMixTaskBodyMixedRulesInputLayoutSceneLayoutItem> Layout = new ArrayList<>(); CreateCloudMixTaskBodyMixedRulesInputLayoutSceneLayoutItem Layout1 = new CreateCloudMixTaskBodyMixedRulesInputLayoutSceneLayoutItem(); Layout.add(Layout1); Scene.setLayout(Layout); InputLayout.setScene(Scene); // 混流输出视频中 Logo 布局配置。 // note: // 支持最多配置 4 个 Logo,展示层级以添加顺序为准。 List<CreateCloudMixTaskBodyMixedRulesInputLayoutLogoItem> Logo = new ArrayList<>(); CreateCloudMixTaskBodyMixedRulesInputLayoutLogoItem Logo1 = new CreateCloudMixTaskBodyMixedRulesInputLayoutLogoItem(); // Logo 图片在混流输出整体画面中的布局配置。 CreateCloudMixTaskBodyMixedRulesInputLayoutLogoItemLayout Layout2 = new CreateCloudMixTaskBodyMixedRulesInputLayoutLogoItemLayout(); Logo1.setLayout(Layout2); // Logo 图片访问地址。 Logo1.setUrl("http://tos.example.org/obj/test/logo001.png"); Logo.add(Logo1); InputLayout.setLogo(Logo); MixedRules.setInputLayout(InputLayout); // 混流输出视频质量参数配置。 CreateCloudMixTaskBodyMixedRulesOutput Output = new CreateCloudMixTaskBodyMixedRulesOutput(); // 混流音频参数设置。 CreateCloudMixTaskBodyMixedRulesOutputAudio Audio = new CreateCloudMixTaskBodyMixedRulesOutputAudio(); // 混流输出流的音频声道设置,取值及含义如下所示。 // <li> mono:单声道; </li> // <li> stereo:立体声。 </li> Audio.setChannelLayout("stereo"); Output.setAudio(Audio); // 混流视频的推流地址,支持最多配置 8 个推流地址。 List<String> Url = new ArrayList<>(); Url.add("push.example.com"); Url.add("push2.example.com"); Output.setUrl(Url); // 混流视频参数设置。 CreateCloudMixTaskBodyMixedRulesOutputVideo Video = new CreateCloudMixTaskBodyMixedRulesOutputVideo(); // 混流输出视频编码格式,支持的取值及含义如下所示。 // <li> h264:使用 H.264 编码格式; </li> // <li> h265:使用 H.265 编码格式。 </li> Video.setCodec("h264"); Output.setVideo(Video); // 任务状态回调地址配置。 CreateCloudMixTaskBodyMixedRulesOutputCallback Callback = new CreateCloudMixTaskBodyMixedRulesOutputCallback(); // 接收云端混流任务状态回调的 HTTP 地址。 Callback.setUrl("https://callback.com"); Output.setCallback(Callback); MixedRules.setOutput(Output); // 混流素材列表,最多支持配置 8 路素材。 List<CreateCloudMixTaskBodyMixedRulesInputSourceItem> InputSource = new ArrayList<>(); CreateCloudMixTaskBodyMixedRulesInputSourceItem InputSource1 = new CreateCloudMixTaskBodyMixedRulesInputSourceItem(); // 混流素材 ID,一个任务中素材 ID 不能重复,此 ID 用于任务状态回调消息中标识素材。 InputSource1.setID("1"); // 混流素材类型,支持的取值及含义如下所示。 // <li> vod:视频点播中的素材,支持 MP4、FLV 格式素材; </li> // <li> live:直播源素材,支持 RTMP、FLV 协议拉流地址; </li> // <li> pic:图片素材,支持 png、jpg 格式图片。 </li> InputSource1.setType("vod"); // 混流素材的访问地址。 // note: // 混流素材的访问地址需与混流素材的类型保持对应关系。 InputSource1.setUrl("https://tos.example.org/obj/test.mp4"); InputSource.add(InputSource1); MixedRules.setInputSource(InputSource); body.setMixedRules(MixedRules); try { CreateCloudMixTaskRes resp = service.createCloudMixTask(body); System.out.println(resp); } catch (Exception e) { e.printStackTrace(); } } }
您可以调用 DeleteCloudMixTask 接口结束云端混流任务。详细的参数说明可参见 DeleteCloudMixTask 接口文档。
接口调用示例如下所示。
package com.volcengine.live.demo; import com.volcengine.model.live.v20230101.*; import com.volcengine.service.live.v20230101.LiveService; public class DeleteCloudMixTaskDemo { public static void main(String[] args) { // 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY LiveService service = LiveService.getInstance(); service.setAccessKey(System.getenv("VOLC_ACCESSKEY")); service.setSecretKey(System.getenv("VOLC_SECRETKEY")); DeleteCloudMixTaskBody body = new DeleteCloudMixTaskBody(); // 混流任务 ID,您可以通过 [ListCloudMixTask](https://www.volcengine.com/docs/6469/1271157) 接口获取待结束的混流任务 ID。 body.setTaskID("3b1a7bb73ab6b06c"); try { DeleteCloudMixTaskRes resp = service.deleteCloudMixTask(body); System.out.println(resp); } catch (Exception e) { e.printStackTrace(); } } }
您可以调用 UpdateCloudMixTask 接口更新云端混流任务。详细的参数说明可参见 UpdateCloudMixTask 接口文档。
接口调用示例如下所示。
package com.volcengine.live.demo; import com.volcengine.model.live.v20230101.*; import com.volcengine.service.live.v20230101.LiveService; import java.util.ArrayList; import java.util.List; public class UpdateCloudMixTaskDemo { public static void main(String[] args) { // 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY LiveService service = LiveService.getInstance(); service.setAccessKey(System.getenv("VOLC_ACCESSKEY")); service.setSecretKey(System.getenv("VOLC_SECRETKEY")); UpdateCloudMixTaskBody body = new UpdateCloudMixTaskBody(); // 混流任务 ID,您可以通过 [ListCloudMixTask](https://www.volcengine.com/docs/6469/1271157) 接口获取运行中的混流任务 ID。 body.setTaskID("3b1a7bb73ab6b06c"); // 混流任务详细配置。 UpdateCloudMixTaskBodyMixedRules MixedRules = new UpdateCloudMixTaskBodyMixedRules(); // 混流输出布局配置。 UpdateCloudMixTaskBodyMixedRulesInputLayout InputLayout = new UpdateCloudMixTaskBodyMixedRulesInputLayout(); // 混流输出画布配置和素材布局配置。 UpdateCloudMixTaskBodyMixedRulesInputLayoutScene Scene = new UpdateCloudMixTaskBodyMixedRulesInputLayoutScene(); // 混流素材在混流输出整体画面中的布局配置。 // note: // 混流素材布局中需包含所有素材的配置,且需与通过 Layer 参数与混流素材一一匹配。 List<UpdateCloudMixTaskBodyMixedRulesInputLayoutSceneLayoutItem> Layout = new ArrayList<>(); UpdateCloudMixTaskBodyMixedRulesInputLayoutSceneLayoutItem Layout1 = new UpdateCloudMixTaskBodyMixedRulesInputLayoutSceneLayoutItem(); Layout.add(Layout1); Scene.setLayout(Layout); InputLayout.setScene(Scene); // 混流输出视频中 Logo 布局配置。 // note: // 支持最多配置 4 个 Logo,展示层级以添加顺序为准。 List<UpdateCloudMixTaskBodyMixedRulesInputLayoutLogoItem> Logo = new ArrayList<>(); UpdateCloudMixTaskBodyMixedRulesInputLayoutLogoItem Logo1 = new UpdateCloudMixTaskBodyMixedRulesInputLayoutLogoItem(); // Logo 图片在混流输出整体画面中的布局配置。 UpdateCloudMixTaskBodyMixedRulesInputLayoutLogoItemLayout Layout2 = new UpdateCloudMixTaskBodyMixedRulesInputLayoutLogoItemLayout(); Logo1.setLayout(Layout2); // Logo 图片访问地址。 Logo1.setUrl("http://tos.example.org/obj/test/logo001.png"); Logo.add(Logo1); InputLayout.setLogo(Logo); MixedRules.setInputLayout(InputLayout); // 混流输出流参数配置。 // warning // 更新云端混流任务时,Output 参数不支持变更,且必须传入与原混流任务一致的配置。 UpdateCloudMixTaskBodyMixedRulesOutput Output = new UpdateCloudMixTaskBodyMixedRulesOutput(); // 混流声音参数设置。 UpdateCloudMixTaskBodyMixedRulesOutputAudio Audio = new UpdateCloudMixTaskBodyMixedRulesOutputAudio(); // 混流输出流的音频声道设置,取值及含义如下所示。 // <li> mono:单声道; </li> // <li> stereo:立体声。 </li> Audio.setChannelLayout("stereo"); Output.setAudio(Audio); // 混流视频的推流地址。 List<String> Url = new ArrayList<>(); Url.add("push.example.com"); Url.add("push2.example.com"); Output.setUrl(Url); // 混流画面参数设置。 UpdateCloudMixTaskBodyMixedRulesOutputVideo Video = new UpdateCloudMixTaskBodyMixedRulesOutputVideo(); // 混流输出视频编码格式,支持的取值及含义如下所示。 // <li> h264:使用 H.264 编码格式; </li> // <li> h265:使用 H.265 编码格式。 </li> Video.setCodec("h264"); Output.setVideo(Video); MixedRules.setOutput(Output); // 混流素材列表,最多支持配置 8 路输入源。 List<UpdateCloudMixTaskBodyMixedRulesInputSourceItem> InputSource = new ArrayList<>(); UpdateCloudMixTaskBodyMixedRulesInputSourceItem InputSource1 = new UpdateCloudMixTaskBodyMixedRulesInputSourceItem(); // 混流素材 ID,一个任务中素材 ID 不能重复,此 ID 用于任务状态回调消息中标识素材。 InputSource1.setID("1"); // 混流素材类型,支持的取值及含义如下所示。 // <li> vod:视频点播中的素材,支持 MP4、FLV 格式素材; </li> // <li> live:直播源素材,支持 RTMP、FLV 协议拉流地址; </li> // <li> pic:图片素材,支持 png、jpg 格式图片。 </li> InputSource1.setType("vod"); // 混流素材访问地址。 InputSource1.setUrl("https://tos.example.org/obj/test.mp4"); InputSource.add(InputSource1); MixedRules.setInputSource(InputSource); body.setMixedRules(MixedRules); try { UpdateCloudMixTaskRes resp = service.updateCloudMixTask(body); System.out.println(resp); } catch (Exception e) { e.printStackTrace(); } } }
您可以调用 ListCloudMixTask 接口查看云端混流任务列表。详细的参数说明可参见 ListCloudMixTask 接口文档。
接口调用示例如下所示。
package com.volcengine.live.demo; import com.volcengine.model.live.v20230101.*; import com.volcengine.service.live.v20230101.LiveService; public class ListCloudMixTaskDemo { public static void main(String[] args) { // 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY LiveService service = LiveService.getInstance(); service.setAccessKey(System.getenv("VOLC_ACCESSKEY")); service.setSecretKey(System.getenv("VOLC_SECRETKEY")); ListCloudMixTaskBody body = new ListCloudMixTaskBody(); try { ListCloudMixTaskRes resp = service.listCloudMixTask(body); System.out.println(resp); } catch (Exception e) { e.printStackTrace(); } } }
您可以调用 GetCloudMixTaskDetail 接口查看云端混流任务。详细的参数说明可参见 GetCloudMixTaskDetail 接口文档。
接口调用示例如下所示。
package com.volcengine.live.demo; import com.volcengine.model.live.v20230101.*; import com.volcengine.service.live.v20230101.LiveService; public class GetCloudMixTaskDetailDemo { public static void main(String[] args) { // 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。 // 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY LiveService service = LiveService.getInstance(); service.setAccessKey(System.getenv("VOLC_ACCESSKEY")); service.setSecretKey(System.getenv("VOLC_SECRETKEY")); GetCloudMixTaskDetailBody body = new GetCloudMixTaskDetailBody(); // 混流任务 ID,您可以通过 [ListCloudMixTask](https://www.volcengine.com/docs/6469/1271157) 接口获取混流任务 ID。 body.setTaskID("086b7972234d7b71"); try { GetCloudMixTaskDetailRes resp = service.getCloudMixTaskDetail(body); System.out.println(resp); } catch (Exception e) { e.printStackTrace(); } } }