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

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

说明

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

调用说明

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

前提条件

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

调用示例

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

创建云端混流任务

您可以调用 CreateCloudMixTask 接口创建云端混流任务。详细的参数说明可参见 CreateCloudMixTask 接口文档。

接口调用示例如下所示。

# coding:utf-8
import os

from volcengine.live.v20230101.live_service import LiveService

if __name__ == "__main__":
    # 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。
    # 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY
    service.set_ak(os.environ["VOLC_ACCESSKEY"])
    service.set_sk(os.environ["VOLC_SECRETKEY"])
    body = {
        # 混流任务名称,与正在进行中的任务名称不能重复。
        "Name": "mixtask001",
        # 混流任务详细配置。
        "MixedRules": {
            # 混流输出布局配置。
            "InputLayout": {
                # 混流输出画布配置及素材布局配置。
                "Scene": {
                    # 混流输出整体画布高度,单位为 px,取值范围为 [10,2160]。
                    "Height": 1080,
                    # 混流输出画布整体宽度,单位为 px,取值范围为 [10,2160]。
                    "Width": 1920,
                    # 混流素材在混流输出整体画面中的布局配置。
                    # note:
                    # 混流素材布局中需包含所有素材的配置,且需与通过 Layer 参数与混流素材一一匹配。
                    "Layout": [
                        {
                            # 当前素材或 Logo 图片在输出画面中相对画面左上角的 X 偏移位置,单位为 px,取值范围为 0 到设置的画面宽度。
                            "X": 0,
                            # 当前素材或 Logo 图片在输出画面中相对画面左上角的 Y 偏移位置,单位为 px,取值范围为 0 到设置的画面高度。
                            "Y": 0,
                            # 当前素材或 Logo 图片在混流输出画面中的限制宽度,单位为 px,取值范围为 [10,2160]。
                            "W": 960,
                            # 当前素材或 Logo 图片在混流输出画面中的限制高度,单位为 px,取值范围为 [10,2160]。
                            # note:
                            # 限制宽度和限制高度指定了素材展示的限制范围,当素材尺寸和限制值不一致时,素材将在限制范围内根据长边进行等比缩放,其余区域透明展示。
                            "H": 540,
                            # 当配置素材布局时需要通过 Layer 参数与素材进行一一对应。
                            # note:
                            # 配置 Logo 图片的布局时此参数不生效。
                            "Layer": 1,
                        }
                    ],
                },
                # 混流输出视频中 Logo 布局配置。
                # note:
                # 支持最多配置 4 个 Logo,展示层级以添加顺序为准。
                "Logo": [
                    {
                        # Logo 图片在混流输出整体画面中的布局配置。
                        "Layout": {
                            "X": 0,
                            "Y": 0,
                            "W": 200,
                            "H": 200,
                        },
                        # Logo 图片访问地址。
                        "Url": "http://tos.example.org/obj/test/logo001.png",
                    }
                ],
            },
            # 混流输出视频质量参数配置。
            "Output": {
                # 混流音频参数设置。
                "Audio": {
                    # 混流输出流的音频码率,单位为 bps,取值范围为 [128000,320000],常见取值及含义如下所示。
                    # <li> 128000:128 kbps; </li>
                    # <li> 144000:144 kbps; </li>
                    # <li> 256000:256 kbps; </li>
                    # <li> 320000:320 kbps。 </li>
                    "BitRate": 320000,
                    # 混流输出流的音频声道设置,取值及含义如下所示。
                    # <li> mono:单声道; </li>
                    # <li> stereo:立体声。 </li>
                    "ChannelLayout": "stereo",
                    # 混流输出流的音频采样率,单位为 HZ,常见取值及含义如下所示。
                    # <li> 32000:32 kHZ; </li>
                    # <li> 44100:44.1 kHZ; </li>
                    # <li> 48000:48 kHZ。 </li>
                    "SampleRate": 48000,
                },
                # 混流视频的推流地址,支持最多配置 8 个推流地址。
                "Url": ["push.example.com", "push2.example.com"],
                # 混流视频参数设置。
                "Video": {
                    # 混流输出视频码率,单位为 bps,取值范围为 [1000000,20000000],输入值小于或大于取值范围时会进行自动修正至最小值和最大值。
                    "BitRate": 8000000,
                    # 混流输出视频帧率,单位为 fps,取值范围为 [10,60],输入值小于或大于取值范围时会进行自动修正至最小值和最大值。
                    "FrameRate": 30,
                    # IDR 帧之间的最大间隔时间,单位为秒,取值范围为 [1,10]。
                    "GOP": 2,
                    # 混流输出视频编码格式,支持的取值及含义如下所示。
                    # <li> h264:使用 H.264 编码格式; </li>
                    # <li> h265:使用 H.265 编码格式。 </li>
                    "Codec": "h264",
                },
                # 任务状态回调地址配置。
                "Callback": {
                    # 接收云端混流任务状态回调的 HTTP 地址。
                    "Url": "https://callback.com",
                },
            },
            # 混流素材列表,最多支持配置 8 路素材。
            "InputSource": [
                {
                    # 混流素材 ID,一个任务中素材 ID 不能重复,此 ID 用于任务状态回调消息中标识素材。
                    "ID": "1",
                    # 混流素材的叠放顺序,1 为最底层,2 层在 1 层之上,以此类推,取值范围为[1,9999]。
                    # note:
                    # 当前准备使用某个素材作为布局背景时,其叠放顺序应设置为所有素材中的最小值。
                    "Layer": 1,
                    # 混流素材类型,支持的取值及含义如下所示。
                    # <li> vod:视频点播中的素材,支持 MP4、FLV 格式素材; </li>
                    # <li> live:直播源素材,支持 RTMP、FLV 协议拉流地址; </li>
                    # <li> pic:图片素材,支持 png、jpg 格式图片。 </li>
                    "Type": "vod",
                    # 混流素材的访问地址。
                    # note:
                    # 混流素材的访问地址需与混流素材的类型保持对应关系。
                    "Url": "https://tos.example.org/obj/test.mp4",
                }
            ],
        },
    }

    resp = service.create_cloud_mix_task(body)
    print(resp)

结束云端混流任务

您可以调用 DeleteCloudMixTask 接口结束云端混流任务。详细的参数说明可参见 DeleteCloudMixTask 接口文档。

接口调用示例如下所示。

# coding:utf-8
import os

from volcengine.live.v20230101.live_service import LiveService

if __name__ == "__main__":
    # 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。
    # 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY
    service.set_ak(os.environ["VOLC_ACCESSKEY"])
    service.set_sk(os.environ["VOLC_SECRETKEY"])
    body = {
        # 混流任务 ID,您可以通过 [ListCloudMixTask](https://www.volcengine.com/docs/6469/1271157) 接口获取待结束的混流任务 ID。
        "TaskID": "3b1a7bb73ab6b06c",
    }

    resp = service.delete_cloud_mix_task(body)
    print(resp)

更新云端混流任务

您可以调用 UpdateCloudMixTask 接口更新云端混流任务。详细的参数说明可参见 UpdateCloudMixTask 接口文档。

接口调用示例如下所示。

# coding:utf-8
import os

from volcengine.live.v20230101.live_service import LiveService

if __name__ == "__main__":
    # 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。
    # 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY
    service.set_ak(os.environ["VOLC_ACCESSKEY"])
    service.set_sk(os.environ["VOLC_SECRETKEY"])
    body = {
        # 混流任务 ID,您可以通过 [ListCloudMixTask](https://www.volcengine.com/docs/6469/1271157) 接口获取运行中的混流任务 ID。
        "TaskID": "3b1a7bb73ab6b06c",
        # 混流任务详细配置。
        "MixedRules": {
            # 混流输出布局配置。
            "InputLayout": {
                # 混流输出画布配置和素材布局配置。
                "Scene": {
                    # 混流输出整体画布高度,单位为 px,取值范围为 [10,2160]。
                    "Height": 1080,
                    # 混流输出画布整体宽度,单位为 px,取值范围为 [10,2160]。
                    "Width": 1920,
                    # 混流素材在混流输出整体画面中的布局配置。
                    # note:
                    # 混流素材布局中需包含所有素材的配置,且需与通过 Layer 参数与混流素材一一匹配。
                    "Layout": [
                        {
                            # 当前素材或 Logo 图片在输出画面中相对画面左上角的 X 偏移位置,单位为 px,取值范围为 0 到设置的画面宽度。
                            "X": 0,
                            # 当前素材或 Logo 图片在输出画面中相对画面左上角的 Y 偏移位置,单位为 px,取值范围为 0 到设置的画面高度。
                            "Y": 0,
                            # 当前素材或 Logo 图片在混流输出画面中的限制宽度,单位为 px,取值范围为 [10,2160]。
                            "W": 960,
                            # 当前素材或 Logo 图片在混流输出画面中的限制高度,单位为 px,取值范围为 [10,2160]。
                            # note:
                            # 限制宽度和限制高度指定了素材展示的限制范围,当素材尺寸和限制值不一致时,素材将在限制范围内根据长边进行等比缩放,其余区域透明展示。
                            "H": 540,
                            # 当配置素材布局时需要通过 Layer 参数与素材进行一一对应。
                            # note:
                            # 配置 Logo 图片的布局时此参数不生效。
                            "Layer": 1,
                        }
                    ],
                },
                # 混流输出视频中 Logo 布局配置。
                # note:
                # 支持最多配置 4 个 Logo,展示层级以添加顺序为准。
                "Logo": [
                    {
                        # Logo 图片在混流输出整体画面中的布局配置。
                        "Layout": {
                            "X": 0,
                            "Y": 0,
                            "W": 200,
                            "H": 200,
                        },
                        # Logo 图片访问地址。
                        "Url": "http://tos.example.org/obj/test/logo001.png",
                    }
                ],
            },
            # 混流输出流参数配置。
            # warning:
            # 更新云端混流任务时,Output 参数不支持变更,且必须传入与原混流任务一致的配置。
            "Output": {
                # 混流声音参数设置。
                "Audio": {
                    # 混流输出流的音频码率,单位为 bps,取值范围为 [128000,320000],常见取值及含义如下所示。
                    # <li> 128000:128 kbps; </li>
                    # <li> 144000:144 kbps; </li>
                    # <li> 256000:256 kbps; </li>
                    # <li> 320000:320 kbps。 </li>
                    "BitRate": 320000,
                    # 混流输出流的音频声道设置,取值及含义如下所示。
                    # <li> mono:单声道; </li>
                    # <li> stereo:立体声。 </li>
                    "ChannelLayout": "stereo",
                    # 混流输出流的音频采样率,单位为 HZ,常见取值及含义如下所示。
                    # <li> 32000:32 kHZ; </li>
                    # <li> 44100:44.1 kHZ; </li>
                    # <li> 48000:48 kHZ。 </li>
                    "SampleRate": 48000,
                },
                # 混流视频的推流地址。
                "Url": ["push.example.com", "push2.example.com"],
                # 混流画面参数设置。
                "Video": {
                    # 混流输出视频码率,单位为 bps,取值范围为 [1000000,20000000],输入值小于或大于取值范围时会进行自动修正至最小值和最大值。
                    "BitRate": 8000000,
                    # 混流输出视频帧率,单位为 fps,取值范围为 [10,60],输入值小于或大于取值范围时会进行自动修正至最小值和最大值。
                    "FrameRate": 30,
                    # IDR 帧之间的最大间隔时间,单位为秒,取值范围为 [1,10]。
                    "GOP": 2,
                    # 混流输出视频编码格式,支持的取值及含义如下所示。
                    # <li> h264:使用 H.264 编码格式; </li>
                    # <li> h265:使用 H.265 编码格式。 </li>
                    "Codec": "h264",
                },
            },
            # 混流素材列表,最多支持配置 8 路输入源。
            "InputSource": [
                {
                    # 混流素材 ID,一个任务中素材 ID 不能重复,此 ID 用于任务状态回调消息中标识素材。
                    "ID": "1",
                    # 混流素材的叠放顺序,1 为最底层,2 层在 1 层之上,以此类推,取值范围为[1,9999]。
                    # note:
                    # 当前准备使用某个素材作为布局背景时,其叠放顺序应设置为所有素材中的最小值。
                    "Layer": 1,
                    # 混流素材类型,支持的取值及含义如下所示。
                    # <li> vod:视频点播中的素材,支持 MP4、FLV 格式素材; </li>
                    # <li> live:直播源素材,支持 RTMP、FLV 协议拉流地址; </li>
                    # <li> pic:图片素材,支持 png、jpg 格式图片。 </li>
                    "Type": "vod",
                    # 混流素材访问地址。
                    "Url": "https://tos.example.org/obj/test.mp4",
                }
            ],
        },
    }

    resp = service.update_cloud_mix_task(body)
    print(resp)

查看云端混流任务列表

您可以调用 ListCloudMixTask 接口查看云端混流任务列表。详细的参数说明可参见 ListCloudMixTask 接口文档。

接口调用示例如下所示。

# coding:utf-8
import os

from volcengine.live.v20230101.live_service import LiveService

if __name__ == "__main__":
    # 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。
    # 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY
    service.set_ak(os.environ["VOLC_ACCESSKEY"])
    service.set_sk(os.environ["VOLC_SECRETKEY"])
    body = {
        # 每页显示的数据条数,最大值为 100。
        "PageSize": 10,
        # 查询数据的页码。
        "Page": 1,
    }

    resp = service.list_cloud_mix_task(body)
    print(resp)

查看云端混流任务

您可以调用 GetCloudMixTaskDetail 接口查看云端混流任务。详细的参数说明可参见 GetCloudMixTaskDetail 接口文档。

接口调用示例如下所示。

# coding:utf-8
import os

from volcengine.live.v20230101.live_service import LiveService

if __name__ == "__main__":
    # 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。
    # 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY
    service.set_ak(os.environ["VOLC_ACCESSKEY"])
    service.set_sk(os.environ["VOLC_SECRETKEY"])
    body = {
        # 混流任务 ID,您可以通过 [ListCloudMixTask](https://www.volcengine.com/docs/6469/1271157) 接口获取混流任务 ID。
        "TaskID": "086b7972234d7b71",
    }

    resp = service.get_cloud_mix_task_detail(body)
    print(resp)