日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

虛擬演播廳API調用Demo

本文提供了直接調用虛擬演播廳OpenAPI的Demo,具體邏輯請根據實際情況自行編寫。

虛擬演播廳調用流程

虛擬演播廳整個調用流程順序如下 :

重要

請先添加視頻資源再添加布局,否則布局無法生效。

  1. 創建導播臺

  2. 設置導播臺

  3. 添加視頻資源

  4. 添加虛擬演播廳布局

  5. 啟動導播臺

  6. 更新導播臺場景配置

  7. 停止導播臺

  8. 刪除虛擬演播廳布局

  9. 刪除導播臺

示例代碼

說明
  • 創建導播臺

    package caster
    
    import (
    	"github.com/aliyun/alibaba-cloud-sdk-go/services/live"
    	"github.com/go-ini/ini"
    	uuid "github.com/satori/go.uuid"
    	"testing"
    )
    
    // 創建導播臺
    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 = "4"
    	_, err = liveClient.CreateCaster(createCasterRequest)
    	if err != nil {
    		t.Fatal(err)
    	}
    }

    關于CreateCaster接口的請求參數等更多信息,請參見創建導播臺

  • 設置導播臺

    package caster
    
    import (
    	"fmt"
    	"github.com/aliyun/alibaba-cloud-sdk-go/services/live"
    	"github.com/go-ini/ini"
    	"testing"
    )
    
    // 設置導播臺
    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 (
    	"github.com/aliyun/alibaba-cloud-sdk-go/services/live"
    	"github.com/go-ini/ini"
    	"testing"
    )
    
    // 添加資源
    func AddCasterVideoResource(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)
    	}
    	// 創建導播臺視頻資源
    	addCasterVideoResourceRequest := live.CreateAddCasterVideoResourceRequest()
    	addCasterVideoResourceRequest.CasterId = "xxxx"
    	addCasterVideoResourceRequest.ResourceName = "測試使用視頻資源"
    	addCasterVideoResourceRequest.LiveStreamUrl = "xxxxxxxxxxxx"
    	addCasterVideoResourceRequest.PtsCallbackInterval = "1000"
    	addCasterVideoResourceResp, err := liveClient.AddCasterVideoResource(addCasterVideoResourceRequest)
    	if err != nil {
    		t.Fatal(err)
    	}
    	resourceID := addCasterVideoResourceResp.ResourceId
    
    	// 視頻資源與通道一一綁定
    	setCasterChannelRequest := live.CreateSetCasterChannelRequest()
    	setCasterChannelRequest.CasterId = "xxx"
    	setCasterChannelRequest.PlayStatus = "1"
    	setCasterChannelRequest.ChannelId = "RV01"
    	setCasterChannelRequest.ResourceId = resourceID
    	_, err = liveClient.SetCasterChannel(setCasterChannelRequest)
    	if err != nil {
    		t.Fatal(err)
    	}
    }

    關于AddCasterVideoResource接口的更多信息,請參見添加導播臺視頻資源

  • 添加虛擬演播廳布局

    package caster
    
    import (
    	"github.com/aliyun/alibaba-cloud-sdk-go/services/live"
    	"github.com/go-ini/ini"
    	"testing"
    )
    
    // 設置導播臺
    func AddStudioLayout(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)
    	}
    
    	request := live.CreateAddStudioLayoutRequest()
    
    	request.Scheme = "https"
    
    	request.CasterId = "xxxx"
    	request.LayoutName = "綠幕"
    	request.LayoutType = "studio"
    	//request.CommonConfig = "{\"ChannelId\":\"RV01\" }"
    	request.BgImageConfig = "{ \"Id\":\"k12kj31kj23\", \"ImageUrl\":\"\", \"MaterialId\":\"xxxx\" }"
    	request.ScreenInputConfigList = "[{ \"Index\":\"1\", \"ChannelId\":\"RV01\", \"Color\":\"green\", \"PositionX\":\"0.1\", \"PositionY\":\"0.2\", \"HeightNormalized\":\"0.4\" } ]"
    	request.MediaInputConfigList = "[{ \"Id\":\"k12kj31****\", \"Index\":\"1\", \"ChannelId\":\"RV07\", \"FillMode\":\"none\", \"PositionRefer\":\"topLeft\", \"WidthNormalized\":\"0\", \"HeightNormalized\":\"0.4854\", \"PositionNormalized\":\"[0.3691, 0.1958]\" }]"
    	request.LayerOrderConfigList = "[{ \"Type\":\"background\", \"Id\":\"k12kj31kj23\" }, { \"Type\":\"media\", \"Id\":\"k12kj31****\" }]"
    
    	_, err = liveClient.AddStudioLayout(request)
    	if err != nil {
    		t.Fatal(err)
    	}
    }

    關于AddStudioLayout接口的更多信息,請參見添加虛擬演播廳布局

  • 啟動導播臺、設置播放場景

    package caster
    
    import (
    	"github.com/aliyun/alibaba-cloud-sdk-go/services/live"
    	"github.com/go-ini/ini"
    	"testing"
    	"time"
    )
    
    // 啟動導播臺、設置播放場景
    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 (
    	"github.com/aliyun/alibaba-cloud-sdk-go/services/live"
    	"github.com/go-ini/ini"
    	"testing"
    )
    
    // 新導播臺場景配置
    func UpdateCasterSceneConfig(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)
    	}
    
    	request := live.CreateUpdateCasterSceneConfigRequest()
    
    	request.Scheme = "https"
    
    	request.CasterId = "xxxx"
    	request.SceneId = "xxxx"
    	request.LayoutId = "xxxx"
    
    	_, err = liveClient.UpdateCasterSceneConfig(request)
    	if err != nil {
    		t.Fatal(err)
    	}
    }

    關于UpdateCasterSceneConfig接口的請求參數等更多信息,請參見更新導播場景配置

  • 停止導播臺

    package caster
    
    import (
    	"github.com/aliyun/alibaba-cloud-sdk-go/services/live"
    	"github.com/go-ini/ini"
    	"testing"
    )
    
    // 停止導播臺
    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"
    	"github.com/go-ini/ini"
    	"testing"
    )
    
    // 刪除虛擬演播廳布局
    func DeleteStudioLayout(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)
    	}
    	request := live.CreateDeleteStudioLayoutRequest()
    	request.Scheme = "https"
    	request.CasterId = "xxxx"
    	request.LayoutId = "xxxx"
    	
    	_, err = liveClient.DeleteStudioLayout(request)
    	if err != nil {
    		t.Fatal(err)
    	}
    }

    關于DeleteStudioLayout接口的更多信息,請參見刪除虛擬演播廳布局

  • 刪除導播臺

    package caster
    
    import (
    	"github.com/aliyun/alibaba-cloud-sdk-go/services/live"
    	"github.com/go-ini/ini"
    	"testing"
    )
    
    // 刪除導播臺
    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)
    	}
    	// 刪除導播臺
    	request := live.CreateDeleteCasterRequest()
    	request.Scheme = "https"
    	request.CasterId = "xxxx"
    	_, err = liveClient.DeleteCaster(request)
    	if err != nil {
    		t.Fatal(err)
    	}
    }

    關于DeleteCaster接口的更多信息,請參見刪除導播臺

  • 修改虛擬演播廳布局

    package caster
    
    import (
    	"github.com/aliyun/alibaba-cloud-sdk-go/services/live"
    	"github.com/go-ini/ini"
    	"testing"
    )
    
    // 修改虛擬演播廳布局
    func ModifyStudioLayout(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)
    	}
    	// 修改虛擬演播廳布局
    	request := live.CreateModifyStudioLayoutRequest()
    
    	request.Scheme = "https"
    
    	request.CasterId = "xxxx"
    	request.LayoutId = "xxxx"
    	request.LayoutName = "modify"
    	//request.CommonConfig = "{\"ChannelId\":\"RV01\" }"
    	request.BgImageConfig = "{ \"Id\":\"k12kj31kj23\", \"ImageUrl\":\"https://xxxxx_!!6000000005962-2-tps-1920-1080.png\", \"MaterialId\":\"\" }"
    	request.ScreenInputConfigList = "[{ \"Index\":\"1\", \"ChannelId\":\"RV01\", \"Color\":\"green\", \"PositionX\":\"0.1\", \"PositionY\":\"0.2\", \"HeightNormalized\":\"0.4\" } ]"
    	request.MediaInputConfigList = "[{ \"Id\":\"k12kj31****\", \"Index\":\"1\", \"ChannelId\":\"RV08\", \"FillMode\":\"none\", \"PositionRefer\":\"topLeft\", \"WidthNormalized\":\"0\", \"HeightNormalized\":\"0.4854\", \"PositionNormalized\":\"[0.3691, 0.1958]\" }]"
    	request.LayerOrderConfigList = "[{ \"Type\":\"background\", \"Id\":\"k12kj31kj23\" }, { \"Type\":\"media\", \"Id\":\"k12kj31****\" }]"
    
    	_, err = liveClient.ModifyStudioLayout(request)
    	if err != nil {
    		t.Fatal(err)
    	}
    }

    關于ModifyStudioLayout接口的相關信息,請參見修改虛擬演播廳布局

  • 查詢虛擬演播廳布局

    package caster
    
    import (
    	"github.com/aliyun/alibaba-cloud-sdk-go/services/live"
    	"github.com/go-ini/ini"
    	"testing"
    )
    
    // 獲取虛擬演播廳布局設置
    func DescribeStudioLayouts(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)
    	}
    	// 獲取虛擬演播廳布局設置
    	request := live.CreateDescribeStudioLayoutsRequest()
    	request.Scheme = "https"
    	request.CasterId = "xxxx"
    	//request.LayoutId = "xxxx"
    
    	_, err = liveClient.DescribeStudioLayouts(request)
    	if err != nil {
    		t.Fatal(err)
    	}
    }

    關于DescribeStudioLayouts接口的相關信息,請參見接口的相關信息,請參見查詢虛擬演播廳布局