全部产品
Search
文档中心

Object Storage Service:Mengelola LiveChannels (Go SDK V1)

更新时间:Nov 29, 2025

Topik ini menjelaskan operasi umum pada LiveChannels, seperti membuat, menampilkan daftar, dan menghapus LiveChannels.

Membuat LiveChannel

Sebelum mengunggah data audio dan video melalui Real-Time Messaging Protocol (RTMP), Anda harus memanggil operasi PutLiveChannel untuk membuat LiveChannel. Operasi ini mengembalikan URL ingest RTMP dan URL pemutaran yang sesuai.

Penting

URL yang dikembalikan dapat digunakan untuk pengambilan aliran (stream ingest) dan pemutaran. Selain itu, Anda dapat menggunakan nama LiveChannel untuk melakukan operasi terkait, seperti menanyakan status pengambilan aliran, menanyakan catatan pengambilan aliran, dan menonaktifkan pengambilan aliran.

Kode berikut menunjukkan cara membuat 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() {
    // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
    provider, err := oss.NewEnvironmentVariableCredentialsProvider()
    if err != nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // Buat instans OSSClient.
    // Atur Endpoint ke yang sesuai dengan bucket Anda. Misalnya, jika bucket Anda berada di wilayah China (Hangzhou), atur Endpoint ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, sesuaikan Endpoint-nya.
    client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider))
    if err != nil {
        HandleError(err)
    }

    // Tentukan nama bucket yang menyimpan LiveChannel.
    bucketName := "srcexamplebucket"
    bucket,err := client.Bucket(bucketName)

    if err != nil {
        HandleError(err)
    }

    // Tentukan nama LiveChannel. Nama tidak boleh mengandung garis miring (/).
    channelName := "mychannel"
    // Jika Type diatur ke HLS, tentukan nama file .m3u8 yang dihasilkan. Nama harus diakhiri dengan .m3u8 dan panjangnya antara 6 hingga 128 byte.
    playlistName := "playlist.m3u8"
    // Tentukan nama bucket yang menyimpan snapshot frekuensi tinggi.
    destBucketName := "destexamplebucket"
    // Tentukan nama topik lightweight MSMQ. Topik ini digunakan untuk memberi tahu pengguna tentang hasil operasi snapshot frekuensi tinggi.
    notify := "exampletopic"
    target := oss.LiveChannelTarget{
        PlaylistName: playlistName,
        // Tentukan jenis dump. Hanya HLS yang didukung.
        Type:         "HLS",
        // Jika Type diatur ke HLS, tentukan jumlah file .ts dalam file .m3u8.
        FragCount:   3,
        // Tentukan durasi setiap file .ts dalam detik.
        FragDuration:   5,
    }
   
    snapshot := oss.LiveChannelSnapshot{
        // Nama role yang digunakan untuk operasi snapshot frekuensi tinggi. Role tersebut harus memiliki izin tulis pada DestBucket dan izin untuk mengirim pesan ke NotifyTopic.
        RoleName:    "examplerole",
        // Interval snapshot frekuensi tinggi dalam detik. Nilainya harus antara 1 hingga 100.
        Interval:    10,        
        DestBucket:  destBucketName,
        NotifyTopic: notify,
    }
    config := oss.LiveChannelConfiguration{
        // Tentukan deskripsi LiveChannel. Panjang maksimum adalah 128 byte.
        Description : "this is my channel",
        // Tentukan status LiveChannel. Pada contoh ini, status diatur ke enabled. Untuk menonaktifkan LiveChannel, atur parameter ini ke disabled.
        Status:      "enabled",
        Target:      target,
        Snapshot: &snapshot,
    }

    // Buat LiveChannel.
   data, err := bucket.CreateLiveChannel(channelName, config)
   if err != nil {
       HandleError(err)
   }
   fmt.Println(data)
}

Daftar LiveChannels

Kode berikut menunjukkan cara menampilkan daftar LiveChannels tertentu.

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() {
    // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
    provider, err := oss.NewEnvironmentVariableCredentialsProvider()
    if err != nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // Buat instans OSSClient.
    // Atur Endpoint ke yang sesuai dengan bucket Anda. Misalnya, jika bucket Anda berada di wilayah China (Hangzhou), atur Endpoint ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, sesuaikan Endpoint-nya.
    client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider))
    if err != nil {
        HandleError(err)
    }

    // Tentukan nama bucket.
    bucketName := "yourBucketName"
    bucket,err := client.Bucket(bucketName)
    // Tampilkan semua LiveChannels yang memiliki awalan "test".
    prefix := "test"

    if err != nil {
        HandleError(err)
    }

    // Tampilkan daftar LiveChannels.
    result, err := bucket.ListLiveChannel(oss.Prefix(prefix))
    if err != nil {
        HandleError(err)
    }
    fmt.Println(result)
}

Atur status LiveChannel

Kode berikut menunjukkan cara mengatur status 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() {
    // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
    provider, err := oss.NewEnvironmentVariableCredentialsProvider()
    if err != nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // Buat instans OSSClient.
    // Atur Endpoint ke yang sesuai dengan bucket Anda. Misalnya, jika bucket Anda berada di wilayah China (Hangzhou), atur Endpoint ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, sesuaikan Endpoint-nya.
    client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider))
    if err != nil {
        HandleError(err)
    }

    // Tentukan nama bucket.
    bucketName := "yourBucketName"
    bucket,err := client.Bucket(bucketName)
    // Tentukan nama LiveChannel.
    channelName := "mychannel"
   
    if err != nil {
         HandleError(err)
    }

    // LiveChannel dapat diaktifkan atau dinonaktifkan.
    // Jika LiveChannel dinonaktifkan, OSS akan menolak permintaan pengambilan aliran ke LiveChannel ini. Jika klien sedang melakukan pengambilan aliran ke LiveChannel ini, klien tersebut akan diputus. Proses ini mungkin memerlukan waktu sekitar 10 detik.
    err = bucket.PutLiveChannelStatus(channelName,"disabled")
    if err != nil {
        HandleError(err)
     }
}

Dapatkan URL yang ditandatangani untuk LiveChannel

Kode berikut menunjukkan cara mendapatkan URL yang ditandatangani untuk LiveChannel.

package main

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

func main() {

    // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
    provider, err := oss.NewEnvironmentVariableCredentialsProvider()
    if err != nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // Buat instans OSSClient.
    // Atur Endpoint ke yang sesuai dengan bucket Anda. Misalnya, jika bucket Anda berada di wilayah China (Hangzhou), atur Endpoint ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, sesuaikan Endpoint-nya.
    client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider))
    if err != nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // Tentukan nama bucket, misalnya examplebucket.
    bucket, err := client.Bucket("examplebucket")
    if err != nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }
    // Tentukan nama LiveChannel.
    channelName := "test-sign-rtmp-url"
    // Tentukan nama playlist.
    playlistName := "playlist.m3u8"
    // Waktu kedaluwarsa dalam stempel waktu UNIX. Contoh ini mengatur waktu kedaluwarsa satu jam dari sekarang.
    expiration := time.Now().Unix() + 3600
    result, err := bucket.SignRtmpURL(channelName,playlistName,expiration)
    if err != nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }
    fmt.Println("Signed RTMP URL:" + result)
}

Dapatkan informasi status LiveChannel

Kode berikut menunjukkan cara mengambil status pengambilan aliran dari LiveChannel tertentu.

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() {
    // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
    provider, err := oss.NewEnvironmentVariableCredentialsProvider()
    if err != nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // Buat instans OSSClient.
    // Atur Endpoint ke yang sesuai dengan bucket Anda. Misalnya, jika bucket Anda berada di wilayah China (Hangzhou), atur Endpoint ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, sesuaikan Endpoint-nya.
    client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider))
    if err != nil {
        HandleError(err)
    }

    // Tentukan nama bucket.
    bucketName := "yourBucketName"
    bucket,err := client.Bucket(bucketName)
    // Tentukan nama LiveChannel.
    channelName := "mychannel"

    if err != nil {
        HandleError(err)
    }

    // Dapatkan informasi status LiveChannel.
    result,err := bucket.GetLiveChannelStat(channelName)
    if err != nil {
        HandleError(err)
    }
    fmt.Println(result)
}

Dapatkan konfigurasi LiveChannel

Kode berikut menunjukkan cara mengambil konfigurasi LiveChannel tertentu.

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() {
    // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
    provider, err := oss.NewEnvironmentVariableCredentialsProvider()
    if err != nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // Buat instans OSSClient.
    // Atur Endpoint ke yang sesuai dengan bucket Anda. Misalnya, jika bucket Anda berada di wilayah China (Hangzhou), atur Endpoint ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, sesuaikan Endpoint-nya.
    client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider))
    if err != nil {
        HandleError(err)
    }

    // Tentukan nama bucket.
    bucketName := "yourBucketName"
    bucket,err := client.Bucket(bucketName)
    // Tentukan nama LiveChannel.
    channelName := "mychannel"

    if err != nil {
        HandleError(err)
    }

    // Dapatkan konfigurasi LiveChannel.
    result,err := bucket.GetLiveChannelInfo(channelName)
    if err != nil {
        HandleError(err)
    }
    fmt.Println(result)
}

Buat daftar putar untuk LiveChannel

Operasi PostVodPlaylist menghasilkan playlist video sesuai permintaan (VOD) untuk LiveChannel tertentu. OSS menanyakan file .ts yang dihasilkan dari pengambilan aliran ke LiveChannel dalam rentang waktu tertentu, lalu menggabungkannya menjadi playlist .m3u8.

Kode berikut menunjukkan cara membuat playlist untuk 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() {
    // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
    provider, err := oss.NewEnvironmentVariableCredentialsProvider()
    if err != nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // Buat instans OSSClient.
    // Atur Endpoint ke yang sesuai dengan bucket Anda. Misalnya, jika bucket Anda berada di wilayah China (Hangzhou), atur Endpoint ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, sesuaikan Endpoint-nya.
    client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider))
    if err != nil {
        HandleError(err)
    }

    // Tentukan nama bucket.
    bucketName := "yourBucketName"
    bucket,err := client.Bucket(bucketName)
    // Tentukan nama LiveChannel.
    channelName := "mychannel"
    playlistName := "playlist.m3u8"
    // Tentukan waktu akhir untuk menanyakan file .ts. Nilai default adalah waktu saat ini.
    endTime := time.Now().Add(time.Minute)
    // Tentukan waktu mulai untuk menanyakan file .ts. Nilai default adalah 60 menit sebelum waktu saat ini.
    startTime := endTime.Add(-60 * time.Minute)

    if err != nil {
        HandleError(err)
    }

    // Buat playlist untuk LiveChannel.
    err = bucket.PostVodPlaylist(channelName,playlistName,startTime,endTime)
    if err != nil {
        HandleError(err)
    }
}

Lihat playlist LiveChannel

Kode berikut menunjukkan cara melihat playlist yang dihasilkan dari pengambilan aliran untuk LiveChannel tertentu dalam periode waktu tertentu.

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() {
    // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
    provider, err := oss.NewEnvironmentVariableCredentialsProvider()
    if err != nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // Buat instans OSSClient.
    // Atur Endpoint ke yang sesuai dengan bucket Anda. Misalnya, jika bucket Anda berada di wilayah China (Hangzhou), atur Endpoint ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, sesuaikan Endpoint-nya.
    client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider))
    if err != nil {
        HandleError(err)
    }

    // Tentukan nama bucket.
    bucketName := "yourBucketName"
    bucket,err := client.Bucket(bucketName)
    // Tentukan nama LiveChannel.
    channelName := "mychannel"
    
    // Tentukan waktu akhir untuk menanyakan file .ts. Nilai default adalah waktu saat ini.
    endTime := time.Now().Add(time.Minute)
    // Tentukan waktu mulai untuk menanyakan file .ts. Nilai default adalah 60 menit sebelum waktu saat ini.
    startTime := endTime.Add(-60 * time.Minute)

    if err != nil {
        HandleError(err)
    }

    // Lihat playlist LiveChannel.
    result,err := bucket.GetVodPlaylist(channelName,startTime,endTime)
    if err != nil {
        HandleError(err)
    }
    fmt.Println(result)
}

Dapatkan catatan pengambilan aliran LiveChannel

Operasi GetLiveChannelHistory mengembalikan 10 catatan pengambilan aliran terakhir untuk LiveChannel tertentu.

Kode berikut menunjukkan cara mengambil catatan pengambilan aliran 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() {
    // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
    provider, err := oss.NewEnvironmentVariableCredentialsProvider()
    if err != nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // Buat instans OSSClient.
    // Atur Endpoint ke yang sesuai dengan bucket Anda. Misalnya, jika bucket Anda berada di wilayah China (Hangzhou), atur Endpoint ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, sesuaikan Endpoint-nya.
    client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider))
    if err != nil {
        HandleError(err)
    }

    // Tentukan nama bucket.
    bucketName := "yourBucketName"
    bucket,err := client.Bucket(bucketName)
    // Tentukan nama LiveChannel.
    channelName := "mychannel"

    if err != nil {
        HandleError(err)
    }

    // Dapatkan catatan pengambilan aliran LiveChannel.
    result,err := bucket.GetLiveChannelHistory(channelName)
    if err != nil {
        HandleError(err)
    }
    fmt.Println(result)
}

Hapus LiveChannel

Penting
  • Jika klien sedang melakukan pengambilan aliran ke LiveChannel, permintaan penghapusan akan gagal.

  • Operasi DeleteLiveChannel hanya menghapus LiveChannel dan tidak menghapus file yang dihasilkan dari pengambilan aliran.

Kode berikut menunjukkan cara menghapus LiveChannel tertentu.

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() {
    // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
    provider, err := oss.NewEnvironmentVariableCredentialsProvider()
    if err != nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }

    // Buat instans OSSClient.
    // Atur Endpoint ke yang sesuai dengan bucket Anda. Misalnya, jika bucket Anda berada di wilayah China (Hangzhou), atur Endpoint ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, sesuaikan Endpoint-nya.
    client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider))
    if err != nil {
        HandleError(err)
    }

    // Tentukan nama bucket.
    bucketName := "yourBucketName"
    bucket,err := client.Bucket(bucketName)
    // Tentukan nama LiveChannel.
    channelName := "mychannel"

    if err != nil {
        HandleError(err)
    }

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

Referensi