tencent cloud

Cloud Streaming Services

スタートガイド
製品紹介
製品概要
サブ製品の説明
基本概念
製品機能
ユースケース
製品の優位性
使用制限
購入ガイド
価格一覧
基本サービス
付加価値サービス
前払いリソースパッケージ
購入の流れ
課金の変更
返金説明
請求書の照会
支払い更新の説明
支払い遅延によるサービス停止の説明
課金についてのよくある質問
標準ライブストリーミング
概要
ユースケース
クイックスタート
SDKへのアクセスの説明
ライブイベントストリーミング(超低遅延ライブストリーミング)
概要
ライブイベントストリーミングと標準ライブストリーミングの違い
ユースケース
クイックスタート
SDKへのアクセスの説明
コンソールガイド
コンソールの説明
概要
Domain Management
ストリーム管理
リソースパッケージ管理
機能設定
プルリレー
従量課金
CAMアクセス制御
機能の実践
Push and Playback
ライブストリーミング機能
Live Streaming Security
海外のCSSサービス
コールバックによるイベントメッセージ通知
一般的なサードパーティ製ツールガイド
SDKの実践
0. SDK導入ガイド
2. 再生
3. 高度な機能
APIドキュメン
History
Introduction
API Category
Making API Requests
Live Pad APIs
Live Stream Mix APIs
Time Shifting APIs
Monitoring Data Query APIs
Billing Data Query APIs
Live Transcoding APIs
Delayed Playback Management APIs
Domain Name Management APIs
Watermark Management APIs
Certificate Management APIs
Stream Pulling APIs
Recording Management APIs
Live Callback APIs
Screencapturing and Porn Detection APIs
Authentication Management APIs
Live Stream Management APIs
Data Types
Error Codes
メンテナンスガイド
ビデオラグの最適化(V2)
プッシュエラーの原因調査
再生エラーの原因調査
ディレイの軽減方法
プルのビデオ画質が鮮明でない時の原因調査
COS Bucketにスクリーンキャプチャ保存するためのライブストリーミング承認
障害処理
ライブミクスストリーミングのエラー報告:InvalidParameter.OtherError
FAQs
基本的なライブブロードキャスト機能
プッシュ再生関連
ライブストリーミングの課金に関する事項
グローバルCSSサービス
CSSレコーディング関連
クラウドストリームミックス
ドメイン名設定
アップル社ATSとの互換性
SLA
CSS Service Level Agreement
CSS ポリシー
プライバシーポリシー
データ処理とセキュリティ契約

プッシュ設定

PDF
フォーカスモード
フォントサイズ
最終更新日: 2023-02-27 15:47:12
CSSプッシュの情報セキュリティを確保するために、CSSプッシュドメイン名はデフォルトでプッシュ認証が有効になっています。プッシュアドレス詳細ページのプッシュアドレスジェネレーターによって、オンラインで対応するプッシュアドレスを生成できます。プッシュアドレスを使用してオンラインでプッシュすることで、CSSストリームをCSSサービスに転送でき、ライブストリーミングビデオのアップロードが可能となります。

注意事項

CSSは、デフォルトでテストドメイン名xxxx.tlivepush.comを提供しています。このドメイン名でプッシュテストを行うことはできますが、正式なサービスでこのドメイン名をプッシュドメイン名として使用することはお勧めしません。
生成されたプッシュアドレスは、設定した有効期限内は使用可能です。期限が切れた後は、新しいプッシュアドレスを再生成する必要があります。

前提条件

CSSサービスがアクティブになっていること。

認証設定

1. ドメイン名管理に進み、設定するプッシュドメイン名または管理をクリックしてドメイン名詳細ページに進みます。
2. プッシュ設定をクリックし、認証設定タグを表示させ、右側の編集をクリックします。



3. プッシュ認証設定ページに入り、

ボタンをクリックしてプッシュ認証を有効/無効にします。
4. マスターKEYおよびスレーブKEYの情報を変更し、保存をクリックすると、設定が反映されます。



説明:
マスターKEYは入力必須、スレーブKEYはオプションです。マスター/スレーブKEYによって、KEYが漏洩した際もKEYをスムーズに交換でき、業務に影響が出ません。

プッシュアドレスジェネレーター

操作手順

1. ドメイン名管理に進み、設定するプッシュドメイン名を選択するか、管理をクリックし、ドメイン名詳細ページに進みます。
2. プッシュ設定>プッシュアドレスジェネレーターを選択し、次のように設定します。
2.1 期限切れ時間を選択します(例:2022-11-24 16:00:35)。
2.2 カスタマイズStreamNameを入力します(例:liveteststream)。
2.3 プッシュアドレスの生成をクリックすると、StreamName付きのプッシュアドレスが生成されます。



3. プッシュドメイン名に対してプッシュ認証が有効になっていない場合は、プッシュ設定>プッシュアドレス解決タグで、当該プッシュドメイン名配下のRTMP、WebRTC、SRT、RTMP over SRTこれら4種類のプッシュアドレスを確認し、プッシュアドレスの中のStreamName(ストリーム名)を置き換えてプッシュアドレスと関連付けます。それによって、再生アドレスでライブストリーミング画面を見ることができます。




プッシュアドレスの説明

RTMPプッシュアドレスの形式は以下の通りです:
rtmp://domain/AppName/StreamName?txSecret=Md5(key+StreamName+hex(time))&txTime=hex(time)
そのうち、
domain:CSSプッシュドメイン名。
AppName:ライブストリーミングのアプリケーション名。デフォルトはliveで、カスタマイズ可能です。
StreamName:CSSストリームを識別するために用いる、ユーザー定義のストリーム名。
txSecret:プッシュ認証を有効にした後生成される認証文字列。
txTime:プッシュアドレスのタイムスタンプ。コンソールのプッシュアドレスの有効期間です。
ご注意:
ドメイン名認証が有効になっている場合、txTimeは有効期間です。
コンソールでは、利用しやすいように、設定時間を実際の期限としています。ドメイン名認証を有効にした場合、ストリーミングプッシュアドレスの計算時に、式に基づきtxTimeが逆算されます
有効期限までにストリーミングプッシュ/プルを行った場合、ストリーミングプッシュ/プルが中断や停止がなく正常に行われている限り、有効期限が過ぎてもプッシュ/プル状態を維持できます。

プッシュアドレスのサンプルコード

Tencent CloudはPHP、Java、Go言語のプッシュアドレスのサンプルコードを提供します。サンプルコードを参照し、プッシュアドレスを導入できます。具体的な方法は以下の通りです:
1. ドメイン名管理に進みます。
2. プッシュドメイン名を選択するか、右側の管理をクリックしてドメイン名詳細ページに進みます。
3. プッシュ設定を選択し、一番下までプルダウンしてプッシュアドレスサンプルコードタグを表示させます。
4. 以下のように、タグを切り替えて、PHP、Java、Goのサンプルコードを確認します:
PHP
Java
GO
/**
* プッシュアドレスの取得
* keyと有効期限が渡されない場合、ホットリンク防止のないURLが返されます
* @param domainプッシュに使用するドメイン名
* streamName プッシュアドレスを区別する一意のストリーム名
* key セキュリティキー
* time 有効期限 sample 2016-11-12 12:00:00
* @return String url
*/
function getPushUrl($domain, $streamName, $key = null, $time = null){
if($key && $time){
$txTime = strtoupper(base_convert(strtotime($time),10,16));
//txSecret = MD5( KEY + streamName + txTime )
$txSecret = md5($key.$streamName.$txTime);
$ext_str = "?".http_build_query(array(
"txSecret"=> $txSecret,
"txTime"=> $txTime
));
}
return "rtmp://".$domain."/live/".$streamName . (isset($ext_str) ? $ext_str : "");
}

echo getPushUrl("123.test.com","123456","69e0daf7234b01f257a7adb9f807ae9f","2016-09-11 20:08:07");

package com.test;

import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class Test {

public static void main(String[] args) {
System.out.println(getSafeUrl("txrtmp", "11212122", 1469762325L));
}

private static final char[] DIGITS_LOWER =
{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};

/*
* KEY+ streamName + txTime
*/
private static String getSafeUrl(String key, String streamName, long txTime) {
String input = new StringBuilder().
append(key).
append(streamName).
append(Long.toHexString(txTime).toUpperCase()).toString();

String txSecret = null;
try {
MessageDigest messageDigest = MessageDigest.getInstance("MD5");
txSecret = byteArrayToHexString(
messageDigest.digest(input.getBytes("UTF-8")));
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}

return txSecret == null ? "" :
new StringBuilder().
append("txSecret=").
append(txSecret).
append("&").
append("txTime=").
append(Long.toHexString(txTime).toUpperCase()).
toString();
}

private static String byteArrayToHexString(byte[] data) {
char[] out = new char[data.length << 1];

for (int i = 0, j = 0; i < data.length; i++) {
out[j++] = DIGITS_LOWER[(0xF0 & data[i]) >>> 4];
out[j++] = DIGITS_LOWER[0x0F & data[i]];
}
return new String(out);
}
}

package a

import (
"crypto/md5"
"fmt"
"strconv"
"strings"
"time"
)

func GetPushUrl(domain, streamName, key string, time int64)(addrstr string){
var ext_str string
if key != "" && time != 0{
txTime := strings.ToUpper(strconv.FormatInt(time, 16))
txSecret := md5.Sum([]byte(key + streamName + txTime))
txSecretStr := fmt.Sprintf("%x", txSecret)
ext_str = "?txSecret=" + txSecretStr + "&txTime=" + txTime
}
addrstr = "rtmp://" + domain + "/live/" + streamName + ext_str
return
}
/*
*domain: 123.test.com
*streamName: streamname
*key: 69e0daf7234b01f257a7adb9f807ae9f
*time: 2022-04-26 14:57:19 CST
*/
func main(){
domain, streamName, key := "123.test.com", "streamname", "69e0daf7234b01f257a7adb9f807ae9f"
//CST: ChinaStandardTimeUT, "2006-01-02 15:04:05 MST" must be const
t, err := time.Parse("2006-01-02 15:04:05 MST", "2022-04-26 14:57:19 CST")
if err != nil{
fmt.Println("time transfor error!")
return
}
fmt.Println(GetPushUrl(domain, streamName, key, t.Unix()))
return
}


後続の操作

プッシュアドレスを生成した後、運用シーンに応じてCSSプッシュを使用することができます。具体的な方法については、CSSプッシュをご参照ください。

ヘルプとサポート

この記事はお役に立ちましたか?

フィードバック