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

通用型導播臺API調用Demo

本文提供了直接調用通用型導播臺openAPI的Demo,具體邏輯請根據實際情況自行編寫。

導播臺生命流程

通用型導播臺整個生命流程順序如下 :

重要

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

  1. 創建導播臺

  2. 設置導播臺

  3. 添加視頻資源

  4. 添加布局

  5. (可選)添加組件

    組件包括ET字幕、圖片、文字等,可以不創建,請根據實際情況選擇是否使用。

  6. 啟動導播臺

  7. 設置播放場景

  8. 停止導播臺

  9. 刪除導播臺

示例代碼

說明
  • 創建導播臺

    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 = "1"
        _, 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 (
        "github.com/aliyun/alibaba-cloud-sdk-go/services/live"
        "testing"
      	"github.com/go-ini/ini"
    )
    
    // 添加資源
    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"
        "testing"
    		"github.com/go-ini/ini"
    )
    
    // 添加布局
    func AddCasterLayout(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)
      	}
    
        // 創建布局
        addCasterLayoutRequest := live.CreateAddCasterLayoutRequest()
        addCasterLayoutRequest.CasterId = "xxx"
        addCasterLayoutRequest.BlendList = &[]string{"RV01"} // 對應于視頻的位置
        addCasterLayoutRequest.MixList = &[]string{"RV01"} // 對應于視頻的位置
        addCasterLayoutRequest.AudioLayer = &[]live.AddCasterLayoutAudioLayer{
            {
                VolumeRate:         "1",
                ValidChannel:       "all",
                FixedDelayDuration: "0",
            },
        }
        addCasterLayoutRequest.VideoLayer = &[]live.AddCasterLayoutVideoLayer{
            {
                FillMode:           "fit",
                HeightNormalized:   "1",
                WidthNormalized:    "1",
                PositionRefer:      "topLeft",
                PositionNormalized: &[]string{"0", "0"},
                FixedDelayDuration: "0",
            },
        }
        _, err = liveClient.AddCasterLayout(addCasterLayoutRequest)
        if err != nil {
            t.Fatal(err)
        }
    }

    關于AddCasterLayout接口的更多信息,請參見添加導播臺布局

  • 添加ET字幕組件并應用到場景

    package caster
    
    import (
        "github.com/aliyun/alibaba-cloud-sdk-go/services/live"
        "testing"
      	"github.com/go-ini/ini"
    )
    
    // 添加ET字幕組件并應用到場景
    func AddETComponent(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)
      	}
        // 此方法前提: 導播臺已經存在,且添加的視頻資源是直播流,且locationID是RV01
        // 注:ET字幕必須是直播流才有效
        casterID := "xxxxx"
        // 創建組件
        r := live.CreateAddCasterComponentRequest()
        r.CasterId = casterID
        r.ComponentType = "caption"
        r.ComponentName = "ET字幕測試使用"
        r.Effect = "none"
        r.LocationId = "RC01"
        r.ComponentLayer = `{"HeightNormalized":"1","WidthNormalized":"1","PositionRefer":"topLeft","PositionNormalized":["0.05", "0.7"]}`
        // 字幕具體字段請參考:AddCasterComponent文檔內的【CaptionLayerContent】字段說明
        // 其中新增以下字段,目前官網文檔尚未更新,請注意
        // BoxWidthNormalized:文字背景寬度歸一化值,該歸一化值是基于文字的size來計算的,即boxWidth/font_size, 如果系統歸一化反計算出來的值超過16,取16. 默認0。
        // BoxColor:文字背景色彩,取值格式為 0xRGBA,比如: 取值"0xff0000ff" 表示紅色, 不透明; 默認"" 表示無效。
        // ShadowxWidthNormalized:文字陰影x坐標歸一化值,該歸一化值是基于文字的size來計算的,即shadowxWidth/font_size, 如果系統歸一化反計算出來的值超過16,取16. 默認0。
        // ShadowyWidthNormalized:文字陰影y坐標歸一化值,該歸一化值是基于文字的size來計算的,即shadowyWidth/font_size, 如果系統歸一化反計算出來的值超過16,取16. 默認0。
        // ShadowColor:文字陰影色彩,取值格式為 0xRGBA,比如: 取值"0xff0000ff" 表示紅色, 不透明; 默認"" 表示無效。
        r.CaptionLayerContent = `{
            "SizeNormalized": 0.05,
            "Color": "0xFFFFFF",
            "LocationId": "RV01",
            "BorderColor": "0x696969",
            "BorderWidthNormalized": 0.1,
            "BoxColor": "0xffffff",
            "BoxWidthNormalized": 0.7,
            "ShadowColor": "0x3c3c3c",
            "ShadowxWidthNormalized": 0.4,
            "ShadowyWidthNormalized": 0.4,
            "SourceLan": "cn",
            "TargetLan": "en",
            "PtsOffset": -1000,
            "SourceLanPerLineWordCount": 28,
            "TargetLanPerLineWordCount": 60,
            "ShowSourceLan": true,
            "ShowTargetLan": true,
            "Truncation": false,
            "AppearDuration": 20000,
            "AppearMode": "Movie"
        }`
        addCasterComponentResp, err := liveClient.AddCasterComponent(r)
        if err != nil {
            t.Fatal(err)
        }
    
        // 應用組件到指定的場景下
        setCasterSceneConfigRequest := live.CreateUpdateCasterSceneConfigRequest()
        setCasterSceneConfigRequest.LayoutId = "xxxxx"
        setCasterSceneConfigRequest.CasterId = casterID
        setCasterSceneConfigRequest.SceneId = "xxxx"
        setCasterSceneConfigRequest.ComponentId = &[]string{addCasterComponentResp.ComponentId}
        _, err = liveClient.UpdateCasterSceneConfig(setCasterSceneConfigRequest)
        if err != nil {
            t.Fatal(err)
        }
    }

    關于AddCasterComponent接口的更多信息,請參見添加導播臺組件

    關于SetCasterSceneConfig接口的更多信息,請參見設置場景配置

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

    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 (
        "github.com/aliyun/alibaba-cloud-sdk-go/services/live"
        "testing"
      	"github.com/go-ini/ini"
    )
    // 切換布局
    func ChangeLayout(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)
      	}
        casterID := "xxxxxx"
    
        // 更改場景使用的布局ID
        setCasterSceneConfigRequest := live.CreateUpdateCasterSceneConfigRequest()
        setCasterSceneConfigRequest.LayoutId = "xxxxxxxxxxxx"
        setCasterSceneConfigRequest.CasterId = casterID
        setCasterSceneConfigRequest.SceneId = "xxxxxxxxxxxxxx"
        _, err = liveClient.UpdateCasterSceneConfig(setCasterSceneConfigRequest)
        if err != nil {
            t.Fatal(err)
        }
    }

    關于SetCasterSceneConfig接口的更多信息,請參見設置場景配置

  • 停止導播臺

    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接口的更多信息,請參見刪除導播臺