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

Go管理LiveChannel

更新時(shí)間:

本文介紹LiveChannel常見操作,例如創(chuàng)建LiveChannel、列舉LiveChannel及刪除LiveChannel等。

創(chuàng)建LiveChannel

通過RTMP協(xié)議上傳音視頻數(shù)據(jù)前,必須先調(diào)用該接口創(chuàng)建一個(gè)LiveChannel。調(diào)用PutLiveChannel接口會返回RTMP推流地址,以及對應(yīng)的播放地址。

重要

您可以使用返回的地址進(jìn)行推流、播放,您還可以根據(jù)該LiveChannel的名稱來發(fā)起相關(guān)的操作,如查詢推流狀態(tài)、查詢推流記錄、禁止推流等。

以下代碼用于創(chuàng)建LiveChannel:

package main

import (
    "fmt"
    "github.com/aliyun/aliyun-oss-go-sdk/oss"
    "os"
)

func HandleError(err error) {
    fmt.Println("Error:", err)
    os.Exit(-1)
}



func main() {
    /// 從環(huán)境變量中獲取訪問憑證。運(yùn)行本代碼示例之前,請確保已設(shè)置環(huán)境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
    provider, err := oss.NewEnvironmentVariableCredentialsProvider()
    if err != nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // 創(chuàng)建OSSClient實(shí)例。
    // yourEndpoint填寫B(tài)ucket對應(yīng)的Endpoint,以華東1(杭州)為例,填寫為https://oss-cn-hangzhou.aliyuncs.com。其它Region請按實(shí)際情況填寫。
    client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider))
    if err != nil {
        HandleError(err)
    }

    // 填寫用于存儲LiveChannel的Bucket名稱。
    bucketName := "srcexamplebucket"
    bucket,err := client.Bucket(bucketName)

    if err != nil {
        HandleError(err)
    }

    // 填寫LiveChannel名稱,LiveChannel名稱不能包含正斜線(/)。
    channelName := "mychannel"
    // 當(dāng)Type為HLS時(shí),指定生成的m3u8文件的名稱。名稱必須以”.m3u8”結(jié)尾,長度范圍為6~128字節(jié)。
    playlistName := "playlist.m3u8"
    // 填寫保存高頻截圖的Bucket名稱。
    destBucketName := "destexamplebucket"
    // 填寫輕量消息隊(duì)列SMQ的Topic名稱,該Topic用于通知用戶高頻截圖操作結(jié)果。
    notify := "exampletopic"
    target := oss.LiveChannelTarget{
        PlaylistName: playlistName,
        // 指定轉(zhuǎn)儲的類型,目前僅支持HLS。
        Type:         "HLS",
        // 當(dāng)Type為HLS時(shí),指定m3u8文件中包含ts文件的個(gè)數(shù)。
        FragCount:   3,
        // 指定每個(gè)ts文件的時(shí)長,單位為秒。
        FragDuration:   5,
    }
   
    snapshot := oss.LiveChannelSnapshot{
        // 用于高頻截圖操作的角色名稱,要求有DestBucket的寫入權(quán)限以及向NotifyTopic發(fā)送消息的權(quán)限。
        RoleName:    "examplerole",
        // 高頻截圖的間隔長度,單位為秒,取值范圍為1~100。
        Interval:    10,        
        DestBucket:  destBucketName,
        NotifyTopic: notify,
    }
    config := oss.LiveChannelConfiguration{
        // 填寫LiveChannel的描述信息,最大長度不能超過128字節(jié)。
        Description : "this is my channel",
        // 指定LiveChannel的狀態(tài)。此處指定為enabled,表示啟用LiveChannel。如需禁用LiveChannel,請將該參數(shù)設(shè)置為disabled。
        Status:      "enabled",
        Target:      target,
        Snapshot: &snapshot,
    }

    // 創(chuàng)建LiveChannel。
   data, err := bucket.CreateLiveChannel(channelName, config)
   if err != nil {
       HandleError(err)
   }
   fmt.Println(data)
}

列舉LiveChannel

以下代碼用于列舉指定的LiveChannel。

package main

import (
    "fmt"
    "github.com/aliyun/aliyun-oss-go-sdk/oss"
    "os"
)

func HandleError(err error) {
    fmt.Println("Error:", err)
    os.Exit(-1)
}

func main() {
    /// 從環(huán)境變量中獲取訪問憑證。運(yùn)行本代碼示例之前,請確保已設(shè)置環(huán)境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
    provider, err := oss.NewEnvironmentVariableCredentialsProvider()
    if err != nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // 創(chuàng)建OSSClient實(shí)例。
    // yourEndpoint填寫B(tài)ucket對應(yīng)的Endpoint,以華東1(杭州)為例,填寫為https://oss-cn-hangzhou.aliyuncs.com。其它Region請按實(shí)際情況填寫。
    client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider))
    if err != nil {
        HandleError(err)
    }

    // 填寫存儲空間名稱。
    bucketName := "yourBucketName"
    bucket,err := client.Bucket(bucketName)
    // 指定列舉以“test”為前綴的所有LiveChannel。
    prefix := "test"

    if err != nil {
        HandleError(err)
    }

    // 列舉LiveChannel。
    result, err := bucket.ListLiveChannel(oss.Prefix(prefix))
    if err != nil {
        HandleError(err)
    }
    fmt.Println(result)
}

設(shè)置LiveChannel狀態(tài)

以下代碼用于設(shè)置LiveChannel狀態(tài)。

package main

import (
    "fmt"
    "github.com/aliyun/aliyun-oss-go-sdk/oss"
    "os"
)

func HandleError(err error) {
    fmt.Println("Error:", err)
    os.Exit(-1)
}

func main() {
    /// 從環(huán)境變量中獲取訪問憑證。運(yùn)行本代碼示例之前,請確保已設(shè)置環(huán)境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
    provider, err := oss.NewEnvironmentVariableCredentialsProvider()
    if err != nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // 創(chuàng)建OSSClient實(shí)例。
    // yourEndpoint填寫B(tài)ucket對應(yīng)的Endpoint,以華東1(杭州)為例,填寫為https://oss-cn-hangzhou.aliyuncs.com。其它Region請按實(shí)際情況填寫。
    client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider))
    if err != nil {
        HandleError(err)
    }

    // 填寫存儲空間名稱。
    bucketName := "yourBucketName"
    bucket,err := client.Bucket(bucketName)
    // 填寫LiveChannel名稱。
    channelName := "mychannel"
   
    if err != nil {
         HandleError(err)
    }

    // LiveChannel分為啟用(enabled)和禁用(disabled)兩種狀態(tài)。
    // LiveChannel處于disabled狀態(tài)時(shí),OSS會禁止您向該LiveChannel進(jìn)行推流操作。如果您正在向該LiveChannel推流,那么推流的客戶端會被強(qiáng)制斷開(會有10s左右的延遲)。
    err = bucket.PutLiveChannelStatus(channelName,"disabled")
    if err != nil {
        HandleError(err)
     }
}

獲取LiveChannel鑒權(quán)地址

以下代碼用于獲取LiveChannel鑒權(quán)地址。

package main

import (
    "fmt"
    "github.com/aliyun/aliyun-oss-go-sdk/oss"
    "os"
)

func main() {

    /// 從環(huán)境變量中獲取訪問憑證。運(yùn)行本代碼示例之前,請確保已設(shè)置環(huán)境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
    provider, err := oss.NewEnvironmentVariableCredentialsProvider()
    if err != nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // 創(chuàng)建OSSClient實(shí)例。
    // yourEndpoint填寫B(tài)ucket對應(yīng)的Endpoint,以華東1(杭州)為例,填寫為https://oss-cn-hangzhou.aliyuncs.com。其它Region請按實(shí)際情況填寫。
    client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider))
    if err != nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // 填寫B(tài)ucket名稱,例如examplebucket。
    bucket, err := client.Bucket("examplebucket")
    if err != nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }
    // 填寫LiveChannel名稱。
    channelName := "test-sign-rtmp-url"
    // 填寫playlist名稱。
    playlistName := "playlist.m3u8"
    // expiration表示過期時(shí)間,單位為Unix時(shí)間戳。本示例以設(shè)置過期時(shí)間為1小時(shí)為例。
    expiration := time.Now().Unix() + 3600
    result, err := bucket.SignRtmpURL(channelName,playlistName,expiration)
    if err != nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }
    fmt.Println("Sign Rtmp url:"+result)
}

獲取LiveChannel狀態(tài)信息

以下代碼用于獲取指定LiveChannel的推流狀態(tài)信息。

package main

import (
    "fmt"
    "github.com/aliyun/aliyun-oss-go-sdk/oss"
    "os"
)

func HandleError(err error) {
    fmt.Println("Error:", err)
    os.Exit(-1)
}

func main() {
    /// 從環(huán)境變量中獲取訪問憑證。運(yùn)行本代碼示例之前,請確保已設(shè)置環(huán)境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
    provider, err := oss.NewEnvironmentVariableCredentialsProvider()
    if err != nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // 創(chuàng)建OSSClient實(shí)例。
    // yourEndpoint填寫B(tài)ucket對應(yīng)的Endpoint,以華東1(杭州)為例,填寫為https://oss-cn-hangzhou.aliyuncs.com。其它Region請按實(shí)際情況填寫。
    client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider))
    if err != nil {
        HandleError(err)
    }

    // 填寫存儲空間名稱。
    bucketName := "yourBucketName"
    bucket,err := client.Bucket(bucketName)
    // 填寫LiveChannel名稱。
    channelName := "mychannel"

    if err != nil {
        HandleError(err)
    }

    // 獲取LiveChannel狀態(tài)信息。
    result,err := bucket.GetLiveChannelStat(channelName)
    if err != nil {
        HandleError(err)
    }
    fmt.Println(result)
}

獲取LiveChannel配置信息

以下代碼用于獲取指定LiveChannel的配置信息。

package main

import (
    "fmt"
    "github.com/aliyun/aliyun-oss-go-sdk/oss"
    "os"
)

func HandleError(err error) {
    fmt.Println("Error:", err)
    os.Exit(-1)
}

func main() {
    /// 從環(huán)境變量中獲取訪問憑證。運(yùn)行本代碼示例之前,請確保已設(shè)置環(huán)境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
    provider, err := oss.NewEnvironmentVariableCredentialsProvider()
    if err != nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // 創(chuàng)建OSSClient實(shí)例。
    // yourEndpoint填寫B(tài)ucket對應(yīng)的Endpoint,以華東1(杭州)為例,填寫為https://oss-cn-hangzhou.aliyuncs.com。其它Region請按實(shí)際情況填寫。
    client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider))
    if err != nil {
        HandleError(err)
    }

    // 填寫存儲空間名稱。
    bucketName := "yourBucketName"
    bucket,err := client.Bucket(bucketName)
    // 填寫LiveChannel名稱。
    channelName := "mychannel"

    if err != nil {
        HandleError(err)
    }

    // 獲取LiveChannel配置信息。
    result,err := bucket.GetLiveChannelInfo(channelName)
    if err != nil {
        HandleError(err)
    }
    fmt.Println(result)
}

生成LiveChannel播放列表

PostVodPlaylist接口用于為指定的LiveChannel生成一個(gè)點(diǎn)播用的播放列表。OSS會查詢指定時(shí)間范圍內(nèi)由該LiveChannel推流生成的ts文件,并將其拼裝為一個(gè)m3u8播放列表。

以下代碼用于生成LiveChannel播放列表。

package main

import (
    "fmt"
    "github.com/aliyun/aliyun-oss-go-sdk/oss"
    "os"
)

func HandleError(err error) {
    fmt.Println("Error:", err)
    os.Exit(-1)
}

func main() {
    /// 從環(huán)境變量中獲取訪問憑證。運(yùn)行本代碼示例之前,請確保已設(shè)置環(huán)境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
    provider, err := oss.NewEnvironmentVariableCredentialsProvider()
    if err != nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // 創(chuàng)建OSSClient實(shí)例。
    // yourEndpoint填寫B(tài)ucket對應(yīng)的Endpoint,以華東1(杭州)為例,填寫為https://oss-cn-hangzhou.aliyuncs.com。其它Region請按實(shí)際情況填寫。
    client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider))
    if err != nil {
        HandleError(err)
    }

    // 填寫存儲空間名稱。
    bucketName := "yourBucketName"
    bucket,err := client.Bucket(bucketName)
    // 填寫LiveChannel名稱。
    channelName := "mychannel"
    playlistName := "playlist.m3u8"
    // 指定查詢ts文件的終止時(shí)間,默認(rèn)與當(dāng)前時(shí)間一致。
    endTime := time.Now().Add(time.Minute)
    // 指定查詢ts文件的起始時(shí)間,默認(rèn)為當(dāng)前時(shí)間前60分鐘。
    startTime := endTime.Add(-60 * time.Minute)

    if err != nil {
        HandleError(err)
    }

    // 生成LiveChannel播放列表。
    err = bucket.PostVodPlaylist(channelName,playlistName,startTime,endTime)
    if err != nil {
        HandleError(err)
    }
}

查看LiveChannel播放列表

以下代碼用于查看指定LiveChannel在指定時(shí)間段內(nèi)推流生成的播放列表。

package main

import (
    "fmt"
    "github.com/aliyun/aliyun-oss-go-sdk/oss"
    "os"
)

func HandleError(err error) {
    fmt.Println("Error:", err)
    os.Exit(-1)
}

func main() {
    /// 從環(huán)境變量中獲取訪問憑證。運(yùn)行本代碼示例之前,請確保已設(shè)置環(huán)境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
    provider, err := oss.NewEnvironmentVariableCredentialsProvider()
    if err != nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // 創(chuàng)建OSSClient實(shí)例。
    // yourEndpoint填寫B(tài)ucket對應(yīng)的Endpoint,以華東1(杭州)為例,填寫為https://oss-cn-hangzhou.aliyuncs.com。其它Region請按實(shí)際情況填寫。
    client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider))
    if err != nil {
        HandleError(err)
    }

    // 填寫存儲空間名稱。
    bucketName := "yourBucketName"
    bucket,err := client.Bucket(bucketName)
    // 填寫LiveChannel名稱。
    channelName := "mychannel"
    
    // 指定查詢ts文件的終止時(shí)間,默認(rèn)與當(dāng)前時(shí)間一致。
    endTime := time.Now().Add(time.Minute)
    // 指定查詢ts文件的起始時(shí)間,默認(rèn)為當(dāng)前時(shí)間前60分鐘。
    startTime := endTime.Add(-60 * time.Minute)

    if err != nil {
        HandleError(err)
    }

    // 查看LiveChannel播放列表。
    result,err := bucket.GetVodPlaylist(channelName,startTime,endTime)
    if err != nil {
        HandleError(err)
    }
    fmt.Println(result)
}

獲取LiveChannel推流記錄

使用GetLiveChannelHistory接口最多會返回指定LiveChannel最近的10次推流記錄。

以下代碼用于獲取LiveChannel推流記錄。

package main

import (
    "fmt"
    "github.com/aliyun/aliyun-oss-go-sdk/oss"
    "os"
)

func HandleError(err error) {
    fmt.Println("Error:", err)
    os.Exit(-1)
}

func main() {
    /// 從環(huán)境變量中獲取訪問憑證。運(yùn)行本代碼示例之前,請確保已設(shè)置環(huán)境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
    provider, err := oss.NewEnvironmentVariableCredentialsProvider()
    if err != nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // 創(chuàng)建OSSClient實(shí)例。
    // yourEndpoint填寫B(tài)ucket對應(yīng)的Endpoint,以華東1(杭州)為例,填寫為https://oss-cn-hangzhou.aliyuncs.com。其它Region請按實(shí)際情況填寫。
    client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider))
    if err != nil {
        HandleError(err)
    }

    // 填寫存儲空間名稱。
    bucketName := "yourBucketName"
    bucket,err := client.Bucket(bucketName)
    // 填寫LiveChannel名稱。
    channelName := "mychannel"

    if err != nil {
        HandleError(err)
    }

    // 獲取LiveChannel推流記錄。
    result,err := bucket.GetLiveChannelHistory(channelName)
    if err != nil {
        HandleError(err)
    }
    fmt.Println(result)
}

刪除LiveChannel

重要
  • 當(dāng)有客戶端正在向LiveChannel推流時(shí),刪除請求會失敗。

  • DeleteLiveChannel接口只會刪除LiveChannel本身,不會刪除推流生成的文件。

以下代碼用于刪除指定的LiveChannel。

package main

import (
    "fmt"
    "github.com/aliyun/aliyun-oss-go-sdk/oss"
    "os"
)

func HandleError(err error) {
    fmt.Println("Error:", err)
    os.Exit(-1)
}

func main() {
    /// 從環(huán)境變量中獲取訪問憑證。運(yùn)行本代碼示例之前,請確保已設(shè)置環(huán)境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
    provider, err := oss.NewEnvironmentVariableCredentialsProvider()
    if err != nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // 創(chuàng)建OSSClient實(shí)例。
    // yourEndpoint填寫B(tài)ucket對應(yīng)的Endpoint,以華東1(杭州)為例,填寫為https://oss-cn-hangzhou.aliyuncs.com。其它Region請按實(shí)際情況填寫。
    client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider))
    if err != nil {
        HandleError(err)
    }

    // 填寫存儲空間名稱。
    bucketName := "yourBucketName"
    bucket,err := client.Bucket(bucketName)
    // 填寫LiveChannel名稱。
    channelName := "mychannel"

    if err != nil {
        HandleError(err)
    }

    // 刪除LiveChannel。
    err := bucket.DeleteLiveChannel(channelName)
    if err != nil {
        HandleError(err)
    }
 }

相關(guān)文檔

  • 關(guān)于LiveChannel的完整示例代碼,請參見GitHub示例

  • 關(guān)于創(chuàng)建LiveChannelAPI接口說明,請參見PutLiveChannel

  • 關(guān)于列舉LiveChannelAPI接口說明,請參見ListLiveChannel

  • 關(guān)于設(shè)置LiveChannelAPI接口說明,請參見PutLiveChannelStatus

  • 關(guān)于獲取LiveChannel狀態(tài)的API接口說明,請參見GetLiveChannelStat

  • 關(guān)于獲取LiveChannel配置信息的API接口說明,請參見GetLiveChannelInfo

  • 關(guān)于生成LiveChannel播放列表的API接口說明,請參見PostVodPlaylist

  • 關(guān)于查看LiveChannel播放列表的API接口說明,請參見GetVodPlaylist

  • 關(guān)于獲取LiveChannel推流記錄的API接口說明,請參見GetLiveChannelHistory

  • 關(guān)于刪除LiveChannelAPI接口說明,請參見DeleteLiveChannel