tencent cloud

Video on Demand

プレーヤーの署名

PDF
フォーカスモード
フォントサイズ
最終更新日: 2024-08-26 15:31:18
プレーヤー署名は、App再生サービスが端末の再生権限を承認するために使用されます。下図の手順6に示すとおり、 App再生サービスが端末での再生を承認すると、有効な署名が配布されます。端末では、署名の有効時間内にビデオコンテンツを再生することができます。



以下で、プレーヤー署名のパラメータと生成規則について説明します。

署名パラメータ

パラメータ名
記入必須
タイプ
説明
appId
はい
Integer
VODアプリケーションのappId。
fileId
はい
String
VODファイルID。
contentInfo
はい
Object
VODファイルIDに対応して再生される具体的なコンテンツ。ContentInfoタイプです。次の3種類のいずれかを再生できます。
アダプティブビットレートストリーミングへのトランスコードを行った出力オーディオビデオ。暗号化はされていてもいなくてもかまいません。
トランスコードされた出力オーディオビデオ。
アップロードされたオリジナルオーディオビデオ。
currentTimeStamp
はい
Integer
署名配布時点のUnixタイムスタンプ。
expireTimeStamp
いいえ
Integer
署名配布有効期限のUnixタイムスタンプ。入力しない場合は有効期限がないことを表します。
urlAccessInfo
いいえ
Object
再生リンクアクセス設定パラメータ。Keyリンク不正アクセス防止設定、再生ドメイン名、プロトコルパラメータが含まれます。UrlAccessInfoタイプです。
drmLicenseInfo
いいえ
Object
DRM License設定パラメータ。DrmLicenseInfoタイプです。

ContentInfoタイプ

パラメータ名
記入必須
タイプ
説明
audioVideoType
はい
String
再生するオーディオビデオタイプ。オプション値は次のとおりです。
ProtectedAdaptive:プライベート暗号化またはDRMで保護されたアダプティブビットレートストリーミングへのトランスコード出力。
Transcode:トランスコード後の出力。
Original:アップロードされたオリジナルオーディオビデオ。
rawAdaptiveDefinition
いいえ
Integer
出力が許可される、暗号化されていないABS生成テンプレートのID。audioVideoTypeがRawAdaptiveの場合のみ、このパラメータが入力必須かつ有効になります。
drmAdaptiveInfo
いいえ
Object
出力が許可される、暗号化によって保護されたABS生成テンプレートのID。audioVideoTypeがProtectedAdaptiveの場合のみ、このパラメータが入力必須かつ有効になります。DRMAdaptiveInfoタイプです。
transcodeDefinition
いいえ
Integer
出力が許可されるトランスコードテンプレートのID。audioVideoTypeがTranscodeの場合のみ、このパラメータが入力必須かつ有効になります。
imageSpriteDefinition
いいえ
Integer
プログレスバープレビューに使用するスプライトイメージテンプレートのID。
resolutionNames
いいえ
Array of Object
プレーヤーの各解像度に対応するサブストリーム表示名。ResolutionNameInfoタイプの配列です。空のままにするか、またはNULL配列を入力するとデフォルト設定を使用します。
MinEdgeLength:240,Name:240P。
MinEdgeLength:480,Name:480P。
MinEdgeLength:720,Name:720P。
MinEdgeLength:1080,Name:1080P。
MinEdgeLength:1440,Name:2K。
MinEdgeLength:2160,Name:4K。
MinEdgeLength:4320,Name:8K。

DRMAdaptiveInfoタイプ

パラメータ名
記入必須
タイプ
説明
privateEncryptionDefinition
いいえ
Integer
widevineDefinition
いいえ
Integer
fairPlayDefinition
いいえ
Integer

ResolutionNameInfoタイプ

パラメータ名
記入必須
タイプ
説明
MinEdgeLength
はい
Integer
ビデオ短辺の長さ。単位:ピクセル。
Name
はい
String
表示名。

UrlAccessInfo タイプ

パラメータ名
記入必須
タイプ
説明
t
いいえ
String
16進数文字列。リンクの有効期限を表します。
具体的な意味と値についてはリンク不正アクセス防止パラメータのtパラメータをご参照ください。
入力しない場合は有効期限がないことを表します。
exper
いいえ
Integer
プレビュー時間。単位は秒で、10進数で表示されます。
プレビュー時間を指定したい場合、時間は30秒以上にする必要があります。
具体的な意味と値についてはリンク不正アクセス防止パラメータのexperパラメータをご参照ください。
rlimit
いいえ
Integer
再生可能な最大端末IP数。10進数で表示されます。
具体的な意味と値についてはリンク不正アクセス防止パラメータのrlimitパラメータをご参照ください。
us
いいえ
String
リンクID。ユーザーのリンクの一意性を強化します。
具体的な意味と値についてはリンク不正アクセス防止パラメータのusパラメータをご参照ください。
domain
いいえ
String
再生時に使用するドメイン名。入力しない場合またはDefaultを入力した場合は、デフォルト配信設定のドメイン名を使用することを表します。
scheme
いいえ
String
再生時に使用するScheme。入力しない場合またはDefaultを入力した場合は、デフォルト配信設定のSchemeを使用することを表します。その他のオプション値は次のとおりです。
HTTP。
HTTPS

DrmLicenseInfo タイプ

パラメータ名
記入必須
タイプ
説明
persistent
いいえ
String
端末に商用DRM再生ライセンスの永続的な保存を許可するかどうか。値の範囲:
ON: 永続的な保存を許可します。
OFF: 永続的な保存を許可しません。
デフォルトの値はOFFになっています。
rentalDuration
いいえ
Integer
persistentがONの場合に、商用DRM再生ライセンスによって許可される永続的な保存時間。単位は秒で、入力しない場合は時間制限がないことを表します。
forceL1TrackTypes
いいえ
Array of String
Widevineを使用する際に、端末に必ずL1セキュリティレベルを使用して処理するよう要求するTrackタイプ。このうち、未指定のTrackタイプはデフォルトでL3セキュリティレベルを使用して処理します。値の範囲は次のとおりです。
AUDIO: オーディオサブストリーム。
SD: 短辺が720未満のサブストリーム。
HD: 短辺が720以上かつ2160未満のサブストリーム。
UHD1: 短辺が2160以上かつ4320未満のサブストリーム。
UHD2: 短辺が4320以上のサブストリーム。
説明:
サブアプリケーションを使用する場合、appIdパラメータにはサブアプリケーションAppIdを入力する必要があります。
署名パラメータのtexperrlimitusの説明と値は、 リンク不正アクセス防止パラメータの同名パラメータと完全に一致します。

署名計算

VODプレーヤーの署名には、Header、PayLoad、Key によって計算され組み合わせられたデジタルトークンである JWT(JSON Web Token)を採用します。
HeaderはJSON形式であり、JWTで使用されるアルゴリズム情報を表し、その内容は次のとおり固定的 に使用されます:
{
"alg": "HS256",
"typ": "JWT"
}

PayLoad

Payload はJSON形式であり、次に例示するようにプレーヤーの署名パラメータのコンテンツです。
{
"appId": 1255566655,
"fileId": "4564972818519602447",
"contentInfo": {
"audioVideoType": "RawAdaptive",
"rawAdaptiveDefinition": 10,
"imageSpriteDefinition": 10
},
"currentTimeStamp": 1663064276,
"expireTimeStamp": 1663294210,
"urlAccessInfo": {
"t": "6323e6b0",
"rlimit": 3,
"us": "72d4cd1101"
}
}

Key

Keyは署名の計算時に使用するキーです。ここではデフォルト配信設定再生キーを使用します。

計算式

1. Signatureの計算: Signature = HMACSHA256(base64UrlEncode(Header) + "." + base64UrlEncode(Payload), Key)
2. Tokenの計算: Token = base64UrlEncode(Header) + '.' + base64UrlEncode(Payload) + '.' + base64UrlEncode(Signature) 最終的に得られたTokenが、VODプレーヤー署名となります。
説明:
HMACSHA256については、RFC - HMACSHA256をご参照ください。base64UrlEncodeについては、RFC - base64UrlEncodeをご参照ください。
署名の計算および署名の検証を容易にするため、VODコンソールでは署名発行ツールおよび検証ツールを提供しています。

計算例

例えばあるユーザーの、appIdが1255566655、fileIdが4564972818519602447のビデオについてプレーヤー署名を生成する場合で、かつ以下のようであったとします。
再生キーがTxtyhLlgo7J3iOADIron
プレーヤー署名の配布時間が2022-09-13 18:17:56、対応するUnix時間が1663064276
プレーヤー署名の有効期限が2022-09-16 10:10:10、対応するUnix時間が1663294210
リンク不正アクセス防止の有効期限が2022-09-16 11:00:00、対応するUnix時間が6323e6b0
URLでの再生を最大3つの異なるIPで許可。
生成されたランダムな文字列が72d4cd1101
この場合の署名手順は、次のとおりです.
1. Headerのコンテンツ:
{
"alg": "HS256",
"typ": "JWT"
}
base64UrlEncode で処理した後の結果: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
2. Payloadのコンテンツ:
{
"appId": 1255566655,
"fileId": "4564972818519602447",
"contentInfo": {
"audioVideoType": "RawAdaptive",
"rawAdaptiveDefinition": 10,
"imageSpriteDefinition": 10
},
"currentTimeStamp": 1663064276,
"expireTimeStamp": 1663294210,
"urlAccessInfo": {
"t": "6323e6b0",
"rlimit": 3,
"us": "72d4cd1101"
}
}
base64UrlEncode で処理した後の結果: eyJhcHBJZCI6MTI1NTU2NjY1NSwiZmlsZUlkIjoiNDU2NDk3MjgxODUxOTYwMjQ0NyIsImNvbnRlbnRJbmZvMSI6eyJhdWRpb1ZpZGVvVHlwZSI6IlJhd0FkYXB0
aXZlIiwicmF3QWRhcHRpdmVEZWZpbml0aW9uIjoxMCwiaW1hZ2VTcHJpdGVEZWZpbml0aW9uIjoxMH0sImN1cnJlbnRUaW1lU3RhbXAiOjE2NjMwNjQyNzYsImV4
cGlyZVRpbWVTdGFtcCI6MTY2MzI5NDIxMCwidXJsQWNjZXNzSW5mbyI6eyJ0IjoiNjMyM2U2YjAiLCJybGltaXQiOjMsInVzIjoiNzJkNGNkMTEwMSJ9fQ
3. 再生キーをKey(TxtyhLlgo7J3iOADIron)としてHMAC計算を実行した場合、Signatureは次のようになります。 QFcBX9830ysTzJIyZxoOlRmNb2Gqy2fns9yOfriaDI8
4. 最終的にTokenはこのようになります。 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHBJZCI6MTI1NTU2NjY1NSwiZmlsZUlkIjoiNDU2NDk3MjgxODUxOTYwMjQ0NyIsImNvbnRlbnRJbmZvMSI6eyJhdWRpb1ZpZGVvVHlwZSI6IlJhd0FkYXB0aXZlIiwicmF3QWRhcHRpdmVEZWZpbml0aW9uIjoxMCwiaW1hZ2VTcHJpdGVEZWZpbml0aW9uIjoxMH0sImN1cnJlbnRUaW1lU3RhbXAiOjE2NjMwNjQyNzYsImV4cGlyZVRpbWVTdGFtcCI6MTY2MzI5NDIxMCwidXJsQWNjZXNzSW5mbyI6eyJ0IjoiNjMyM2U2YjAiLCJybGltaXQiOjMsInVzIjoiNzJkNGNkMTEwMSJ9fQ.QFcBX9830ysTzJIyZxoOlRmNb2Gqy2fns9yOfriaDI8

サンプルコード

VODはPython、Java、Go、C#、PHP、Node.jsなどの複数の言語用にプレーヤーのサンプルコードを提供しています。詳細についてはプレーヤー署名 - 署名の例をご参照ください。

よくあるエラー

プレーヤー署名を使用した際、Player SDKがエラーコードを返した場合、よくある原因は次のとおりです。
署名の計算 KEYが間違っているデフォルト配信設定内の再生キーを使用する必要があります。KEYリンク不正アクセス防止パラメータ内のKEYパラメータを誤って使用していないかどうかをチェックすることができます。
署名パラメータ入力が間違っている。例えば次のようなものがあります。
パラメータタイプのエラー:例えばappIdが整数で、誤って appId:"125000123"(文字列型)と入力している。またはcontentInfo内のトランスコードテンプレートパラメータが整数で、誤ってtranscodeDefinition: "14011"(文字列型)と入力している。
パラメータ値が有効範囲を超えている:例えばcontentInfo内の再生するオーディオビデオタイプのパラメータを、誤ってaudioVideoType: "Transocde"(スペルミス、有効な列挙値ではない)と入力している。

ヘルプとサポート

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

フィードバック