You need to enable JavaScript to run this app.
导航
拉流转推
最近更新时间:2024.09.14 11:16:50首次发布时间:2023.12.28 21:21:52

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

说明

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

调用说明

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

前提条件

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

调用示例

本节为您介绍拉流转推相关接口的功能和调用示例。

创建拉流转推任务

您可以调用 CreatePullToPushTask 接口创建拉流转推任务。详细的参数说明可参见 CreatePullToPushTask 接口文档。

接口调用示例如下所示。

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 Int32Ptr(v int32) *int32 {
	return &v
}

func StringPtrs(vals []string) []*string {
	ptrs := make([]*string, len(vals))
	for i := 0; i < len(vals); i++ {
		ptrs[i] = &vals[i]
	}
	return ptrs
}

func Float32Ptrs(vals []float32) []*float32 {
	ptrs := make([]*float32, len(vals))
	for i := 0; i < len(vals); i++ {
		ptrs[i] = &vals[i]
	}
	return ptrs
}

func Float32Ptr(v float32) *float32 {
	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.CreatePullToPushTaskBody{
		// 拉流转推任务的名称,默认为空表示不配置任务名称。支持由中文、大小写字母(A - Z、a - z)和数字(0 - 9)组成,长度为 1 到 20 各字符。
		Title: StringPtr(`task001`),
		// 任务的开始时间,Unix 时间戳,单位为秒。
		// note:
		// 拉流转推任务持续时间最长为 7 天。
		StartTime: 1640891476,
		// 任务的结束时间,Unix 时间戳,单位为秒。
		// note:
		// 拉流转推任务持续时间最长为 7 天。
		EndTime: 1640841476,
		// 接收拉流转推任务状态回调的地址,最大长度为 2000 个字符,默认为空。
		CallbackURL: StringPtr(`http://example.com/live/callback`),
		// 拉流来源类型,支持的取值及含义如下。
		// <li> 0:直播源; </li>
		// <li> 1:点播视频。 </li>
		Type: 0,
		// 点播视频文件循环播放模式,当拉流来源类型为点播视频时为必选参数,参数取值及含义如下所示。
		// <li> -1:无限次循环,至任务结束; </li>
		// <li> 0:有限次循环,循环次数以 PlayTimes 取值为准; </li>
		// <li> >0:有限次循环,循环次数以 CycleMode 取值为准。 </li>
		CycleMode: Int32Ptr(-1),
		// 推流地址,即直播源或点播视频转推的目标地址。
		DstAddr: StringPtr(`rtmp://push.example.com/live/example_stream`),
		// 直播源的拉流地址,拉流来源类型为直播源时,为必传参数,最大长度为 1000 个字符。
		SrcAddr: StringPtr(`http://pull.example.com/live/example_stream.mp4`),
		// 点播视频文件循环播放次数,当 CycleMode 取值为 0 时,PlayTimes 取值将作为循环播放次数。
		// note:
		// PlayTimes 为冗余参数,您可以将 PlayTimes 置 0 后直接使用 CycleMode 指定点播视频文件循环播放次数。
		PlayTimes: Int32Ptr(3),
		// 推流域名,推流地址(DstAddr)为空时必传;反之,则该参数不生效。
		Domain: StringPtr(`push.example.com`),
		// 推流应用名称,推流地址(DstAddr)为空时必传;反之,则该参数不生效。
		App: StringPtr(`live`),
		// 推流的流名称,推流地址(DstAddr)为空时必传;反之,则该参数不生效。
		Stream: StringPtr(`example_stream`),
		// 是否开启点播预热,开启点播预热后,系统会自动将点播视频文件缓存到 CDN 节点上,当用户请求直播时,可以直播从 CDN 节点获取视频,从而提高直播流畅度。拉流来源类型为点播视频时,参数生效。
		// <li> 0:不开启; </li>
		// <li> 1:开启(默认值)。 </li>
		PreDownload: Int32Ptr(1),
		// 续播策略,续播策略指转推点播视频进行直播时出现断流并恢复后,如何继续播放的策略,拉流来源类型为点播视频(Type 为 1)时参数生效,支持的取值及含义如下。
		// <li> 0:从断流处续播(默认值); </li>
		// <li> 1:从断流处+自然流逝时长处续播。 </li>
		ContinueStrategy: Int32Ptr(9),
		// 点播文件启播时间偏移值,单位为秒,仅当点播视频播放地址列表(SrcAddrS)只有一个地址,且未配置 Offsets 时生效,缺省情况下为空表示不进行偏移。
		// note:
		// 此字段为旧版本配置,请使用 VodSrcAddrs 配置点播视频地址和播放偏移时间。
		Offset: Float32Ptr(30),
		// 群组所属名称,您可以调用 [ListPullToPushGroup](https://www.volcengine.com/docs/6469/1327382) 获取可用的群组。
		// note:
		// <li> 使用主账号调用时,为非必填,默认加入 default 群组,default 群组不存在时会默认创建,并绑定 default 项目。 </li>
		// <li> 使用子账号调用时,为必填。 </li>
		GroupName: StringPtr(`default`),
	}

	// 点播视频播放地址列表,拉流来源类型为点播视频时,为必传参数,最多支持传入 30 个点播视频播放地址,每个地址最大长度为 1000 个字符。
	// note:
	// 此字段为旧版本配置,请使用 VodSrcAddrs 配置点播视频地址和播放偏移时间。
	SrcAddrS := []string{"https://example.com/live/stream-123.mp4"}

	body.SrcAddrS = StringPtrs(SrcAddrS)

	// 为拉流转推视频添加的水印配置信息。
	Watermark := live.CreatePullToPushTaskBodyWatermark{
		// 水印图片字符串,图片最大 2MB,最小 100Bytes,最大分辨率为 1080×1080。图片 Data URL 格式为:data:image/<mediatype>;base64,<data>。
		// <li> mediatype:图片类型,支持 png、jpg、jpeg 格式; </li>
		// <li> data:base64 编码的图片字符串。 </li>
		// 例如,data:image/png;base64,iVBORw0KGg****mCC
		Picture: `data:image/png;base64,iVBORw0KGg****mCC`,
		// 水平偏移,表示水印左侧边与转码流画面左侧边之间的距离,使用相对比率,取值范围为 [0,1)。
		RelativePosX: 0.1,
		// 垂直偏移,表示水印顶部边与转码流画面顶部边之间的距离,使用相对比率,取值范围为 [0,1)。
		RelativePosY: 0.1,
		// 水印宽度占直播原始画面宽度百分比,支持精度为小数点后两位。
		Ratio: 0.1,
	}

	body.Watermark = &Watermark

	// 点播文件启播时间偏移值,单位为秒,数量与拉流地址列表中地址数量相等,缺省情况下为空表示不进行偏移。拉流来源类型为点播视频时,参数生效。
	// note:
	// 此字段为旧版本配置,请使用 VodSrcAddrs 配置点播视频地址和播放偏移时间。
	OffsetS := []float32{30}

	body.OffsetS = Float32Ptrs(OffsetS)

	// 点播文件地址和开始播放、结束播放的时间设置。
	// note:
	// <li> 当 Type 为点播类型时配置生效。 </li>
	// <li> 与 SrcAddrS 和 OffsetS 字段不可同时填写。 </li>
	VodSrcAddrs1 := live.CreatePullToPushTaskBodyVodSrcAddrsItem{
		// 当前点播文件开始播放的时间偏移值,单位为秒。默认为空时表示开始播放时间不进行偏移。
		StartOffset: Float32Ptr(65.0),
		// 当前点播文件结束播放的时间偏移值,单位为秒,默认为空时表示结束播放时间不进行偏移。
		EndOffset: Float32Ptr(80.0),
		// 点播文件地址。
		SrcAddr: `https://example.com/live/stream-123.mp4`,
	}

	body.VodSrcAddrs = append(body.VodSrcAddrs, &VodSrcAddrs1)

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

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

删除拉流转推任务

您可以调用 DeletePullToPushTask 接口删除拉流转推任务。详细的参数说明可参见 DeletePullToPushTask 接口文档。

接口调用示例如下所示。

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.DeletePullToPushTaskBody{
		// 任务 ID,任务的唯一标识,您可以通过[获取拉流转推任务列表](https://www.volcengine.com/docs/6469/1126896)接口获取。
		TaskID: `8fde6aa0281d9f*******05a6e242365`,
		// 任务所属的群组名称,您可以通过[获取拉流转推任务列表](https://www.volcengine.com/docs/6469/1126896)接口获取。
		// note:
		// <li> 使用主账号调用时,为非必填。 </li>
		// <li> 使用子账号调用时,为必填。 </li>
		GroupName: StringPtr(`default`),
	}

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

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

更新拉流转推任务

您可以调用 UpdatePullToPushTask 接口更新拉流转推任务。详细的参数说明可参见 UpdatePullToPushTask 接口文档。

接口调用示例如下所示。

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 Int32Ptr(v int32) *int32 {
	return &v
}

func StringPtrs(vals []string) []*string {
	ptrs := make([]*string, len(vals))
	for i := 0; i < len(vals); i++ {
		ptrs[i] = &vals[i]
	}
	return ptrs
}

func Float32Ptrs(vals []float32) []*float32 {
	ptrs := make([]*float32, len(vals))
	for i := 0; i < len(vals); i++ {
		ptrs[i] = &vals[i]
	}
	return ptrs
}

func Float32Ptr(v float32) *float32 {
	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.UpdatePullToPushTaskBody{
		// 拉流转推任务的名称,默认为空表示不配置任务名称。支持由中文、大小写字母(A - Z、a - z)和数字(0 - 9)组成,长度为 1 到 20 各字符。
		Title: StringPtr(`task001`),
		// 任务 ID,任务的唯一标识,您可以通过[获取拉流转推任务列表](https://www.volcengine.com/docs/6469/1126896)接口获取。
		TaskID: `8fde6aa0281*********59a6e242365`,
		// 任务的开始时间,Unix 时间戳,单位为秒。
		// note:
		// 拉流转推任务持续时间最长为 7 天。
		StartTime: 1640891476,
		// 任务等结束时间,Unix 时间戳,单位为秒。
		// note:
		// 拉流转推任务持续时间最长为 7 天。
		EndTime: 1640891976,
		// 接收拉流转推任务状态回调的地址,最大长度为 2000 个字符。
		CallbackURL: StringPtr(`http://example.com/live/callback`),
		// 拉流来源类型,支持的取值及含义如下。
		// <li> 0:直播源; </li>
		// <li> 1:点播视频。 </li>
		Type: 0,
		// 点播视频文件循环播放模式,当拉流来源类型为点播视频时为必选参数,参数取值及含义如下所示。
		// <li> -1:无限次循环,至任务结束; </li>
		// <li> 0:有限次循环,循环次数以 PlayTimes 取值为准; </li>
		// <li> >0:有限次循环,循环次数以 CycleMode 取值为准。 </li>
		CycleMode: Int32Ptr(-1),
		// 推流地址,即直播源或点播视频转推的目标地址。
		DstAddr: StringPtr(`rtmp://push.example.com/live/example_stream`),
		// 直播源的拉流地址,拉流来源类型为直播源(Type 为 0)时,为必选参数,最大长度为 1000 个字符。
		SrcAddr: StringPtr(`http://pull.example.com/live/example_stream.mp4`),
		// 推流的流名称,推流地址(DstAddr)为空时必传;反之,则该参数不生效
		Stream: StringPtr(`example_stream`),
		// 推流应用名称,推流地址(DstAddr)为空时必传;反之,则该参数不生效
		App: StringPtr(`live`),
		// 推流域名,推流地址(DstAddr)为空时必传;反之,则该参数不生效
		Domain: StringPtr(`push.example.com`),
		// 是否开启点播预热,开启点播预热后,系统会自动将点播视频文件缓存到 CDN 节点上,当用户请求直播时,可以直播从 CDN 节点获取视频,从而提高直播流畅度。
		// 拉流来源类型为点播视频(Type 为 1)时,参数生效。
		// <li> 0:不开启; </li>
		// <li> 1:开启(默认值)。 </li>
		PreDownload: Int32Ptr(1),
		// 续播策略,续播策略指转推点播视频进行直播时出现断流并恢复后,如何继续播放的策略,拉流来源类型为点播视频(Type 为 1)时参数生效,支持的取值及含义如下。
		// <li> 0:从断流处续播(默认值); </li>
		// <li> 1:从断流处+自然流逝时长处续播。 </li>
		ContinueStrategy: Int32Ptr(9),
		// 点播文件启播时间偏移值,单位为秒,仅当点播视频播放地址列表(SrcAddrS)只有一个地址,且未配置 Offsets 时生效,缺省情况下表示不进行偏移。
		Offset: Float32Ptr(30),
		// 点播视频文件循环播放次数,当 CycleMode 取值为 0 时,PlayTimes 取值将作为循环播放次数。
		// note:
		// PlayTimes 为冗余参数,您可以将 PlayTimes 置 0 后直接使用 CycleMode 指定点播视频文件循环播放次数。
		PlayTimes: Int32Ptr(3),
		// 任务所属的群组名称,您可以通过[获取拉流转推任务列表](https://www.volcengine.com/docs/6469/1126896)接口获取。
		// note:
		// <li> 群组名称不支持更新,仅做校验使用。 </li>
		// <li> 使用主账号调用时,为非必填。 </li>
		// <li> 使用子账号调用时,为必填。 </li>
		GroupName: StringPtr(`default`),
	}

	// 点播视频播放地址列表,拉流来源类型为点播视频(Type 为 1)时,为必选参数,最多支持传入 30 个点播视频播放地址,每个地址最大长度为 1000 个字符。
	SrcAddrS := []string{"https://example.com/live/stream-123.mp4"}

	body.SrcAddrS = StringPtrs(SrcAddrS)

	// 为拉流转推视频添加的水印配置信息。
	Watermark := live.UpdatePullToPushTaskBodyWatermark{
		// 水印图片字符串,图片最大 2MB,最小 100Bytes,最大分辨率为 1080×1080。图片 Data URL 格式为:data:image/<mediatype>;base64,<data>。
		// <li> mediatype:图片类型,支持 png、jpg、jpeg 格式; </li>
		// <li> data:base64 编码的图片字符串。 </li>
		Picture: `data:image/png;base64,iVBORw0KGg****mCC`,
		// 水平偏移,表示水印左侧边与转码流画面左侧边之间的距离,使用相对比率,取值范围为 [0,1)。
		RelativePosX: 0.1,
		// 垂直偏移,表示水印顶部边与转码流画面顶部边之间的距离,使用相对比率,取值范围为 [0,1)。
		RelativePosY: 0.1,
		// 水印宽度占直播原始画面宽度百分比,支持精度为小数点后两位。
		Ratio: 0.1,
	}

	body.Watermark = &Watermark

	// 点播文件启播时间偏移值,单位为秒,数量与拉流地址列表中地址数量相等,缺省情况下表示不进行偏移。
	// 拉流来源类型为点播视频(Type 为 1)时,参数生效。
	OffsetS := []float32{30}

	body.OffsetS = Float32Ptrs(OffsetS)

	// 点播文件地址和开始播放、结束播放的时间设置。
	// note:
	// <li> 当 Type 为点播类型时配置生效。 </li>
	// <li> 与 SrcAddrS 和 OffsetS 字段不可同时填写。 </li>
	VodSrcAddrs1 := live.UpdatePullToPushTaskBodyVodSrcAddrsItem{
		// 当前点播文件开始播放的时间偏移值,单位为秒。默认为空时表示开始播放时间不进行偏移。
		StartOffset: Float32Ptr(65.0),
		// 当前点播文件结束播放的时间偏移值,单位为秒,默认为空时表示结束播放时间不进行偏移。
		EndOffset: Float32Ptr(80.0),
		// 点播文件地址。
		SrcAddr: `https://example.com/live/stream-123.mp4`,
	}

	body.VodSrcAddrs = append(body.VodSrcAddrs, &VodSrcAddrs1)

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

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

启用拉流转推任务

您可以调用 RestartPullToPushTask 接口启用拉流转推任务。详细的参数说明可参见 RestartPullToPushTask 接口文档。

接口调用示例如下所示。

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.RestartPullToPushTaskBody{
		// 任务 ID,任务的唯一标识,您可以通过[获取拉流转推任务列表](https://www.volcengine.com/docs/6469/1126896)接口获取状态为停用的任务 ID。
		TaskID: `8fde6aa0281d********986e242365`,
		// 任务所属的群组名称,您可以通过[获取拉流转推任务列表](https://www.volcengine.com/docs/6469/1126896)接口获取。
		// note:
		// <li> 使用主账号调用时,为非必填。 </li>
		// <li> 使用子账号调用时,为必填。 </li>
		GroupName: StringPtr(`default`),
	}

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

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

停用拉流转推任务

您可以调用 StopPullToPushTask 接口停用拉流转推任务。详细的参数说明可参见 StopPullToPushTask 接口文档。

接口调用示例如下所示。

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.StopPullToPushTaskBody{
		// 任务 ID,任务的唯一标识,您可以通过[获取拉流转推任务列表](https://www.volcengine.com/docs/6469/1126896)接口获取状态为未开始或生效中的任务 ID。
		TaskID: `8fde6aa0281d9f6e1*******a6e242365`,
		// 任务所属的群组名称,您可以通过[获取拉流转推任务列表](https://www.volcengine.com/docs/6469/1126896)接口获取。
		// note:
		// <li> 使用主账号调用时,为非必填。 </li>
		// <li> 使用子账号调用时,为必填。 </li>
		GroupName: StringPtr(`default`),
	}

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

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

获取拉流转推任务列表

您可以调用 ListPullToPushTask 接口获取拉流转推任务列表。详细的参数说明可参见 ListPullToPushTask 接口文档。

接口调用示例如下所示。

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 Int32Ptr(v int32) *int32 {
	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"),
	})

	query := &live.ListPullToPushTaskQuery{
		// 群组名称。
		// <li> 使用主账号调用时,为非必填,默认为空,表示查询所有群组的任务信息。 </li>
		// <li> 使用子账号调用时,非必填。 </li>
		GroupName: StringPtr(`default`),
		// 拉流转推任务的名称,不区分大小写,支持模糊查询。
		// 例如,title 取值为 doc 时,则返回任务名称为 docspace、docs、DOC 等 title 中包含 doc 关键词的所有任务列表。
		Title: StringPtr(`doc`),
		// 查询数据的页码,默认为 1,表示查询第一页的数据。
		Page: Int32Ptr(1),
		// 每页显示的数据条数,默认为 20,最大值为 500。
		Size: Int32Ptr(20),
	}

	resp, err := service.ListPullToPushTask(context.Background(), query)

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

获取拉流转推任务列表

您可以调用 ListPullToPushTask 接口获取拉流转推任务列表。详细的参数说明可参见 ListPullToPushTask 接口文档。

接口调用示例如下所示。

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 Int32Ptr(v int32) *int32 {
	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"),
	})

	query := &live.ListPullToPushTaskQuery{
		// 群组名称。
		// <li> 使用主账号调用时,为非必填,默认为空,表示查询所有群组的任务信息。 </li>
		// <li> 使用子账号调用时,非必填。 </li>
		GroupName: StringPtr(`default`),
		// 拉流转推任务的名称,不区分大小写,支持模糊查询。
		// 例如,title 取值为 doc 时,则返回任务名称为 docspace、docs、DOC 等 title 中包含 doc 关键词的所有任务列表。
		Title: StringPtr(`doc`),
		// 查询数据的页码,默认为 1,表示查询第一页的数据。
		Page: Int32Ptr(1),
		// 每页显示的数据条数,默认为 20,最大值为 500。
		Size: Int32Ptr(20),
	}

	resp, err := service.ListPullToPushTask(context.Background(), query)

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

创建拉流转推群组

您可以调用 CreatePullToPushGroup 接口创建拉流转推群组。详细的参数说明可参见 CreatePullToPushGroup 接口文档。

接口调用示例如下所示。

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.CreatePullToPushGroupBody{
		// 群组名称,支持有中文、大小写字母和数字组成,最大长度为 20 个字符。
		Name: `RelayGroup001`,
		// 为任务群组设置所属项目,您可以在[访问控制-项目列表](https://console.volcengine.com/iam/resourcemanage/project)查看已有项目并对项目进行管理。
		// 项目是火山引擎提供的一种资源管理方式,您可以对不同业务或项目使用的云资源进行分组管理,以实现基于项目的账单查看、子账号授权等功能。
		ProjectName: `default`,
	}

	// 为任务群组设置资源标签。您可以通过资源标签从不同维度对云资源进行分类和聚合管理,如资源分账等场景。
	// note:
	// 如需使用标签进行资源分账,可以在可以在[账单管理-费用标签](https://console.volcengine.com/finance/bill/tag/)处管理启用标签,将对应标签运用到账单明细等数据中。
	Tags1 := live.CreatePullToPushGroupBodyTagsItem{
		// 标签 Key 值。
		Key: `key001`,
		// 标签 Value 值。
		Value: `Valauedes`,
		// 标签类型,支持以下取值。
		// <li> System:系统内置标签; </li>
		// <li> Custom:自定义标签。 </li>
		Category: `Custom`,
	}

	body.Tags = append(body.Tags, &Tags1)

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

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

更新拉流转推群组

您可以调用 UpdatePullToPushGroup 接口更新拉流转推群组。详细的参数说明可参见 UpdatePullToPushGroup 接口文档。

接口调用示例如下所示。

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.UpdatePullToPushGroupBody{
		// 拉流转推群组名称,您可以调用 [ListPullToPushGroup](https://www.volcengine.com/docs/6469/1327382) 接口获取群组名称。
		Name: `Group001`,
	}

	// 任务群组的标签信息。
	Tags1 := live.UpdatePullToPushGroupBodyTagsItem{
		// 标签 Key 值。
		Key: `key001`,
		// 标签 Value 值。
		Value: `Valuedes`,
		// 标签类型,支持以下取值。
		// <li> System:系统内置标签; </li>
		// <li> Custom:自定义标签。 </li>
		Category: `Custom`,
	}

	body.Tags = append(body.Tags, &Tags1)

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

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

删除拉流转推群组

您可以调用 DeletePullToPushGroup 接口删除拉流转推群组。详细的参数说明可参见 DeletePullToPushGroup 接口文档。

接口调用示例如下所示。

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.DeletePullToPushGroupBody{
		// 拉流转推群组名称,您可以调用 [ListPullToPushGroup](https://www.volcengine.com/docs/6469/1327382) 接口获取群组名称。
		Name: `Group001`,
	}

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

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

查询拉流转推群组列表

您可以调用 ListPullToPushGroup 接口查询拉流转推群组列表。详细的参数说明可参见 ListPullToPushGroup 接口文档。

接口调用示例如下所示。

package main

import (
	"context"
	"fmt"
	"os"

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

func Int32Ptrs(vals []int32) []*int32 {
	ptrs := make([]*int32, len(vals))
	for i := 0; i < len(vals); i++ {
		ptrs[i] = &vals[i]
	}
	return ptrs
}

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.ListPullToPushGroupBody{
		// 查询数据的页码,取值范围为 [1,1000]。
		PageNum: 1,
		// 每页现实的数据条数,取值范围为 [1,1000]。
		PageSize: 10,
	}

	// 群组的状态,取值及含义如下所示。
	// <li> 0: (默认值)可用; </li>
	// <li> 1: 已删除,不可用。 </li>
	StatusList := []int32{}

	body.StatusList = Int32Ptrs(StatusList)

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

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