ApsaraVideo Liveは、ストリーム取り込みステータス、ライブストリーム記録、オンデマンド記録、ライブストリームスナップショット、および自動レビューのコールバックをサポートしています。 このトピックでは、設定方法、パラメーター、およびこれらのコールバックの例について説明します。
概要
ライブストリーミング中にイベントがトリガーされると、Alibaba Cloudがサーバーにリクエストを送信し、サーバーがリクエストに応答します。 リクエストが検証に合格すると、JSON形式のデータを含むコールバックメッセージが返されます。
ApsaraVideo Liveは、次のイベントのコールバックをサポートしています。
コールバックメソッド
ApsaraVideo Liveは、HTTPおよびHTTPSコールバックを使用したイベント通知をサポートしています。 HTTPサービスをデプロイしてコールバックメッセージを受信し、ApsaraVideo Liveコンソールを使用するかAPI操作を呼び出してコールバックURLを設定する必要があります。
ストリーム取り込みが開始または中断されると、ApsaraVideo Liveは指定されたコールバックURLにHTTP GETリクエストを送信します。 特定のイベントコンテンツは、URLパラメータに含まれます。
他のイベントがトリガーされると、ApsaraVideo Liveは指定されたコールバックURLにHTTP POSTリクエストを送信します。 特定のイベントコンテンツは、JSON形式のリクエストボディに含まれます。
使用上の注意
コールバックURLは識別子を必要としませんが、アクセス可能でなければなりません。 特定のタイムアウト期間内にURLから応答が返されない場合、ApsaraVideo LiveはURLへのアクセスを再試行します。 現在のタイムアウト時間は5秒です。 5秒以内に応答が返されない場合、ApsaraVideo Liveは1秒間隔で最大5回URLへのアクセスを再試行します。
ストリーム取り込みステータスのコールバック
ストリーム取り込みの成功や中断など、ドメイン名でのストリーム取り込みステータスの通知を受け取るようにコールバックを設定できます。 ApsaraVideo Liveコンソールを使用するか、API操作を呼び出して、コールバックURLを設定できます。
設定方法
ApsaraVideo Liveコンソールの使用
ApsaraVideo Live コンソールにログインします。 左側のナビゲーションウィンドウで、 を選択します。 [コールバック] ページで、設定するドメイン名を選択します。 [コールバック設定] タブで、[ストリーム取り込みコールバック] をオンにしてコールバックURLを指定するか、既存のコールバックURLを変更します。 詳細については、「ストリーム取り込みコールバック」をご参照ください。
API操作の呼び出し
API 操作
説明
関連ドキュメント
SetLiveStreamsNotifyUrlConfig
取り込みドメインでストリーム取り込みコールバックを設定します。
DescribeLiveStreamsNotifyUrlConfig
取り込みドメインでのストリーム取り込みのコールバック設定を照会します。
DeleteLiveStreamsNotifyUrlConfig
取り込みドメインでのストリーム取り込みのコールバック設定を削除します。
コールバック
コールバックパラメータはMultiDictにカプセル化されます。
コールバックロジック
Real-Time Messaging Protocol (RTMP) によるストリーム取り込み中、ApsaraVideo Liveは、ApsaraVideo LiveがOnPublishメッセージを受信してから2秒以内にストリーム取り込みクライアントが接続を閉じるかどうかを確認します。 ストリーム取り込みクライアントが接続を閉じない場合、ApsaraVideo Liveはストリーム取り込みの成功に関するコールバック通知を送信します。
互いに関連付けられた取り込みドメインAとストリーミングドメインBがあり、ストリーミングドメインBの通常のストリームプルとトリガーされたストリームプルを設定したとします。ストリームプルのステータスに関するコールバック通知を受信する場合は、取り込みドメインAのストリームインジェストコールバックを設定します。クライアントが2秒以内に接続を閉じない場合、ストリームプルは成功と見なされます。
説明コールバック通知とDescribeLiveStreamsOnlineList操作の呼び出しに対する応答に基づいて、ストリームの取り込みまたはプルが成功したことを確認した後、ストリーミングURLを発行することを推奨します。
コールバックのパラメーター
パラメーター
説明
action
イベント名。 有効な値:
publish: ストリーム取り込み
publish_done: ストリーム中断
ip
ストリーム取り込みクライアントのIPアドレス。
id
取り込まれたストリームの名前。
app
取り込みドメイン。 デフォルト値はカスタム取り込みドメインです。 取り込みドメインがない場合は、ストリーミングドメインが使用されます。
appname
ストリームを取り込むアプリケーションの名前。
time
UNIXタイムスタンプ。 単位は秒です。
usrargs
ストリームの取り込みに使用されるカスタムパラメーター。
node
プレゼンスポイント (POP) またはストリームを受信するホストの名前。
height
解像度の高さ。 単位: ピクセル。
説明解決の高さと幅は、コールバックが初めて呼び出された場合にのみ返されます。
width
解像度の幅。 単位: ピクセル。
成功したストリーム取り込みのサンプルコールバック:
http://1.1.1.1?action=publish&ip=192.168.0.1&id=world&app=example.aliyundoc.com&appname=liveApp****&time=1609220385&usrargs={Custom parameters}& node=cdnvideocenter01020711****.cm3&height=720&width=1280
中断されたストリーム取り込みのサンプルコールバック:
http://1.1.1.1?action=publish_done&ip=192.168.0.0&id=world&app=example.aliyundoc.com&appname=liveApp****&time=1609220385&usrargs={Custom parameters}& node=cdnvideocenter01020711****.cm3&height=720&width=1280
コールバック認証
デフォルトでは、ストリーム取り込みコールバックの認証は無効になっています。 ストリーム取り込みコールバックURLを指定すると、この機能を有効にできます。 この機能を有効にすると、次の認証ロジックが適用されます。
ApsaraVideo Liveがコールバックリクエストを開始すると、HTTPまたはHTTPSリクエストに
ALI-LIVE-TIMESTAMP
およびALI-LIVE-SIGNATURE
ヘッダーが含まれ、コールバックメッセージ受信サーバーが署名を認証できるようになります。ALI-LIVE-SIGNATURE
の値は、次の式に基づいて計算されます。ALI-LIVE-SIGNATURE = MD5SUM (MD5CONTENT)
MD5CONTENT = Domain name|ALI-LIVE-TIMESTAMP value|Cryptographic key
説明ドメイン名は、コールバックURLを設定するインジェストドメインです。 暗号化キーは、コールバックURLに指定する暗号化キーです。
コールバックメッセージを受信した後、コールバックメッセージ受信サーバーは、コールバックのドメイン名、
ALI-LIVE-TIMESTAMP
ヘッダーの値、および暗号化キーを上記の形式で連結します。 サーバーは文字列のMD5値を計算して暗号化文字列を取得します。 次に、サーバーは暗号化された文字列を、ApsaraVideo Liveによって開始されたHTTPまたはHTTPSリクエストのALI-LIVE-SIGNATURE
ヘッダーの値と比較します。 2つの値が異なる場合、リクエストは無効です。
ライブストリーム録音のコールバック
ライブストリーム録画のコールバックには、録画ステータスのコールバックとファイル生成のコールバックが含まれます。 これらのコールバックは、ApsaraVideo Liveコンソールを使用するか、API操作を呼び出して設定できます。
録画ステータスのコールバック: 録画の開始または終了時に呼び出されます。 コールバックメッセージは、記録の開始または終了を通知します。
ファイル生成コールバック: 録音が生成されるときに呼び出されます。 コールバックメッセージには、録音の名前、開始時間、終了時間、および期間が含まれます。
設定方法
ApsaraVideo Liveコンソールの使用
ApsaraVideo Live コンソールにログインします。 左側のナビゲーションウィンドウで、 を選択します。 [コールバック] ページで、設定するドメイン名を選択します。 [コールバック設定] タブで、[録音コールバック] をオンにしてコールバックURLを指定するか、既存のコールバックURLを変更します。 詳細については、「コールバックの記録」をご参照ください。
API操作の呼び出し
API 操作
説明
関連ドキュメント
AddLiveRecordNotifyConfig
ドメイン名でライブストリーム録画のコールバックを設定します。
記録ステータスのコールバックを有効にするには、NeedStatusNotifyパラメーターをtrueに設定します。
DescribeLiveRecordNotifyConfig
ドメイン名でのライブストリーム録画のコールバックの設定を照会します。
DeleteLiveRecordNotifyConfig
ドメイン名でライブストリーム録画のコールバックの設定を削除します。
ステータスのコールバックの記録
コールバックのパラメーター
パラメーター
説明
domain
ストリーミングドメイン。
app
アプリケーションの名前。
stream
ストリームの名前。
event
イベント名。
record_started: 録画が開始されました。
record_paused: 録画が一時停止されます。
record_resumed: 記録が再開されました。
サンプルコールバック
{ "domain": "demo.aliyundoc.com", "app": "liveApp****", "stream": "liveStream****", "event": "record_started" }
ファイル生成コールバック
コールバックのパラメーター
パラメーター
説明
domain
ストリーミングドメイン。
app
アプリケーションの名前。
stream
ストリームの名前。
ウリ
指定されたObject storage Service (OSS) バケット内の記録のストレージパス。
期間
コンテンツの録画時間。 単位は秒です。
start_time
録音開始時刻。 時刻は UNIX のタイムスタンプです。 単位は秒です。
stop_time
レコーディングの終了時間。 時刻は UNIX のタイムスタンプです。 単位は秒です。
push_args
callback_の前にcallback_が付いているストリーム取り込みパラメーター (callback_arg1やcallback_myidなど) 。
説明各パラメータは1つの値のみをサポートします。 パラメーターに複数の値を渡す場合、コールバックはパラメーターに渡された最初の値のみを返します。 たとえば、
callback_args1=value1&callback_args1=value2
のように、value1とvalue2をcallback_args1パラメーターに渡すと、コールバックは"callback_args1": "value1"
のみを返します。サンプルコールバック
ストリーム取り込みURLの例:
rtmp://demo.aliyundoc.com/liveApp****/liveStream****?callback_args1=value1&callback_myid=1231389741
コールバックコンテンツの例:
{ "domain": "demo.aliyundoc.com", "app": "liveApp****", "stream": "liveStream****", "uri": "liveApp****/liveStream****/0_2017-03-08-23:09:46_2017-03-08-23:10:40.flv", "duration": 69.403, "start_time": 1488985786, "stop_time": 1488985840, "push_args": { "callback_args1": "value1", "callback_myid": "1231389741" } }
説明上記のサンプルのコールバック通知は、カスタムコールバックテンプレートがない場合に適用されます。
オンデマンド録音のコールバック
オンデマンド録画が開始される前に、ライブストリームのパラメーターを渡すためにオンデマンド録画のコールバックが呼び出されます。 次に、録音が必要かどうかを判断できます。
オンデマンド記録のコールバックを構成するには、コールバックURL、ドメイン名、およびアプリケーションまたはライブストリームを指定する必要があります。 ApsaraVideo Liveが指定されたドメイン名、アプリケーション、またはライブストリームに一致する録画リクエストを受信すると、ApsaraVideo liveは指定されたコールバックURLにリクエストを送信し、ライブストリームを録画する必要があるかどうかを判断できます。 リクエストには5つのパラメータが含まれます。
リクエストパラメーター
パラメーター
データ型
説明
ドメイン
String
メインのストリーミングドメイン。
アプリ
String
ライブストリームが属するアプリケーションの名前。
ストリーム
String
ライブストリームの名前。
コーデック
String
エンコード形式。 有効な値:
h264
h265
vbitrate
String
ビデオのビットレート。 単位:Kbit/s
レスポンスパラメーター
パラメーター
データ型
必須
説明
ApiVersion
String
課金されません
API のバージョン。 デフォルトでは、1.0 が入力されます。
NeedRecord
Bool
課金されます
記録が必要かどうかを示します。
インターバル
JSONObject
課金されません
各サイクルの各フォーマットでの記録の持続時間。 有効な値: 5 ~ 21600 単位は秒です。
Format
JSONArray
課金されません
録音のフォーマット。 記録は、MP4、FLV、またはM3U8フォーマットで行うことができる。
リクエストの例
GET /?app=seq_all&domain=demo.aliyundoc.com&stream=ondemand8&vbitrate=2000&codec=h264 HTTP/1.1 Host: pull.aliyundoc.com User-Agent: Go-http-client/1.1 Accept-Encoding: gzip
レスポンスの例
{ "ApiVersion" : "1.0", "NeedRecord" : true, "Interval" : { "Mp4": 300, "Flv": 120, "M3U8": 180 }, "Format" : ["mp4","flv"] }
応答パラメータの処理
ApsaraVideo Liveは、返されたパラメーター設定を使用して、既存の録画設定を上書きまたは変更します。 たとえば、Intervalパラメーターが返された場合、ApsaraVideo Liveはその戻り値を使用して、既存の記録設定のIntervalパラメーターの値を上書きします。 Formatパラメーターが返された場合、ApsaraVideo Liveは、返されたFormatパラメーターで指定された形式と既存の録画設定で指定された形式の共通部分を使用します。 返されたFormatパラメーターで指定された形式が既存の録画設定にない場合、ライブストリームは録画されません。
説明非200 HTTPステータスコードが返された場合、エラーが発生しました。
リクエスト本文の長さは2,048文字を超えることはできません。 そうしないと、悪意のある攻撃を防ぐために本体が切り捨てられます。
ライブストリームスナップショットのコールバック
ApsaraVideo Liveは、ライブストリームスナップショットのコールバックをサポートしています。 ApsaraVideo Liveコンソールを使用するか、API操作を呼び出して、コールバックURLを設定できます。
ライブストリームスナップショットのコールバックの設定
ApsaraVideo Liveコンソールの使用
ApsaraVideo Live コンソールにログインします。 左側のナビゲーションウィンドウで、 を選択します。 [コールバック] ページで、設定するドメイン名を選択します。 [コールバック設定] タブで、[スナップショットコールバック] をオンにしてコールバックURLを指定するか、既存のコールバックURLを変更します。 詳細については、「スナップショットコールバック」をご参照ください。
API操作の呼び出し
API 操作
説明
関連ドキュメント
AddLiveSnapshotNotifyConfig
スナップショットコールバックを設定します。
UpdateLiveSnapshotNotifyConfig
スナップショットコールバックの設定を変更します。
DescribeLiveSnapshotNotifyConfig
スナップショットコールバックの設定を照会します。
DeleteLiveSnapshotNotifyConfig
スナップショットコールバックの設定を削除します。
コールバックのパラメーター
パラメーター
説明
Event
イベント名。
DomainName
ストリーミングドメイン。
AppName
アプリケーションの名前。
StreamName
ストリームの名前。
OssBucket
スナップショットが保存されているOSSバケットの名前。
OssEndpoint
スナップショットが保存されているOSSバケットのエンドポイント。
OssObject
スナップショットの名前。
CreateTime
スナップショットがキャプチャされた時点。
SnapshotUrl
指定されたOSSバケット内のスナップショットのストレージパス。
サイズ
スナップショットのサイズ。
幅
スナップショットの幅。 単位: ピクセル。
Height
スナップショットの高さ。 単位: ピクセル。
サンプルコールバック
{ "Event":"Snapshot", "DomainName":"demo.aliyundoc.com", "AppName":"liveApp****", "StreamName":"liveStream****", "OssBucket":"liveBucket****", "OssEndpoint":"oss-cn-shan****.aliyuncs.com", "OssObject":"1****.jpg", "CreateTime":"2015-12-01T17:36:00Z", "SnapshotUrl":"http://liveBucket****.oss-cn-shan****.aliyuncs.com/1****.jpg", "Size":"36291", "Width":"1280", "Height":"720" }
ライブストリームスナップショットのコールバックの認証を設定できます。 詳細については、「SetSnapshotCallbackAuth」および「コールバック認証の使用説明書」をご参照ください。
自動レビューのコールバック
ApsaraVideo Liveは、ビデオモデレーションとオーディオモデレーション結果のコールバックをサポートしています。 ApsaraVideo Liveコンソールを使用するか、API操作を呼び出して、コールバックURLを設定できます。
ビデオモデレーション結果のコールバックを設定する
ApsaraVideo Liveコンソールの使用
ApsaraVideo Live コンソールにログインします。 左側のナビゲーションウィンドウで、 を選択します。 [コールバック] ページで、設定するドメイン名を選択します。 [コールバック設定] タブで、[ビデオモデレーションコールバック] をオンにしてコールバックURLを指定するか、既存のコールバックURLを変更します。 詳細については、「ビデオモデレーションコールバック」をご参照ください。
説明一部のライブセンターのみが自動レビュー機能をサポートしています。 詳細については、「サポートされているリージョン」をご参照ください。
API操作の呼び出し
API 操作
説明
関連ドキュメント
AddLiveDetectNotifyConfig
ビデオモデレーション結果のコールバックを設定します。
DescribeLiveAudioAuditNotifyConfig
ビデオモデレーション結果のコールバックの設定を照会します。
UpdateLiveDetectNotifyConfig
ビデオモデレーション結果のコールバックの設定を変更します。
DeleteLiveDetectNotifyConfig
ビデオモデレーション結果のコールバックの設定を削除します。
ビデオのモデレート結果のコールバック
ApsaraVideo Liveは、違法なビデオコンテンツが検出された場合にのみコールバックメッセージを送信します。 コールバックメッセージは、不正なビデオコンテンツのレビュー情報及び記憶情報を含みます。
コールバックのパラメーター
パラメーター
データ型
説明
DomainName
String
ストリーミングドメイン。
AppName
String
アプリケーションの名前。
StreamName
String
ストリームの名前。
OssEndpoint
String
OSSバケットのエンドポイント。
OssBucket
String
OSS バケットの名前。
OssObject
String
OSSオブジェクトの名前。
結果
JSONArray
ビデオのモデレーション結果。 詳細については、「Resultパラメーターの属性」をご参照ください。
表 1. Resultパラメーターの属性
属性
データ型
説明
BizType
String
ビジネスタイプ。 モデルを指定できます。 デフォルト値はドメイン名です。
シーン
String
モデレーションシナリオ。 有効な値:
ポルノ: ポルノコンテンツ
テロリズム: テロリズムまたは政治的に敏感なコンテンツ
ad: 広告違反
live: 望ましくないシーン
ロゴ: ロゴ画像
ラベル
String
モデレーション結果のカテゴリ。 有効な値は、指定されたモデレーションシナリオによって異なります。
Sceneがpornに設定されている場合、有効な値は次のとおりです。
ノーマル
セクシー
ポルノ
Sceneがterrorismに設定されている場合、有効な値は次のとおりです。
ノーマル
血まみれ
爆発
衣装
ロゴ
武器
政治
暴力
群衆
パレード
カークラッシュ
フラグ
場所
その他
Sceneがadに設定されている場合、有効な値は次のとおりです。
ノーマル
広告
npx: 違法な広告
qrcode: QRコード
programCode: ミニプログラムコード
Sceneがliveに設定されている場合、有効な値は次のとおりです。
ノーマル
無意味: 黒または白の画面など、画像にコンテンツがない
PIP: picture-in-picture
喫煙
drivelive: 走行中の車両でのライブストリーミング
Sceneがlogoに設定されている場合、有効な値は次のとおりです。
ノーマル
テレビ: 制御されたロゴ
商標
レート
浮く
信頼レベルのスコア。 有効値: 0~100。 より大きな値は、より高い信頼レベルを示す。
説明このスコアは参考用です。 ビジネスではこのスコアを使用しないことを強くお勧めします。 Label属性の値に基づいて、不正なコンテンツがあるかどうかを判断することを推奨します。
範囲
String
reserved属性。
説明デフォルトでは、このバージョンは新しいユーザーに使用されます。 既存のユーザーでこのバージョンを使用する場合は、チケットを起票してください。 詳細については、お問い合わせをご参照ください。
サンプルコールバック
{ "DomainName": "demo.aliyundoc.com", "AppName": "liveApp****", "StreamName": "liveStream****", "OssEndpoint": "oss-cn-hang****.aliyuncs.com", "OssBucket": "liveBucket****", "OssObject": "example.jpg", "Result": [ { "BizType": "demo.aliyundoc.com", "Result": [ {"Label": "Porn", "Rate":11, "Suggestion": "review", "Scene":"porn", "Extent": {}}, {"Label": "Ad", "Rate":11, "Suggestion": "review", "Scene":"ad", "Extent": {}} ] } ] }
オーディオモデレーション結果のコールバックを設定する
ApsaraVideo Liveコンソールの使用
ApsaraVideo Live コンソールにログインします。 左側のナビゲーションウィンドウで、 を選択します。 [コールバック] ページで、設定するドメイン名を選択します。 [コールバック設定] タブで、[オーディオモデレーションコールバック] をオンにしてコールバックURLを指定するか、既存のコールバックURLを変更します。 詳細については、「オーディオモデレーションコールバック」をご参照ください。
API操作の呼び出し
API 操作
説明
関連ドキュメント
AddLiveAudioAuditNotifyConfig
オーディオモデレーション結果のコールバックを設定します。
重要オーディオモデレーション結果のコールバックは、JSON文字列の形式で返されます。
DeleteLiveAudioAuditNotifyConfig
オーディオモデレーション結果のコールバックの設定を削除します。
UpdateLiveAudioAuditNotifyConfig
オーディオモデレーション結果のコールバックの設定を変更します。
DescribeLiveAudioAuditNotifyConfig
オーディオモデレーション結果のコールバックの設定を照会します。
オーディオモデレーション結果のコールバック
ApsaraVideo Liveは、違法なオーディオコンテンツが検出された場合にのみコールバックメッセージを送信します。 コールバックメッセージには、不正なオーディオコンテンツの検出されたテキストと、直前のコンテキストが含まれています。
コールバックのパラメーター
パラメーター
データ型
説明
domain
String
ストリーミングドメイン。
app
String
アプリケーションの名前。
stream
String
ストリームの名前。
timestamp
Int
コールバックのタイムスタンプ。 単位は秒です。
result
JSONArray
オーディオのモデレーション結果。 詳細については、「resultパラメーターの属性」をご参照ください。
表 2. 結果パラメーターの属性
属性
データ型
説明
シーン
String
モデレーションシナリオ。
ラベル
String
モデレーション結果のカテゴリ。 有効な値:
ノーマル
スパム
広告
政治
テロ
虐待
ポルノ
flood: 過剰なジャンクコンテンツ
禁制品: 禁止コンテンツ
無意味
提案
String
実行するために推奨される後続の操作。 有効な値:
pass: モデレートされたオーディオはそれ以上の操作を必要としません。
review: モデレートされた音声には違反の疑いがあり、人間によるレビューが必要です。
block: モデレートされたオーディオに違反があります。 オーディオを削除またはブロックすることを推奨します。
rate
浮く
信頼レベルのスコア。 有効値: 0~100。 より大きな値は、より高い信頼レベルを示す。
説明このスコアは参考用です。 ビジネスではこのスコアを使用しないことを強くお勧めします。 label属性の値に基づいて、不正なコンテンツがあるかどうかを判断することを推奨します。
詳細
JSONArray
モデレートされたオーディオのテキストに関する詳細。 値は、1つ以上の要素を含むJSON配列です。 各要素は、テキストエントリに対応する。 各要素の構造の詳細については、「詳細属性のフィールド」をご参照ください。
表 3. 詳細属性のフィールド
項目
データ型
説明
startTime
Int
テキストエントリの開始時刻。 単位は秒です。
endTime
Int
テキストエントリの終了時刻。 単位は秒です。
text
String
オーディオから変換されたテキストエントリの内容。
ラベル
String
モデレーション結果のカテゴリ。 有効な値:
ノーマル
スパム
広告
政治
テロ
虐待
ポルノ
flood: 過剰なジャンクコンテンツ
禁制品: 禁止コンテンツ
無意味
サンプルコールバック
{ "domain": "example.aliyundoc.com", "app": "liveApp****", "stream": "5d9747eba39b44769852d276f9ff****", "timestamp": 1572248095, "result": [ { "scene": "antispam", "label": "ad", "suggestion": "block", "rate": 99.91, "details": [ { "startTime": 1572248023, "endTime": 1572248040, "text": "You can share the privilege of 120-day free stay in hotels in Lijiang and Longchuan with your friends and relatives. Welcome to Yunqi International Hotel. The hotel is located next to Dengchao KTV, No. 96, Tuanjie Street, Mang City. The hotel phone number is 2285699.", "label": "ad" }, { "startTime": 1572248040, "endTime": 1572248070, "text": "Classic villas near warm springs such as Longduo Spring, Lianghe Jinta Spring, and Spring Tourist Town in Binjiangyuan are available for sale on November 2. We offer various layouts, classic designs, and attractive prices. Buy a villa and then you can enjoy spring at home. Welcome to visit the villas. The address is No. 229, Xianfeng Road, Zhedao Town, Ranhe County. Call our hotline at 0692695577769***. ", "label": "normal" }, { "startTime": 1572248072, "endTime": 1572248077, "text": "Happy time with you is great.", "label": "normal" }, { "startTime": 1572248078, "endTime": 1572248086, "text": "fme043 Snatch a little leisure from a busy life. With songs, I feel relaxed. With films, I miss you.", "label": "normal" } ] } ] }