VAS_VoD Streaming

最終更新日:2022-04-15 07:44:45

1 VASイ紹介

1.1 概要

ライブストリーミングの発展により、均質化の競争から脱却することがますます困難になってきています。ライブストリーミングプラットフォームは、これまで通り新機能に注力しますが、ライブストリーミングコンテンツの再利用も重視しています。ライブストリーミングの録画、特にスポーツイベントなどをループ再生することで、ストリーマールームの視聴を維持したいと考えるお客様もいます。その要望に応えて、CDNetworksでは、録画したファイルをライブ中継するVoD(映像オンデマンド)ストリーミング機能を展開します。

1.2 適用プロダクト

  • Media Acceleration Live Broadcast

1.3 適用シーン

  • 劇場やテレビ番組と同等のパフォーマンスで視聴することができます。
  • イベント終了後のループ再生により、イベントからの影響力を拡大しています。
  • 人気アンカーがオンラインしていない時、視聴者を維持するため、前のライブストリーミングコンテンツをループ再生することができます。

2 VASの詳細

2.1 使用仕様

VoDストリーミングとは、PoPがユーザー指定のVoD(映像オンデマンド)ファイルをループ順または順次にリクエストし、ファイル内容のストリームをユーザー指定のアドレスにプッシュすることです。使いやすさを考慮し、CDNetworksでは、接続するためのAPIを提供しています。

APIにはアクセス許可が必要です。アカウントがCDNWのサービスを有効にし、かつ一定のルールでパラメータを入力した場合にのみ、正しく呼び出されます。アクセス管理ポリシーは、n、r、kの3つのパラメータによって決められ、その詳細な説明は以下の通りです:

  1. n: デフォルトでポータルプラットフォームのアカウント名に設定。
  2. r: ユニークなランダム文字列。最大で10文字。タイムスタンプ推奨。
  3. k: md5検証値。

MD5の計算方法:
k = md5(r+key)、つまり新しい文字列であり、rにkeyを加え、MD5でハッシュ化し、新しい値kに変換することです。
注:キーは、当社のカスタマーサービススタッフから取得できます。

例:
1.適用してキーを取得=012f37a3f2952
2.ランダムな文字列r=1409284800を生成
3.統合して新しい文字列を生成=1409284800012f37a3f29524。
4.新しい文字列をMD5で計算し、k値を得る: b9fed80be752551834eec3e52fa94115

リアルタイムのVoDストリーミング
VoDストリーミングを開始/終了させるためのAPIを呼び出します。
API:

http://livect.ossin.cdnetworks.com/api/cdn/v2/forwardRequest.action (アジア地域で使用)。
http://livect.osame.cdnetworks.com/api/cdn/v2/forwardRequest.action (ヨーロッパおよびアメリカ地域で使用)

呼び出し方法:ポスト

HTTPヘッダー:Content-Type:application/json
ボディコンテンツ:

VoDストリーミングの開始

{
	"transcallbackurl": "http://www.callback.com/api",
	"cmd": "1",
	"type": "video",
	"list": [{
		"id": "123",
		"src": [{
				"url": "http://www.video.com/live/abc.mp4"
			},
			{
				"url": "http://www.video.com/live/1.flv",
				"absofftime": "20181022153000-20181022155000"
			},
			{
				"url": "http://www.video.com/live/2.mp4",
				"relofftime": "300-500"
			}
		],
		"forward": [{
				"url": "rtmp://www.push1.com/live/test"
			},
			{
				"url": "rtmp://www.push2.com/live/test2"
			}
		],
		"extendParam": {
			"loop": "1",
			"index": "1",
			"callBackFileInfo": "0"
		}
	}]
}

注意事項:VoDストリーミング開始後、サービスPoPサーバーはVoDストリーミングのループ順でファイルを読み込みます。VODストリーミングタスクは、お客様がタスクを終了するためのインターフェイスを呼び出した時点で終了します。

VoDストリーミングの終了

{
	"transcallbackurl": "http://www.callback.com/api",
	"cmd": "2",
	"type": "video",
	"list": [{
		"id": "123",
		"src": [{
			"url": ""
		}],
		"forward": [{
			"url": "rtmp://www.push1.com/live/test"
		}, {
			"url": "rtmp://www.push2.com/live/test2"
		}]
	}]
}

ボディパラメータ仕様

フィールド名 フィールドタイプ フィールドの意味 必須項目 さらにデモンストレーションの例
transcallbackurl 文字列 コールバックアドレス いいえ
cmd 文字列 VODストリーミングコマンド はい cmd=1 VoDストリーミングの開始。cmd=2 VoDストリーミングの終了。cmd=3 ファイルリストの更新。cmd=5 再生再開
タイプ 文字列 VoDストリーミングタイプ はい 固定値とタイプの記入=映像
リスト リスト プッシュストリームリスト はい

リストパラメータ仕様

フィールド名 フィールドタイプ フィールドの意味 必須項目 さらにデモンストレーションの例
id 文字列 お客様のタスク識別(ID) はい 固有のタスク識別(ID)同じIDが存在する場合は、前のタスクを先に終了させてからVoDストリーミングを開始します。
src リスト プルストリーム情報 はい 以下のsrcパラメータ仕様リストをご参照ください。
forward リスト VoDストリーミング情報 はい 下記、forward仕様リストをご参照ください。
extendParam アレイ エクステンションパラメータ いいえ extendParam パラメータ仕様をご参照ください

src パラメータ仕様

フィールド名 フィールドタイプ フィールドの意味 必須項目 さらにデモンストレーションの例
url 文字列 VoDファイルアドレス はい 複数のVoDファイルアドレスの記入、flv/mp4/m3u8の映像ファイル形式に対応していますが、他のm3u8ファイルを参照したm3u8には対応していません。
absofftime 文字列 VoDストリーミングの時間範囲が複数ある場合は、セミコロン「;」で区切ってください。 いいえ コンテンツがVoDストリーミングで読み取られる時間範囲。例:20181022153000-20181022155000, yyyymmddHHMMSS の形式となります。時間の優先順位は relofftime> absofftime となります。
relofftime 文字列 VoDストリーミングの時間範囲が複数ある場合は、セミコロン「;」で区切ってください。 いいえ 単位は秒となります

forward パラメータ仕様

フィールド名 フィールドタイプ フィールドの意味 必須項目 さらにデモンストレーションの例
url 文字列 プッシュストリームのアドレス はい このフィールドは、複数のVoDストリーミングアドレスを記入できますが、rtmpストリームプッシュのみに対応しています。

extendParam パラメータ仕様

フィールド名 フィールドタイプ フィールドの意味 必須項目 さらにデモンストレーションの例
ループ int ファイルのループ回数 いいえ VoDファイルのループ回数。srcに複数のVoDファイルがある場合、順次再生してから、ループ順に再生にします。
インデックス int ファイルの読み込み順 いいえ srcに複数のファイルがある場合、デフォルトでは最初のファイルからVoDファイルストリーミングを開始するとなっています。
callBackFileInfo int VoDストリーミングファイル情報を毎回呼び出すか。 いいえ 0は、VODストリーミングファイル情報を毎回コールバックする必要がないことを意味します。1は、VODストリーミングファイルの情報を毎回コールバックすることです。デフォルト設定は0です

時限VoDストリーミング
VoDストリーミングの開始/終了時刻を設定するAPIを呼び出し、設定した時刻にVoDストリーミングを開始/終了させることができます。

API:
http://livect.ossin.cdnetworks.com/api/cdn/v2/forwardRequest.action (アジア地域で使用)。
http://livect.osame.cdnetworks.com/api/cdn/v2/forwardRequest.action (ヨーロッパおよびアメリカ地域で使用)

呼び出し方法:POST

HTTPヘッダー:Content-Type:application/json
ボディコンテンツ:

設定の終了タイム

{
	"transcallbackurl": "http://www.callback.com/api",
	"cmd": "1",
	"type": "video",
	"list": [{
		"id": "123",
		"src": [{
			"url": "http://www.video.com/live/abc.mp4"
		}, {
			"url": "http://www.video.com/live/1.flv",
			"absofftime": "20181022153000-20181022155000"
		}, {
			"url": "http://www.video.com/live/2.mp4",
			"relofftime": "300-500"
		}],
		"forward": [{
			"url": "rtmp://www.push1.com/live/test"
		}, {
			"url": "rtmp://www.push2.com/live/test2"
		}],
		"extendParam": {
			"loop": "1",
			"index": "1",
			"callBackFileInfo": "0"
		},
		"start": "1540216800000",
		"end": "1540220400000"
	}]
}

注意:設定した時刻にVoDストリーミングを開始すると、サービスPoPサーバーはVoDストリーミングのループ順にファイルを読み込みます。VoDストリーミングは、設定された終了時刻、またはお客様がインターフェイスを呼び出してタスクを終了させたときに終了されます。

ボディパラメータ仕様

フィールド名 フィールドタイプ フィールドの意味 必須項目 さらにデモンストレーションの例
transcallbackurl 文字列 コールバックアドレス いいえ
cmd 文字列 VODストリーミングコマンド はい cmd=1 VoDストリーミングの開始。cmd=2 VoDストリーミングの終了。cmd=3 ファイルリストの更新。cmd=5 再生再開
タイプ 文字列 VoDストリーミングタイプ はい 固定値とタイプの記入=映像
リスト リスト プッシュストリームリスト はい

リストパラメータ仕様

フィールド名 フィールドタイプ フィールドの意味 必須項目 さらにデモンストレーションの例
id 文字列 お客様タスク識別(ID) はい 固有のタスク識別(ID)同じIDが存在する場合は、前のタスクを先に終了させてからVoDストリーミングを開始します。
src リスト プルストリーム情報 はい 以下のsrcパラメータ仕様リストをご参照ください。
forward リスト VoDストリーミング情報 はい 下記、forward仕様リストをご参照ください。
スタート int VODストリーミングの開始時間 はい 13桁のUnixタイムスタンプ:スタートが現在時刻より小さい場合、VoDストリーミングは直ちに現在時刻で開始されます。
終了 int VODストリーミングの終了時間 はい 13桁のUnixタイムスタンプ:終了は開始と現在時刻より5分以上経過している必要があります
extendParam アレイ エクステンションパラメータ いいえ extendParam パラメータ仕様をご参照ください

src パラメータ仕様

フィールド名 フィールドタイプ フィールドの意味 必須項目 さらにデモンストレーションの例
url 文字列 VoDファイルアドレス はい 複数のVoDファイルアドレスの記入、flv/mp4/m3u8の映像ファイル形式に対応していますが、他のm3u8ファイルを参照したm3u8には対応していません。
absofftime 文字列 VoDストリーミングの時間範囲が複数ある場合は、セミコロン「;」で区切ってください。 いいえ コンテンツがVoDストリーミングで読み取られる時間範囲。例:20181022153000-20181022155000, yyyymmddHHMMSS の形式となります。時間の優先順位は relofftime> absofftime となります。
relofftime 文字列 VoDストリーミングの時間範囲が複数ある場合は、セミコロン「;」で区切ってください。 いいえ 単位は秒、時間優先度は end>relofftime となります

forward パラメータ仕様

フィールド名 フィールドタイプ フィールドの意味 必須項目 さらにデモンストレーションの例
url 文字列 プッシュストリームのアドレス はい 複数のVoDストリーミングアドレスを記入できますが、rtmpストリームプッシュのみに対応しています。

extendParam パラメータ仕様

フィールド名 フィールドタイプ フィールドの意味 必須項目 さらにデモンストレーションの例
ループ int ファイルのループ回数 いいえ VoDファイルのループ回数。srcに複数のVoDファイルがある場合、順次再生してから、ループ順に再生にします:end>loop
インデックス int ファイルの読み込み順 いいえ srcに複数のファイルがある場合、デフォルトでは最初のファイルからVoDファイルストリーミングを開始するとなっています。
callBackFileInfo int VoDストリーミングファイル情報を毎回呼び出すか。 いいえ 0は、VODストリーミングファイル情報を毎回コールバックする必要がないことを意味します。1は、VODストリーミングファイルの情報を毎回コールバックすることです。デフォルト設定は0です

定時終了
VODストリーミングの定時終了を設定された場合、時間がなるまでに終了したい場合は、終了コマンドを呼び出してタスクを終了することができます。VODストリーミングの終了コマンドには、start および end のパラメータを含んではなりません。

{
	"transcallbackurl": "http://www.callback.com/api",
	"cmd": "2",
	"type": "video",
	"list": [{
		"id": "123",
		"src": [{
			"url": ""
		}],
		"forward": [{
			"url": "rtmp://www.push1.com/live/test"
		}, {
			"url": "rtmp://www.push2.com/live/test2"
		}]
	}]
}

ファイル更新
VODストリーミングの過程で、インターフェースを通じてVODファイルを更新することができます。そして、VoDストリーミングに更新されたファイルを使用します。ボディ内容:

{
	"transcallbackurl": "http://www.callback.com/api",
	"cmd": "3",
	"type": "video",
	"list": [{
		"id": "123",
		"src": [{
			"url": "http://www.video.com/live/d.mp4"
		}, {
			"url": "http://www.video.com/live/3.flv",
			"absofftime": "20181022153000-20181022155000"
		}, {
			"url": "http://www.video.com/live/4.mp4",
			"relofftime": "300-500"
		}],
		"forward": [{
			"url": "rtmp://www.push1.com/live/test"
		}, {
			"url": "rtmp://www.push2.com/live/test2"
		}],
		"extendParam": {
			"loop": "1",
			"index": "1",
			"callBackFileInfo": "0",
			"waitCrtUrlFinish": "0"
		}
	}]
}

ボディパラメータ仕様

フィールド名 フィールドタイプ フィールドの意味 必須項目 さらにデモンストレーションの例
cmd 文字列 VODストリーミングコマンド はい cmd=3 更新ファイルリスト。

extendParam パラメータ仕様

フィールド名 フィールドタイプ フィールドの意味 必須項目 さらにデモンストレーションの例
waitCrtUrlFinish int ファイルの更新を直ちに反映されるか いいえ 0は、ファイルが即座に有効になり、更新ファイルのストリーミングを意味します。1は、現在のVODストリーミングタスクの終了後に有効になり、現在のタスクの終了後に更新ファイルをストリーミングすることです。デフォルトは0です。

注意:

  1. ファイル更新コマンドのその他のパラメータについては、上記のパラメータ仕様を参照してください。
  2. VoDストリーミング開始前にファイルリストが更新された場合、更新ファイルがVoDストリーミングに使用されます。

再生再開
VODストリーミング終了コマンドを呼び出し、VODストリーミングを終了させると、現在ファイルの再生時間(有効期間48時間)がシステムによって記録されます。再生再開のインタフェースが呼び出されると、VODストリーミングPoPは前回の終了時刻から再開されます。
ボディ内容:

{
	"transcallbackurl": "http://www.callback.com/api",
	"cmd": "5",
	"type": "video",
	"list": [{
		"id": "123",
		"src": [{
			"url": "http://www.video.com/live/d.mp4"
		}, {
			"url": "http://www.video.com/live/3.flv",
			"absofftime": "20181022153000-20181022155000"
		}, {
			"url": "http://www.video.com/live/4.mp4",
			"relofftime": "300-500"
		}],
		"forward": [{
			"url": "rtmp://www.push1.com/live/test"
		}, {
			"url": "rtmp://www.push2.com/live/test2",
			"resetUrl": "rtmp://www.push3.com/live/test3"
		}]
	}]
}

ボディパラメータ仕様

フィールド名 フィールドタイプ フィールドの意味 必須項目 さらにデモンストレーションの例
cmd 文字列 VODストリーミングコマンド はい cmd=5 再生再開

extendParam パラメータ仕様

フィールド名 フィールドタイプ フィールドの意味 必須項目 さらにデモンストレーションの例
resetUrl 文字列 VODストリーミングのアドレス変更 いいえ 再生再開時に、プッシュストリームアドレスを変更します。デフォルトでは変更ありません。

注意:

  1. 再生再開コマンドのその他のパラメータについては、上記のパラメータ仕様を参照してください。
  2. VoDストリーミングが自然終了し、その後再生が再開された場合、cmd=2の「終了」ではなく、cmd=1のシチュエーションになります。
  3. 再生再開コマンドはfopsとextendParamパラメータに対応していないため、再生再開ファイルにトランスコードを実現することができません。
  4. 再生再開録画の有効期限は48時間であり、48時間経過後は再開できないことを意味します。

トランスコードまたはウォーターマーク
インタフェースを介して、VODストリーミングを実現しています。また、VODストリーミングのトランスコードやウォーターマークに関連パラメータを追加した後、インターフェースを介してサポートされるようになります。
ボディ内容:

{
	"transcallbackurl": "http://www.callback.com/api",
	"cmd": "1",
	"type": "video",
	"list": [{
		"id": "123",
		"src": [{
			"url": "http://www.video.com/live/d.mp4",
			"wmimage": "http://ws.test.com/live/picture1.jpg",
			"wmposition": "TOP_LEFT"
		}, {
			"url": "http://www.video.com/live/3.flv",
			"absofftime": "20181022153000-20181022155000"
		}, {
			"url": "http://www.video.com/live/4.mp4",
			"relofftime": "300-500"
		}],
		"forward": [{
			"url": "rtmp://www.push1.com/live/test"
		}, {
			"url": "rtmp://www.push2.com/live/test2"
		}],
		"fops": {
			"bps": "1200",
			"res": "25",
			"fps": "1280x640",
			"vcodec": "libx265",
			"acodec": "libmp3lame"
		}
	}]
}

リストパラメータ仕様

フィールド名 フィールドタイプ フィールドの意味 必須項目 さらにデモンストレーションの例
fops アレイ エンコードパラメータ

FOPSパラメータ仕様

フィールド名 フィールドタイプ フィールドの意味 必須項目 さらにデモンストレーションの例
bps 文字列 ビットレート(bps) いいえ 1200
res 文字列 解像度 いいえ 420x720(インラインの「x」は小文字の「x」です)
fps 文字列 フレームレート(fps) いいえ 25
vcodec 文字列 映像符号化スキーム いいえ Libx264、対応スキーム:libx264、libx265、libvpxなど。ウォーターマークが必要な場合、libx264になります。
acodec 文字列 音声符号化スキーム いいえ Libfaac、対応スキーム:libmp3lame、libfaac、libvorbis、など。

src パラメータ仕様

フィールド名 フィールドタイプ フィールドの意味 必須項目 さらにデモンストレーションの例
wmimage 文字列 ウォーターマーク画像のUrlアドレス いいえ urlに&がある場合、url文字のエスケープが必要です。
wmposition 文字列 ウォーターマークの位置 いいえ TOP_LEFT左上隅。TOP_CENTER中央。TOP_RIGHT右上隅、CENTER_LEFT中央左。CENTER中央。CENTER_RIGHT中央右。BOTTOM_LEFT左下隅。BOTTOM_CENTER下中央。BOTTOM_RIGHT右下隅。

注意:トランスコードとウォーターマークコマンドのその他のパラメータについては、上記のパラメータ仕様を参照してください。

インターフェース応答情報

{
	"http_code": "200",
	"msg": "receive task success!",
	"call_time": 1479952114000
}

リターンステータスコード仕様:
200:インターフェース呼び出し成功。
400:リクエストパラメータエラー(パラメータがない、時間形式エラーなど)
403:リクエスト許可なし。

VODストリーミングのコールバック情報

{
	"msg": "Start pushing!",
	"code": "0",
	"srcurl": "[{\"url\":\"http://www.video.com/live/abc.mp4\"}]",
	"cmd": "1",
	"id": "124",
	"forwardurl": "rtmp://www.push1.com/live/test"
}

フィールド名 フィールドタイプ フィールドの意味 必須項目
id 文字列 お客様タスクの識別(ID) コールバック情報にお客様IDが表示されます。
srcurl 文字列 プルストリーム情報リスト
forwardurl 文字列 VODストリーミング情報リスト
cmd 文字列 VODストリーミングコマンド cmd=1 VODストリーミング開始。cmd=2 VODストリーミング終了
コード 文字列 VoDストリーミング結果 0:成功。1:失敗。2:警告
msg 文字列 コールバック情報

注:VODストリーミングコールバック後、ピアインターフェースサーバーは200ステータスコードとボディコンテンツを返します。ボディ内容は詳細でなくてもよいが、必ず入れましょう。

3 通知事項

  1. VoDストリーミングの複数のVODファイルアドレスと複数のストリームを設定することができます。
  2. トランスコーディングがVODストリーミングに使用されている場合、つまり bps、res、fpsなどのトランスコーディングパラメータが設定されている場合、対応する vcodecパラメータを入力する必要があります。
  3. VODファイル取得時やプッシュ配信時にタイムアウトが発生した場合、再試行してください。タイムアウト待ち時間は10秒で、デフォルトのリトライ回数は3回となっています。
  4. VODストリーミングタスクを終了させたい場合、タスクのidとforwardのパラメータは、VODストリーミング開始コマンドのパラメータと一致させる必要があります。例えば、idが123だとすると、ストリーミング開始時のVoDストリーミングアドレスがAの場合、idが123、終了時のアドレスがAである必要があります。VODストリーミングのアドレスが複数ある場合、1つ以上のアドレスのタスクを終了させることができます。
  5. インターフェース呼び出しの入力値であるsrcとforwardは、引用符なしでArrayList形式となっています。また、コールバックの応答値であるsrcurlとforwardurlは、引用符付きの文字列形式となっています。