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

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

说明

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

调用说明

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

前提条件

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

调用示例

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

CreateCloudMixTask - 创建云端混流任务

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

接口调用示例如下所示。

package main

import (
	"context"
	"fmt"
	"os"

	"github.com/volcengine/volc-sdk-golang/base"
	live "github.com/volcengine/volc-sdk-golang/service/live/v20230101"
)

func main() {
	// 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。
	// 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY
	service := live.NewInstance()
	service.SetCredential(base.Credentials{
		AccessKeyID:     os.Getenv("VOLC_ACCESSKEY"),
		SecretAccessKey: os.Getenv("VOLC_SECRETKEY"),
	})

	body := &live.CreateCloudMixTaskBody{
		// 混流任务名称,与正在进行中的任务名称不能重复。
		Name: `mixtask001`,
	}

	// 混流任务详细配置。
	MixedRules := live.CreateCloudMixTaskBodyMixedRules{}

	// 混流输出布局配置。
	InputLayout := live.CreateCloudMixTaskBodyMixedRulesInputLayout{}

	// 混流输出画布配置及素材布局配置。
	Scene := live.CreateCloudMixTaskBodyMixedRulesInputLayoutScene{}

	// 混流素材在混流输出整体画面中的布局配置。
	// note:
	// 混流素材布局中需包含所有素材的配置,且需与通过 Layer 参数与混流素材一一匹配。
	Layout1 := live.CreateCloudMixTaskBodyMixedRulesInputLayoutSceneLayoutItem{}

	Scene.Layout = append(Scene.Layout, Layout1)
	InputLayout.Scene = Scene

	// 混流输出视频中 Logo 布局配置。
	// note:
	// 支持最多配置 4 个 Logo,展示层级以添加顺序为准。
	Logo1 := live.CreateCloudMixTaskBodyMixedRulesInputLayoutLogoItem{
		// Logo 图片访问地址。
		URL: `http://tos.example.org/obj/test/logo001.png`,
	}

	// Logo 图片在混流输出整体画面中的布局配置。
	Layout1 := live.CreateCloudMixTaskBodyMixedRulesInputLayoutLogoItemLayout{}

	Logo1.Layout = Layout1

	InputLayout.Logo = append(InputLayout.Logo, &Logo1)
	MixedRules.InputLayout = InputLayout

	// 混流输出视频质量参数配置。
	Output := live.CreateCloudMixTaskBodyMixedRulesOutput{}

	// 混流音频参数设置。
	Audio := live.CreateCloudMixTaskBodyMixedRulesOutputAudio{
		// 混流输出流的音频声道设置,取值及含义如下所示。
		// <li> mono:单声道; </li>
		// <li> stereo:立体声。 </li>
		ChannelLayout: `stereo`,
	}

	Output.Audio = Audio

	// 混流视频的推流地址,支持最多配置 8 个推流地址。
	URL := []string{"push.example.com", "push2.example.com"}

	Output.URL = URL

	// 混流视频参数设置。
	Video := live.CreateCloudMixTaskBodyMixedRulesOutputVideo{
		// 混流输出视频编码格式,支持的取值及含义如下所示。
		// <li> h264:使用 H.264 编码格式; </li>
		// <li> h265:使用 H.265 编码格式。 </li>
		Codec: `h264`,
	}

	Output.Video = Video

	// 任务状态回调地址配置。
	Callback := live.CreateCloudMixTaskBodyMixedRulesOutputCallback{
		// 接收云端混流任务状态回调的 HTTP 地址。
		URL: `https://callback.com`,
	}

	Output.Callback = &Callback

	MixedRules.Output = Output

	// 混流素材列表,最多支持配置 8 路素材。
	InputSource1 := live.CreateCloudMixTaskBodyMixedRulesInputSourceItem{
		// 混流素材 ID,一个任务中素材 ID 不能重复,此 ID 用于任务状态回调消息中标识素材。
		ID: `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`,
	}

	MixedRules.InputSource = append(MixedRules.InputSource, InputSource1)
	body.MixedRules = MixedRules

	resp, err := service.CreateCloudMixTask(context.Background(), body)

	if err != nil {
		fmt.Printf("error %v", err)
	} else {
		fmt.Printf("success %+v", resp)
	}
}

DeleteCloudMixTask - 结束云端混流任务

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

接口调用示例如下所示。

package main

import (
	"context"
	"fmt"
	"os"

	"github.com/volcengine/volc-sdk-golang/base"
	live "github.com/volcengine/volc-sdk-golang/service/live/v20230101"
)

func main() {
	// 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。
	// 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY
	service := live.NewInstance()
	service.SetCredential(base.Credentials{
		AccessKeyID:     os.Getenv("VOLC_ACCESSKEY"),
		SecretAccessKey: os.Getenv("VOLC_SECRETKEY"),
	})

	body := &live.DeleteCloudMixTaskBody{
		// 混流任务 ID,您可以通过 [ListCloudMixTask](https://www.volcengine.com/docs/6469/1271157) 接口获取待结束的混流任务 ID。
		TaskID: `3b1a7bb73ab6b06c`,
	}

	resp, err := service.DeleteCloudMixTask(context.Background(), body)

	if err != nil {
		fmt.Printf("error %v", err)
	} else {
		fmt.Printf("success %+v", resp)
	}
}

UpdateCloudMixTask - 更新云端混流任务

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

接口调用示例如下所示。

package main

import (
	"context"
	"fmt"
	"os"

	"github.com/volcengine/volc-sdk-golang/base"
	live "github.com/volcengine/volc-sdk-golang/service/live/v20230101"
)

func StringPtr(v string) *string {
	return &v
}

func main() {
	// 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。
	// 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY
	service := live.NewInstance()
	service.SetCredential(base.Credentials{
		AccessKeyID:     os.Getenv("VOLC_ACCESSKEY"),
		SecretAccessKey: os.Getenv("VOLC_SECRETKEY"),
	})

	body := &live.UpdateCloudMixTaskBody{
		// 混流任务 ID,您可以通过 [ListCloudMixTask](https://www.volcengine.com/docs/6469/1271157) 接口获取运行中的混流任务 ID。
		TaskID: `3b1a7bb73ab6b06c`,
	}

	// 混流任务详细配置。
	MixedRules := live.UpdateCloudMixTaskBodyMixedRules{}

	// 混流输出布局配置。
	InputLayout := live.UpdateCloudMixTaskBodyMixedRulesInputLayout{}

	// 混流输出画布配置和素材布局配置。
	Scene := live.UpdateCloudMixTaskBodyMixedRulesInputLayoutScene{}

	// 混流素材在混流输出整体画面中的布局配置。
	// note:
	// 混流素材布局中需包含所有素材的配置,且需与通过 Layer 参数与混流素材一一匹配。
	Layout1 := live.UpdateCloudMixTaskBodyMixedRulesInputLayoutSceneLayoutItem{}

	Scene.Layout = append(Scene.Layout, Layout1)
	InputLayout.Scene = Scene

	// 混流输出视频中 Logo 布局配置。
	// note:
	// 支持最多配置 4 个 Logo,展示层级以添加顺序为准。
	Logo1 := live.UpdateCloudMixTaskBodyMixedRulesInputLayoutLogoItem{
		// Logo 图片访问地址。
		URL: StringPtr(`http://tos.example.org/obj/test/logo001.png`),
	}

	// Logo 图片在混流输出整体画面中的布局配置。
	Layout1 := live.UpdateCloudMixTaskBodyMixedRulesInputLayoutLogoItemLayout{}

	Logo1.Layout = &Layout1

	InputLayout.Logo = append(InputLayout.Logo, &Logo1)
	MixedRules.InputLayout = InputLayout

	// 混流输出流参数配置。
	// warning
	// 更新云端混流任务时,Output 参数不支持变更,且必须传入与原混流任务一致的配置。
	Output := live.UpdateCloudMixTaskBodyMixedRulesOutput{}

	// 混流声音参数设置。
	Audio := live.UpdateCloudMixTaskBodyMixedRulesOutputAudio{
		// 混流输出流的音频声道设置,取值及含义如下所示。
		// <li> mono:单声道; </li>
		// <li> stereo:立体声。 </li>
		ChannelLayout: `stereo`,
	}

	Output.Audio = Audio

	// 混流视频的推流地址。
	URL := []string{"push.example.com", "push2.example.com"}

	Output.URL = URL

	// 混流画面参数设置。
	Video := live.UpdateCloudMixTaskBodyMixedRulesOutputVideo{
		// 混流输出视频编码格式,支持的取值及含义如下所示。
		// <li> h264:使用 H.264 编码格式; </li>
		// <li> h265:使用 H.265 编码格式。 </li>
		Codec: `h264`,
	}

	Output.Video = Video

	MixedRules.Output = Output

	// 混流素材列表,最多支持配置 8 路输入源。
	InputSource1 := live.UpdateCloudMixTaskBodyMixedRulesInputSourceItem{
		// 混流素材 ID,一个任务中素材 ID 不能重复,此 ID 用于任务状态回调消息中标识素材。
		ID: `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`,
	}

	MixedRules.InputSource = append(MixedRules.InputSource, InputSource1)
	body.MixedRules = MixedRules

	resp, err := service.UpdateCloudMixTask(context.Background(), body)

	if err != nil {
		fmt.Printf("error %v", err)
	} else {
		fmt.Printf("success %+v", resp)
	}
}

ListCloudMixTask - 查看云端混流任务列表

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

接口调用示例如下所示。

package main

import (
	"context"
	"fmt"
	"os"

	"github.com/volcengine/volc-sdk-golang/base"
	live "github.com/volcengine/volc-sdk-golang/service/live/v20230101"
)

func main() {
	// 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。
	// 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY
	service := live.NewInstance()
	service.SetCredential(base.Credentials{
		AccessKeyID:     os.Getenv("VOLC_ACCESSKEY"),
		SecretAccessKey: os.Getenv("VOLC_SECRETKEY"),
	})

	body := &live.ListCloudMixTaskBody{}

	resp, err := service.ListCloudMixTask(context.Background(), body)

	if err != nil {
		fmt.Printf("error %v", err)
	} else {
		fmt.Printf("success %+v", resp)
	}
}

GetCloudMixTaskDetail - 查看云端混流任务

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

接口调用示例如下所示。

package main

import (
	"context"
	"fmt"
	"os"

	"github.com/volcengine/volc-sdk-golang/base"
	live "github.com/volcengine/volc-sdk-golang/service/live/v20230101"
)

func main() {
	// 强烈建议不要把 VOLC_ACCESSKEY 和 VOLC_SECRETKEY 保存到工程代码里,否则可能导致 AccessKey 泄露,威胁您账号下所有资源的安全。
	// 本示例通过从环境变量中读取 VOLC_ACCESSKEY 和 VOLC_SECRETKEY,来实现 API 访问的身份验证。运行代码示例前,请配置环境变量 VOLC_ACCESSKEY 和 VOLC_SECRETKEY
	service := live.NewInstance()
	service.SetCredential(base.Credentials{
		AccessKeyID:     os.Getenv("VOLC_ACCESSKEY"),
		SecretAccessKey: os.Getenv("VOLC_SECRETKEY"),
	})

	body := &live.GetCloudMixTaskDetailBody{
		// 混流任务 ID,您可以通过 [ListCloudMixTask](https://www.volcengine.com/docs/6469/1271157) 接口获取混流任务 ID。
		TaskID: `086b7972234d7b71`,
	}

	resp, err := service.GetCloudMixTaskDetail(context.Background(), body)

	if err != nil {
		fmt.Printf("error %v", err)
	} else {
		fmt.Printf("success %+v", resp)
	}
}