本文提供了直接调用播单型导播台OpenAPI的Demo,具体逻辑请根据实际情况自行编写。
播单型导播台调用流程
示例代码
说明
了解API的详细信息,请参见云导播API概览。
使用Go SDK,具体请参见Go SDK使用说明。
创建导播台
package caster import ( "github.com/aliyun/alibaba-cloud-sdk-go/services/live" uuid "github.com/satori/go.uuid" "testing" "github.com/go-ini/ini" ) // 创建导播台 func CreateCaster(t *testing.T) { cfg, err := ini.Load("conf/config.ini") if err != nil { t.Fatal(err) } // 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 // 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 // 本示例通过从配置文件中读取AccessKey,来实现API访问的身份验证。如何配置文件,请参见视频直播 > 开发参考 > SDK参考 > 服务端SDK > Go SDK使用说明。 accessKeyID := cfg.Section("").Key("access_key_id").String() accessKeySecret := cfg.Section("").Key("access_key_secret").String() liveClient, err := live.NewClientWithAccessKey("cn-shanghai", accessKeyID, accessKeySecret) if err != nil { t.Fatal(err) } // 创建导播台请求参数 createCasterRequest := live.CreateCreateCasterRequest() createCasterRequest.ClientToken = uuid.NewV1().String() createCasterRequest.CasterName = "导播台测试" // 不生效的话,请通过接口【设置导播台】来设置 createCasterRequest.ChargeType = "PostPaid" createCasterRequest.NormType = "6" _, err = liveClient.CreateCaster(createCasterRequest) if err != nil { t.Fatal(err) } }
关于CreateCaster接口的请求参数等更多信息,请参见创建导播台。
设置导播台
package caster import ( "github.com/aliyun/alibaba-cloud-sdk-go/services/live" "testing" "github.com/go-ini/ini" ) // 设置导播台 func SetCasterConfig(t *testing.T) { cfg, err := ini.Load("conf/config.ini") if err != nil { t.Fatal(err) } // 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 // 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 // 本示例通过从配置文件中读取AccessKey,来实现API访问的身份验证。如何配置文件,请参见视频直播 > 开发参考 > SDK参考 > 服务端SDK > Go SDK使用说明。 accessKeyID := cfg.Section("").Key("access_key_id").String() accessKeySecret := cfg.Section("").Key("access_key_secret").String() liveClient, err := live.NewClientWithAccessKey("cn-shanghai", accessKeyID, accessKeySecret) if err != nil { t.Fatal(err) } // 设置导播台配置参数 createSetCasterConfig := live.CreateSetCasterConfigRequest() createSetCasterConfig.CasterId = "xxxxxx" createSetCasterConfig.CasterName = "导播台测试" createSetCasterConfig.ChannelEnable = "1" createSetCasterConfig.Delay = "0" createSetCasterConfig.DomainName = "xxxxxxxx" createSetCasterConfig.ProgramEffect = "1" createSetCasterConfig.ProgramName = "test loop play" // 转码设置(横竖屏模式及清晰度设置) // 参考如下文档:SetCasterConfig // 其中:CasterTemplate取值范围如下 // lp_ld:流畅、lp_sd:标清、lp_hd:高清、lp_ud:超清。 // lp_ld_v:竖屏流畅、lp_sd_v:竖屏标清、lp_hd_v:竖屏高清、lp_ud_v:竖屏超清。 createSetCasterConfig.TranscodeConfig = `{"CasterTemplate": "lp_ld"}` // 录制 // json字段含义请参考:AddLiveAppRecordConfig createSetCasterConfig.RecordConfig = fmt.Sprintf(`{ "endpoint": "oss-cn-shanghai.aliyuncs.com", "ossBucket": "test-record", "videoFormat": [{"format": "flv", "interval": 900, "prefix":"record/{AppName}/{StreamName}/{StartTime}_{EndTime}" }]}`) _, err = liveClient.SetCasterConfig(createSetCasterConfig) if err != nil { t.Fatal(err) } }
关于SetCasterConfig接口的更多信息,请参见配置导播台。
添加一个节目到节目单
package caster import ( "fmt" "github.com/aliyun/alibaba-cloud-sdk-go/services/live" "testing" "github.com/go-ini/ini" ) func TestAddShowIntoShowList(t *testing.T) { cfg, err := ini.Load("conf/config.ini") if err != nil { t.Fatal(err) } // 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 // 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 // 本示例通过从配置文件中读取AccessKey,来实现API访问的身份验证。如何配置文件,请参见视频直播 > 开发参考 > SDK参考 > 服务端SDK > Go SDK使用说明。 accessKeyID := cfg.Section("").Key("access_key_id").String() accessKeySecret := cfg.Section("").Key("access_key_secret").String() liveClient, err := live.NewClientWithAccessKey("cn-shanghai", accessKeyID, accessKeySecret) if err != nil { t.Fatal(err) } req := live.CreateAddShowIntoShowListRequest() req.CasterId = "xxxxx" req.ResourceType = "live" // live:直播素材, vod:点播素材, pic:图片素材。 req.RegionId = "cn-shanghai" req.ShowName = "创建播单型导播台demo" req.ResourceUrl = "xxxxxx" req.ResourceId = "" //RepeatTimes和Duration两者只允许设置其中一个。 req.Duration = "10" // 单个节目播放时间长度,单位:秒。 //req.RepeatTimes = "2" // RepeatTimes为重复次数,示例:0表示重复0次(实际播放1次),1表示重复1次(实际播放2次),以此类推。 //req.Spot = requests.NewInteger(0) // 插入到播放列表的位置。位置从0 开始,默认添加到当前节目单的末尾。 rsp, err := liveClient.AddShowIntoShowList(req) if err != nil { t.Fatal(err) } println(fmt.Sprintf("%+v", rsp)) }
关于AddShowIntoShowList接口的更多信息,请参见添加节目到节目单。
启动导播台
package caster import ( "github.com/aliyun/alibaba-cloud-sdk-go/services/live" "testing" "time" "github.com/go-ini/ini" ) // 启动导播台、设置播放场景 func StartCaster(t *testing.T) { cfg, err := ini.Load("conf/config.ini") if err != nil { t.Fatal(err) } // 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 // 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 // 本示例通过从配置文件中读取AccessKey,来实现API访问的身份验证。如何配置文件,请参见视频直播 > 开发参考 > SDK参考 > 服务端SDK > Go SDK使用说明。 accessKeyID := cfg.Section("").Key("access_key_id").String() accessKeySecret := cfg.Section("").Key("access_key_secret").String() liveClient, err := live.NewClientWithAccessKey("cn-shanghai", accessKeyID, accessKeySecret) if err != nil { t.Fatal(err) } // 启动导播台 startCasterRequest := live.CreateStartCasterRequest() startCasterRequest.CasterId = "xxx" startCasterResp, err := liveClient.StartCaster(startCasterRequest) if err != nil { t.Fatal(err) } // 因为资源加载需要时间,如果立马启动,则可能资源尚未加载成功,所以需要暂停一下 time.Sleep(time.Second) // 设置播放场景 // PVW (可选设置) setCasterSceneConfigRequest := live.CreateSetCasterSceneConfigRequest() setCasterSceneConfigRequest.LayoutId = "xxx" setCasterSceneConfigRequest.CasterId = "xxx" setCasterSceneConfigRequest.SceneId = startCasterResp.PvwSceneInfos.SceneInfo[0].SceneId _, err = liveClient.SetCasterSceneConfig(setCasterSceneConfigRequest) if err != nil { t.Fatal(err) } // PGM (必选设置) setCasterSceneConfigRequest.SceneId = startCasterResp.PgmSceneInfos.SceneInfo[0].SceneId _, err = liveClient.SetCasterSceneConfig(setCasterSceneConfigRequest) if err != nil { t.Fatal(err) } }
关于StartCaster接口的更多信息,请参见启动导播台。
关于SetCasterSceneConfig接口的更多信息,请参见设置场景配置。
手动切换节目
package caster import ( "fmt" "github.com/aliyun/alibaba-cloud-sdk-go/services/live" "testing" "github.com/go-ini/ini" ) func TestPlayChoosenShow(t *testing.T) { cfg, err := ini.Load("conf/config.ini") if err != nil { t.Fatal(err) } // 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 // 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 // 本示例通过从配置文件中读取AccessKey,来实现API访问的身份验证。如何配置文件,请参见视频直播 > 开发参考 > SDK参考 > 服务端SDK > Go SDK使用说明。 accessKeyID := cfg.Section("").Key("access_key_id").String() accessKeySecret := cfg.Section("").Key("access_key_secret").String() liveClient, err := live.NewClientWithAccessKey("cn-shanghai", accessKeyID, accessKeySecret) if err != nil { t.Fatal(err) } req := live.CreatePlayChoosenShowRequest() req.CasterId = "xxxxx" req.ShowId = "xxxxx" req.RegionId = "cn-shanghai" rsp, err := liveClient.PlayChoosenShow(req) if err != nil { t.Fatal(err) } println(fmt.Sprintf("%+v", rsp)) }
关于PlayChoosenShow接口的更多信息,请参见手动切换节目。
停止导播台
package caster import ( "github.com/aliyun/alibaba-cloud-sdk-go/services/live" "testing" "github.com/go-ini/ini" ) // 停止导播台 func StopCaster(t *testing.T) { cfg, err := ini.Load("conf/config.ini") if err != nil { t.Fatal(err) } // 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 // 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 // 本示例通过从配置文件中读取AccessKey,来实现API访问的身份验证。如何配置文件,请参见视频直播 > 开发参考 > SDK参考 > 服务端SDK > Go SDK使用说明。 accessKeyID := cfg.Section("").Key("access_key_id").String() accessKeySecret := cfg.Section("").Key("access_key_secret").String() liveClient, err := live.NewClientWithAccessKey("cn-shanghai", accessKeyID, accessKeySecret) if err != nil { t.Fatal(err) } // 停止导播台 stopCasterRequest := live.CreateStopCasterRequest() stopCasterRequest.CasterId = "xxxx" _, err = liveClient.StopCaster(stopCasterRequest) if err != nil { t.Fatal(err) } }
关于StopCaster接口的更多信息,请参见停止导播台。
删除导播台
package caster import ( "github.com/aliyun/alibaba-cloud-sdk-go/services/live" "testing" "github.com/go-ini/ini" ) // 停止并删除导播台 func DeleteCaster(t *testing.T) { cfg, err := ini.Load("conf/config.ini") if err != nil { t.Fatal(err) } // 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 // 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 // 本示例通过从配置文件中读取AccessKey,来实现API访问的身份验证。如何配置文件,请参见视频直播 > 开发参考 > SDK参考 > 服务端SDK > Go SDK使用说明。 accessKeyID := cfg.Section("").Key("access_key_id").String() accessKeySecret := cfg.Section("").Key("access_key_secret").String() liveClient, err := live.NewClientWithAccessKey("cn-shanghai", accessKeyID, accessKeySecret) if err != nil { t.Fatal(err) } // 删除导播台 deleteCasterRequest := live.CreateDeleteCasterRequest() deleteCasterRequest.CasterId = "xxxxxxx" _, err = liveClient.DeleteCaster(deleteCasterRequest) if err != nil { t.Fatal(err) } }
关于DeleteCaster接口的更多信息,请参见删除导播台。
创建一个定时任务
package caster import ( "fmt" "github.com/aliyun/alibaba-cloud-sdk-go/services/live" "github.com/go-ini/ini" "testing" ) func InitializeAutoShowListTask(t *testing.T) { cfg, err := ini.Load("conf/config.ini") if err != nil { t.Fatal(err) } // 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 // 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 // 本示例通过从配置文件中读取AccessKey,来实现API访问的身份验证。如何配置文件,请参见视频直播 > 开发参考 > SDK参考 > 服务端SDK > Go SDK使用说明。 accessKeyID := cfg.Section("").Key("access_key_id").String() accessKeySecret := cfg.Section("").Key("access_key_secret").String() liveClient, err := live.NewClientWithAccessKey("cn-shanghai", accessKeyID, accessKeySecret) if err != nil { t.Fatal(err) } req := live.CreateInitializeAutoShowListTaskRequest() req.CasterConfig = `{"CasterTemplate": "lp_ld","LiveTemplates":["lhd", "lsd","lud"]}` req.DomainName = `xxxx-xxxx.xxxxx.com` req.ResourceIds = `["xxxxx"]` // 查看媒资库(点播控制台) req.StartTime = "1660632600000" // 开始时间,毫秒 req.EndTime = "1660632660000" // 结束时间,毫秒 rsp, err := liveClient.InitializeAutoShowListTask(req) if err != nil { t.Fatal(err) } println(fmt.Sprintf("%+v", rsp)) }
关于InitializeAutoShowListTask接口的更多信息,请参见创建一个定时任务。
删除节目单中的一个节目
package caster import ( "fmt" "github.com/aliyun/alibaba-cloud-sdk-go/services/live" "github.com/go-ini/ini" "testing" ) func RemoveShowFromShowList(t *testing.T) { cfg, err := ini.Load("conf/config.ini") if err != nil { t.Fatal(err) } // 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 // 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 // 本示例通过从配置文件中读取AccessKey,来实现API访问的身份验证。如何配置文件,请参见视频直播 > 开发参考 > SDK参考 > 服务端SDK > Go SDK使用说明。 accessKeyID := cfg.Section("").Key("access_key_id").String() accessKeySecret := cfg.Section("").Key("access_key_secret").String() liveClient, err := live.NewClientWithAccessKey("cn-shanghai", accessKeyID, accessKeySecret) if err != nil { t.Fatal(err) } req := live.CreateRemoveShowFromShowListRequest() req.CasterId = "xxxx" req.ShowId = "xxxxx" // 无法删除正在播放的节目 req.RegionId = "cn-shanghai" rsp, err := liveClient.RemoveShowFromShowList(req) if err != nil { t.Fatal(err) } println(fmt.Sprintf("%+v", rsp)) }
关于RemoveShowFromShowList接口的更多信息,请参见删除节目单中的节目。
修改播单属性
package caster import ( "fmt" "github.com/aliyun/alibaba-cloud-sdk-go/services/live" "github.com/go-ini/ini" "testing" ) func ModifyShowList(t *testing.T) { cfg, err := ini.Load("conf/config.ini") if err != nil { t.Fatal(err) } // 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 // 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 // 本示例通过从配置文件中读取AccessKey,来实现API访问的身份验证。如何配置文件,请参见视频直播 > 开发参考 > SDK参考 > 服务端SDK > Go SDK使用说明。 accessKeyID := cfg.Section("").Key("access_key_id").String() accessKeySecret := cfg.Section("").Key("access_key_secret").String() liveClient, err := live.NewClientWithAccessKey("cn-shanghai", accessKeyID, accessKeySecret) if err != nil { t.Fatal(err) } req := live.CreateModifyShowListRequest() req.CasterId = "xxxx" req.RegionId = "cn-shanghai" req.RepeatTimes = "2" // RepeatTimes为重复次数,示例:0表示重复0次(实际播放1次),1表示重复1次(实际播放2次),以此类推。 //req.ShowId = "xxxx" //req.Spot = "0" // 插入到播放列表的位置。位置从0 开始,默认添加到当前节目单的末尾。 rsp, err := liveClient.ModifyShowList(req) if err != nil { t.Fatal(err) } println(fmt.Sprintf("%+v", rsp)) }
关于ModifyShowList接口的更多信息,请参见修改播单属性。
节目单查询
package caster import ( "fmt" "github.com/aliyun/alibaba-cloud-sdk-go/services/live" "github.com/go-ini/ini" "testing" ) func TestDescribeShowList(t *testing.T) { cfg, err := ini.Load("conf/config.ini") if err != nil { t.Fatal(err) } // 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 // 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 // 本示例通过从配置文件中读取AccessKey,来实现API访问的身份验证。如何配置文件,请参见视频直播 > 开发参考 > SDK参考 > 服务端SDK > Go SDK使用说明。 accessKeyID := cfg.Section("").Key("access_key_id").String() accessKeySecret := cfg.Section("").Key("access_key_secret").String() liveClient, err := live.NewClientWithAccessKey("cn-shanghai", accessKeyID, accessKeySecret) if err != nil { t.Fatal(err) } req := live.CreateDescribeShowListRequest() req.CasterId = "xxxxxx" req.RegionId = "cn-shanghai" rsp, _ := liveClient.DescribeShowList(req) if err != nil { // 此处会同时返回错误和结果,如果有结果可以忽略错误信息。 t.Fatal(err) } println(fmt.Sprintf("%+v", rsp)) }
关于DescribeShowList接口的更多信息,请参见节目单查询。
查询自动启停的定时任务
package caster import ( "fmt" "github.com/aliyun/alibaba-cloud-sdk-go/services/live" "github.com/go-ini/ini" "testing" ) func DescribeAutoShowListTasks(t *testing.T) { cfg, err := ini.Load("conf/config.ini") if err != nil { t.Fatal(err) } // 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。 // 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。 // 本示例通过从配置文件中读取AccessKey,来实现API访问的身份验证。如何配置文件,请参见视频直播 > 开发参考 > SDK参考 > 服务端SDK > Go SDK使用说明。 accessKeyID := cfg.Section("").Key("access_key_id").String() accessKeySecret := cfg.Section("").Key("access_key_secret").String() liveClient, err := live.NewClientWithAccessKey("cn-shanghai", accessKeyID, accessKeySecret) if err != nil { t.Fatal(err) } req := live.CreateDescribeAutoShowListTasksRequest() req.CasterId = "xxxx" rsp, err := liveClient.DescribeAutoShowListTasks(req) if err != nil { t.Fatal(err) } println(fmt.Sprintf("%+v", rsp)) }
关于DescribeAutoShowListTasks接口的更多信息,请参见查询自动启停的定时任务。
文档内容是否对您有帮助?