You need to enable JavaScript to run this app.
导航
云端混流
最近更新时间:2025.02.18 11:12:48首次发布时间:2025.02.18 11:12:48

阅读本文,您可以获取 Java SDK 云端混流的接口调用示例,实现快速开发。

说明

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

调用说明

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

前提条件

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

调用示例

本节为您介绍云端混流相关接口的功能和调用示例。

CreateCloudMixTask - 创建云端混流任务

您可以调用 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 接口结束云端混流任务。详细的参数说明可参见 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 接口更新云端混流任务。详细的参数说明可参见 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 接口查看云端混流任务列表。详细的参数说明可参见 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 接口查看云端混流任务。详细的参数说明可参见 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();
    }
  }
}