このトピックでは、LiveChannelsの作成、一覧表示、削除など、LiveChannelsで実行できる一般的な操作について説明します。
LiveChannelを作成する
リアルタイムメッセージングプロトコル (RTMP) を使用してオーディオおよびビデオデータをアップロードする前に、PutLiveChannel操作を呼び出してLiveChannelを作成する必要があります。 PutLiveChannelリクエストへの応答には、LiveChannelにストリームを取り込むために使用されるURLと、取り込まれたストリームを再生するために使用されるURLが含まれます。
返されたURLを使用して、ストリームを取り込み、再生できます。 ストリーム取り込みステータスの照会、ストリーム取り込みレコードの照会、ストリーム取り込みの無効化など、返されたLiveChannel名に基づいて操作を実行することもできます。
次のコードは、LiveChannelを作成する方法の例を示しています。
パッケージメイン
import (import (import)
"fmt"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
"os"
)
func HandleError (エラーエラー) {
fmt.Println("Error:", err)
os.Exit(-1)
}
func main() {
/// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Create an OSSClient instance.
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。
client, err := oss.New("yourEndpoint", ", " ", ", oss.SetCredentialsProvider(&provider))
if err! =nil {
HandleError(err)
}
// LiveChannelの格納に使用するバケットの名前を指定します。
bucketName := "srcexamplebucket"
bucket,err := client.Bucket(bucketName)
if err! =nil {
HandleError(err)
}
// 作成するLiveChannelの名前を指定します。 スラッシュ (/) を含めることはできません。
channelName := "mychannel"
// TypeをHLSに設定した場合、生成されるm3u8ファイルの名前を指定する必要があります。 名前の長さは6〜128バイトで、で終わる必要があります。m3u8。
playlistName := "playlist.m3u8"
// 高頻度のスナップショット操作の結果を格納するバケットの名前を指定します。
destBucketName := "destexamplebucket"
// 高頻度のスクリーンショット操作の結果をユーザーに通知するために使用されるMNSトピックの名前を指定します。
notify := "exampletopic"
target := oss.LiveChannelTarget {
PlaylistName: playlistName、
// LiveChannelがアップロードされたデータを保存する形式を指定します。 HLS形式のみがサポートされています。
タイプ: "HLS" 、
// TypeをHLSに設定した場合、m3u8ファイルに含まれるTSファイルの数を指定する必要があります。
FragCount: 3、
// 各TSファイルのデュレーションを指定します。 単位は秒です。
FragDuration: 5,
}
snapshot := oss.LiveChannelSnapshot {
// 高頻度のスナップショット操作を実行するために使用されるロールの名前を指定します。 ロールには、DestBucketに対する書き込み権限と、NotifyTopicにメッセージを送信する権限が必要です。
RoleName: "examplerole" 、
// 高頻度のスナップショット操作の間隔を指定します。 単位は秒です。 設定可能な値は 1~100 です。
インターバル: 10,
DestBucket: destBucketName、
NotifyTopic: notify、
}
config := oss.LiveChannelConfiguration {
// LiveChannelの説明を指定します。 説明の長さは最大128バイトです。
説明: 「これは私のチャンネルです」、
// LiveChannelのステータスを指定します。 この例では、Statusパラメーターはenabledに設定されています。 LiveChannelを無効にする場合は、Statusパラメーターをdisabledに設定します。
ステータス: "enabled" 、
ターゲット: Target、
スナップショット:&Snapshot、
}
// LiveChannelを作成します。
data, err := bucket.CreateLiveChannel(channelName, config)
if err! =nil {
HandleError(err)
}
fmt.Println (データ)
}
LiveChannelsのリスト
次のコードは、LiveChannelsを一覧表示する方法の例です。
パッケージメイン
import (import (import)
"fmt"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
"os"
)
func HandleError (エラーエラー) {
fmt.Println("Error:", err)
os.Exit(-1)
}
func main() {
/// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Create an OSSClient instance.
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。
client, err := oss.New("yourEndpoint", ", " ", ", oss.SetCredentialsProvider(&provider))
if err! =nil {
HandleError(err)
}
// バケットの名前を指定します。
bucketName := "yourBucketName"
bucket,err := client.Bucket(bucketName)
// 名前にテストプレフィックスを含むLiveChannelsがリストされるように指定します。
プレフィックス:= "test"
if err! =nil {
HandleError(err)
}
// LiveChannelsをリストします。
result, err := bucket.ListLiveChannel(oss.Prefix(prefix))
if err! =nil {
HandleError(err)
}
fmt.Println (結果)
}
LiveChannelのステータスを設定する
次のコードは、LiveChannelのステータスを設定する方法の例を示しています。
パッケージメイン
import (import (import)
"fmt"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
"os"
)
func HandleError (エラーエラー) {
fmt.Println("Error:", err)
os.Exit(-1)
}
func main() {
/// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Create an OSSClient instance.
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。
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は、有効または無効のいずれかの状態にすることができます。
// LiveChannelが無効状態の場合、LiveChannelにストリームを取り込むことはできません。 無効状態のLiveChannelにストリームを取り込むと、クライアントは約10秒後にLiveChannelから切断されます。
err = bucket.PutLiveChannelStatus(channelName、"disabled")
if err! =nil {
HandleError(err)
}
}
LiveChannelの署名付きURLの照会
次のコードは、LiveChannelの署名付きURLを照会する方法の例を示しています。
パッケージメイン
import (import (import)
"fmt"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
"os"
)
func main() {
/// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Create an OSSClient instance.
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。
client, err := oss.New("yourEndpoint", ", " ", ", oss.SetCredentialsProvider(&provider))
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// バケットの名前を指定します。 例: examplebucket.
bucket, err := client.Bucket("examplebucket")
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// LiveChannelの名前を指定します。
channelName := "test-sign-rtmp-url"
// プレイリストの名前を指定します。
playlistName := "playlist.m3u8"
// 有効期限パラメーターは、署名付きURLの有効期間を示し、UNIX時間形式に続くタイムスタンプです。 この例では、有効期間は1時間に設定されています。
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のストリーム取り込みステータスの照会
次のコードは、LiveChannelのストリーム取り込みステータスを照会する方法の例を示しています。
パッケージメイン
import (import (import)
"fmt"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
"os"
)
func HandleError (エラーエラー) {
fmt.Println("Error:", err)
os.Exit(-1)
}
func main() {
/// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Create an OSSClient instance.
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。
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.GetLiveChannelStat(channelName)
if err! =nil {
HandleError(err)
}
fmt.Println (結果)
}
LiveChannelの設定を照会する
次のコードは、LiveChannelの設定を照会する方法の例を示しています。
パッケージメイン
import (import (import)
"fmt"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
"os"
)
func HandleError (エラーエラー) {
fmt.Println("Error:", err)
os.Exit(-1)
}
func main() {
/// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Create an OSSClient instance.
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。
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 (結果)
}
LiveChannelのプレイリストを生成する
PostVodPlaylist操作を呼び出して、ビデオオンデマンド (VOD) に使用されるLiveChannelのプレイリストを生成できます。 OSSは、特定の期間内にLiveChannelに取り込まれたストリームによって生成されたTSファイルを照会し、ファイルをM3U8プレイリストに収束させます。
次のコードは、LiveChannelのプレイリストを生成する方法の例を示しています。
パッケージメイン
import (import (import)
"fmt"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
"os"
)
func HandleError (エラーエラー) {
fmt.Println("Error:", err)
os.Exit(-1)
}
func main() {
/// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Create an OSSClient instance.
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。
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ファイルが生成される時間範囲の終了時間を指定します。 デフォルトでは、終了時刻は現在の時刻と同じです。
endTime := time.Now().Add(time.Minute)
// クエリするTSファイルが生成される時間範囲の開始時間を指定します。 デフォルトでは、開始時刻は現在の時刻より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に取り込まれたストリームによって生成されたプレイリストを照会する方法の例を示しています。
パッケージメイン
import (import (import)
"fmt"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
"os"
)
func HandleError (エラーエラー) {
fmt.Println("Error:", err)
os.Exit(-1)
}
func main() {
/// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Create an OSSClient instance.
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。
client, err := oss.New("yourEndpoint", ", " ", ", oss.SetCredentialsProvider(&provider))
if err! =nil {
HandleError(err)
}
// バケットの名前を指定します。
bucketName := "yourBucketName"
bucket,err := client.Bucket(bucketName)
// LiveChannelの名前を指定します。
channelName := "mychannel"
// クエリするTSファイルが生成される時間範囲の終了時間を指定します。 デフォルトでは、終了時刻は現在の時刻と同じです。
endTime := time.Now().Add(time.Minute)
// クエリするTSファイルが生成される時間範囲の開始時間を指定します。 デフォルトでは、開始時刻は現在の時刻より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 (結果)
}
LiveChannelのストリーム取り込みレコードの照会
GetLiveChannelHistory操作を呼び出して、LiveChannelの最新のストリーム取り込みレコードを最大10個まで照会できます。
次のコードは、LiveChannelのストリーム取り込みレコードを照会する方法の例を示しています。
パッケージメイン
import (import (import)
"fmt"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
"os"
)
func HandleError (エラーエラー) {
fmt.Println("Error:", err)
os.Exit(-1)
}
func main() {
/// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Create an OSSClient instance.
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。
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 (結果)
}
LiveChannelを削除する
クライアントがストリームを取り込んでいるLiveChannelを削除するDeleteLiveChannelリクエストを送信すると、リクエストは失敗します。
DeleteLiveChannel操作は、LiveChannelのみを削除し、LiveChannelに取り込まれたストリームによって生成されたファイルは削除しません。
次のコードは、LiveChannelを削除する方法の例を示しています。
パッケージメイン
import (import (import)
"fmt"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
"os"
)
func HandleError (エラーエラー) {
fmt.Println("Error:", err)
os.Exit(-1)
}
func main() {
/// 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err! =nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Create an OSSClient instance.
// バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 実際のエンドポイントを指定します。
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)
}
}
参考資料
LiveChannelsの完全なサンプルコードの詳細については、『GitHub』をご参照ください。
LiveChannelを作成するために呼び出すことができるAPI操作の詳細については、「PutLiveChannel」をご参照ください。
LiveChannelsを一覧表示するために呼び出すAPI操作の詳細については、「ListLiveChannel」をご参照ください。
LiveChannelのステータスを設定するために呼び出すことができるAPI操作の詳細については、「PutLiveChannelStatus」をご参照ください。
LiveChannelのストリーム取り込みステータスを照会するために呼び出すことができるAPI操作の詳細については、「GetLiveChannelStat」をご参照ください。
LiveChannelの構成を照会するために呼び出すことができるAPI操作の詳細については、「GetLiveChannelInfo」をご参照ください。
LiveChannelのプレイリストを生成するために呼び出すAPI操作の詳細については、「PostVodPlaylist」をご参照ください。
LiveChannelのプレイリストを照会するために呼び出すAPI操作の詳細については、「GetVodPlaylist」をご参照ください。
LiveChannelのストリーム取り込みレコードを照会するために呼び出すことができるAPI操作の詳細については、「GetLiveChannelHistory」をご参照ください。
LiveChannelを削除するために呼び出すことができるAPI操作の詳細については、「DeleteLiveChannel」をご参照ください。