録画¶
概要¶
Sora Cloud では Sora の録画機能を利用することができます。録画機能を利用するにあたり、追加料金などは不要です。
録画ファイルはご用意いただいた AWS S3 または S3 互換オブジェクトストレージ (以降オブジェクトストレージ) にアップロードします。
録画機能を利用する前に¶
重要
録画機能を利用するにはプロジェクトにオブジェクトストレージの設定をしてある必要があります。
オブジェクトストレージの設定がされていない場合は Sora の録画開始 API を呼び出しても実行されません。
オブジェクトレージの設定について¶
Sora Cloud ではオブジェクトのアップロード以外は行いません。 そのため Sora Cloud 側に設定するアクセスキーパーミッションは Put のみを付与してください。
制限¶
一括と分割録画の制限¶
Sora Cloud では録画方式は一括または分割のどちらかしか選択できません。
一括録画の時間制限¶
Sora Cloud では一括録画は最大で 3 時間までしか録画できません。
録画機能(セッション単位)分割録画の有効期限設定の制限¶
Sora Cloud では録画機能(セッション単位)で分割録画を行う際に有効期限を指定できますが、最大で 3 時間までしか指定できません。
録画機能の有効期限設定¶
expire_time
の値は 10800 秒(3 時間) 以内である必要があります。
セッション録画の場合
expire_time
に 1 以上、10800 以下の値を設定してくださいsplit_only
を指定し、セッションの終了まで録画を行う場合はexpire_time
の設定は不要です
レガシー録画の場合
split_only
を指定しない場合expire_time
に 1 以上、10800 以下の値を設定してくださいsplit_only
を指定した場合expire_time
は 0 を設定してください
オブジェクトストレージへのアップロード¶
プロジェクト設定画面で指定したオブジェクトストレージに録画関連ファイルをアップロードします。
それぞれのファイルのアップロードが終わり次第、アップロード完了のウェブフックリクエストを飛ばします。
対応オブジェクトストレージ¶
AWS S3
MinIO
GCP GCS
Vultr Object Storage
Linode Object Storage
DigitalOcean Spaces
Cloudflare R2
未検証オブジェクトストレージ¶
Wasabi
ウェブフック通知¶
Sora Cloud では録画ファイルのアップロードが完了するとウェブフックで通知を行います。
Sora Cloud ウェブフック recording-report.uploaded¶
- sora-cloud-webhook-type:
recording-report.uploaded
s3_uri
s3://<bucket-name>/<file-path>
{
"id": "<Base32-UUIDv4>",
"type": "recording-report.uplaoded",
"timestamp": "<RFC3339>",
"org_id": "<UUID>",
"project_id": "<String>",
"recording_id": "<Base32-UUIDv4>",
"channel_id": "<String>",
"filename": "<Recording-ID>/report-<Connection-ID>.json",
"s3_uri": "s3://<Bucket-Name>/<File-Path>"
}
Sora Cloud ウェブフック archive.uploaded¶
- sora-cloud-webhook-type:
archive.uploaded
s3_uri
s3://<bucket-name>/<file-path>
metadata_s3_uri
s3://<bucket-name>/<file-path>
{
"id": "<Base32-UUIDv4>",
"type": "archive.uploaded",
"timestamp": "<RFC3339>",
"recording_id": "<Base32-UUIDv4>",
"org_id": "<UUID>",
"project_id": "<String>",
"channel_id": "<String>",
"session_id": "<Base32-UUIDv4>",
"client_id": "<String | Base32-UUIDv4>",
"connection_id": "<Base32-UUIDv4>",
"s3_uri": "s3://<Bucket-Name>/<File-Path>",
"metadata_s3_uri": "s3://<Bucket-Name>/<File-Path>"
}
Sora Cloud ウェブフック split-archive.uploaded¶
- sora-cloud-webhook-type:
split-archive.uploaded
{
"id": "<Base32-UUIDv4>",
"type": "archive.uploaded",
"timestamp": "<RFC3339>",
"recording_id": "<Base32-UUIDv4>",
"org_id": "<UUID>",
"project_id": "<String>",
"channel_id": "<String>",
"session_id": "<Base32-UUIDv4>",
"client_id": "<String | Base32-UUIDv4>",
"connection_id": "<Base32-UUIDv4>",
"s3_uri": "s3://<Bucket-Name>/<File-Path>",
"metadata_s3_uri": "s3://<Bucket-Name>/<File-Path>"
}
Sora Cloud ウェブフック split-archive-end.uploaded¶
- sora-cloud-webhook-type:
split-archive-end.uploaded
{
"id": "<Base32-UUIDv4>",
"type": "split-archive-end.uploaded",
"timestamp": "<RFC3339>",
"recording_id": "<Base32-UUIDv4>",
"org_id": "<UUID>",
"project_id": "<String>",
"channel_id": "<String>",
"session_id": "<Base32-UUIDv4>",
"client_id": "<String | Base32-UUIDv4>",
"connection_id": "<Base32-UUIDv4>",
"s3_uri": "s3://<Bucket-Name>/<File-Path>"
}
録画関連ファイルの Sora との差分¶
*_path
系の値がすべて"REDACTED"
という文字列に置き換わりますevent_metadata
の値がすべて"REDACTED"
という文字列に置き換わります
イベントウェブフックの Sora との差分¶
イベントウェブフック recording.report¶
Sora Cloud の録画ウェブフック recording.report
は Sora と仕様が一部が異なります。
Sora では録画終了時のウェブフックにレポートと録画とメタデータのファイルローカルパスを通知しますが、
Sora Cloud ではローカルパスは REDACTED
という文字列に置き換わって通知されます。
"file_path": "REDACTED"
"metadata_file_path": "REDACTED"
{
"type": "recording.report",
"id": "<Base32-UUIDv4>",
"version": "<String>",
"label": "<String>",
"node_name": "<String>",
"channel_id": "<String>",
"timestamp": "<UTC RFC3339 Timestamp>",
"log_written": "<Boolean>",
"data": {
"channel_id": "<String>",
"recording_id": "<Base32-UUIDv4>",
"metadata": "<JSON-Object>",
"split_only": "<Boolean>",
"file_written": "<Boolean>",
"created_at": "<UNIX-Time>",
"expire_time": "<Integer>",
"expired_at": "<UNIX-Time>",
"start_timestamp": "<UTC RFC3339 Timestamp>",
"stop_timestamp": "<UTC RFC3339 Timestamp>",
"file_path": "REDACTED",
"filename": "<String>",
"failed_archives": [],
"archives": [
{
"client_id": "<String or Base32-UUIDv4>",
"bundle_id": "<String or Base32-UUIDv4>",
"connection_id": "<Base32-UUIDv4>",
"label": "<String>",
"node_name": "<String>",
"filename": "<String>",
"file_path": "REDACTED",
"metadata_file_path": "REDACTED",
"metadata_filename": "<String>",
"start_time_offset": "<Integer>",
"start_timestamp": "<UTC RFC3339 Timestamp>",
"stop_time_offset": "<Integer>",
"stop_timestamp": "<UTC RFC3339 Timestamp>",
"size": "<Integer>"
},
{
"client_id": "<String or Base32-UUIDv4>",
"bundle_id": "<String or Base32-UUIDv4>",
"connection_id": "<Base32-UUIDv4>",
"label": "<String>",
"node_name": "<String>",
"filename": "<String>",
"file_path": "REDACTED",
"metadata_file_path": "REDACTED",
"metadata_filename": "<String>",
"start_time_offset": "<Integer>",
"start_timestamp": "<UTC RFC3339 Timestamp>",
"stop_time_offset": "<Integer>",
"stop_timestamp": "<UTC RFC3339 Timestamp>",
"size": "<Integer>"
}
]
}
}
イベントウェブフック archive.available¶
Sora Cloud の録画ウェブフック archive.available
は Sora と仕様が一部が異なります。
Sora では録画ファイルが利用可能になった際のウェブフックに、録画ファイルとメタデータのローカルパスを通知しますが、
Sora Cloud ではローカルパスは REDACTED
という文字列に置き換わって通知されます。
"file_path": "REDACTED"
"metadata_file_path": "REDACTED"
{
"type": "archive.available",
"id": "<Base32-UUIDv4>",
"version": "<String>",
"label": "<String>",
"node_name": "<String>",
"channel_id": "<String>",
"session_id": "<Base32-UUIDv4>",
"client_id": "<String or Base32-UUIDv4>",
"bundle_id": "<String or Base32-UUIDv4>",
"connection_id": "<Base32-UUIDv4>",
"timestamp": "<UTC RFC3339 Timestamp>",
"event_metadata": "<JSON>",
"log_written": "<Boolean>",
"data": {
"channel_id": "<String>",
"recording_id": "<Base32-UUIDv4>",
"session_id": "<String or Base32-UUIDv4>",
"client_id": "<String or Base32-UUIDv4>",
"bundle_id": "<String or Base32-UUIDv4>",
"connection_id": "<Base32-UUIDv4>",
"created_at": "<UNIX-Time>",
"filename": "<String>",
"file_path": "REDACTED",
"metadata_filename": "<String>",
"metadata_file_path": "REDACTED",
"size": "<Integer>",
"audio": "<Boolean>",
"audio_codec_type": "<String>",
"video": "<Boolean>",
"video_codec_type": "<String>",
"video_bit_rate": "<Integer>",
"video_height": "<Integer>",
"video_width": "<Integer>"
"stats": {},
"start_time": "<UNIX-Time>",
"start_time_offset": "<Integer>",
"start_timestamp": "<UTC RFC3339 Timestamp>",
"stop_time": "<UNIX-Time>",
"stop_time_offset": "<Integer>",
"stop_timestamp": "<UTC RFC3339 Timestamp>"
}
}
イベントウェブフック split-archive.available¶
Sora Cloud の録画ウェブフック split-archive.available
は Sora と仕様が一部が異なります。
Sora では録画ファイルが利用可能になった際のウェブフックに、録画ファイルとメタデータのローカルパスを通知しますが、
Sora Cloud ではローカルパスは REDACTED
という文字列に置き換わって通知されます。
"file_path": "REDACTED"
"metadata_file_path": "REDACTED"
{
"type": "split-archive.available",
"id": "<Base32-UUIDv4>",
"version": "<String>",
"label": "<String>",
"node_name": "<String>",
"channel_id": "<String>",
"session_id": "<Base32-UUIDv4>",
"client_id": "<String or Base32-UUIDv4>",
"bundle_id": "<String or Base32-UUIDv4>",
"connection_id": "<Base32-UUIDv4>",
"timestamp": "<UTC RFC3339 Timestamp>",
"event_metadata": "<JSON>",
"log_written": "<Boolean>",
"data": {
"channel_id": "<String>",
"recording_id": "<Base32-UUIDv4>",
"split_index": "<String>",
"session_id": "<String or Base32-UUIDv4>",
"client_id": "<String or Base32-UUIDv4>",
"bundle_id": "<String or Base32-UUIDv4>",
"connection_id": "<Base32-UUIDv4>",
"created_at": "<UNIX-Time>",
"filename": "<String>",
"file_path": "REDACTED",
"metadata_filename": "<String>",
"metadata_file_path": "REDACTED",
"size": "<Integer>",
"audio": "<Boolean>",
"audio_codec_type": "<String>",
"video": "<Boolean>",
"video_codec_type": "<String>",
"video_bit_rate": "<Integer>",
"video_height": "<Integer>",
"video_width": "<Integer>"
"stats": {},
"start_time": "<UNIX-Time>",
"start_time_offset": "<Integer>",
"start_timestamp": "<UTC RFC3339 Timestamp>",
"stop_time": "<UNIX-Time>",
"stop_time_offset": "<Integer>",
"stop_timestamp": "<UTC RFC3339 Timestamp>"
}
}
イベントウェブフック split-archive.end¶
Sora Cloud の録画ウェブフック split-archive.end
は Sora と仕様が一部が異なります。
Sora では録画ファイルが利用可能になった際のウェブフックに、録画ファイルとメタデータのローカルパスを通知しますが、
Sora Cloud ではローカルパスは REDACTED
という文字列に置き換わって通知されます。
"file_path": "REDACTED"
"metadata_file_path": "REDACTED"
{
"type": "split-archive.end",
"id": "<Base32-UUIDv4>",
"version": "<String>",
"label": "<String>",
"node_name": "<String>",
"channel_id": "<String>",
"session_id": "<Base32-UUIDv4>",
"client_id": "<String or Base32-UUIDv4>",
"bundle_id": "<String or Base32-UUIDv4>",
"connection_id": "<Base32-UUIDv4>",
"timestamp": "<UTC RFC3339 Timestamp>",
"event_metadata": "<JSON>",
"log_written": "<Boolean>",
"data": {
"channel_id": "<String>",
"recording_id": "<Base32-UUIDv4>",
"split_last_index": "<String>",
"session_id": "<String or Base32-UUIDv4>",
"client_id": "<String or Base32-UUIDv4>",
"bundle_id": "<String or Base32-UUIDv4>",
"connection_id": "<Base32-UUIDv4>",
"filename": "<String>",
"file_path": "REDACTED",
"audio": "<Boolean>",
"audio_codec_type": "<String>",
"video": "<Boolean>",
"video_codec_type": "<String>",
"video_bit_rate": "<Integer>",
"stats": {},
"start_time": "<UNIX-Time>",
"start_time_offset": "<Integer>",
"start_timestamp": "<UTC RFC3339 Timestamp>",
"stop_time": "<UNIX-Time>",
"stop_time_offset": "<Integer>",
"stop_timestamp": "<UTC RFC3339 Timestamp>"
}
}
セッションウェブフックの Sora との差分¶
セッションウェブフック recording.report¶
Sora Cloud のセッションウェブフック recording.report
は Sora と仕様が一部が異なります。
Sora では録画終了時のウェブフックにレポートと録画とメタデータのファイルローカルパスを通知しますが、
Sora Cloud ではローカルパスは REDACTED
という文字列に置き換わって通知されます。
"file_path": "REDACTED"
"metadata_file_path": "REDACTED"
{
"type": "recording.report",
"id": "<Base32-UUIDv4>",
"version": "<String>",
"label": "<String>",
"node_name": "<String>",
"channel_id": "<String>",
"session_id": "<String",
"session_metadata": "<JSON>",
"timestamp": "<UTC RFC3339 Timestamp>",
"data": {
"channel_id": "<String>",
"session_id": "<String>",
"recording_id": "<Base32-UUIDv4>",
"recording_metadata": "<JSON-Object>",
"split_only": "<Boolean>",
"split_duration": "<Integer>",
"created_at": "<UNIX-Time>",
"expire_time": "<Integer>",
"expired_at": "<UNIX-Time>",
"file_path": "<String>",
"filename": "<String>",
"file_written": "<Boolean>",
"start_timestamp": "<UTC RFC3339 Timestamp>",
"stop_timestamp": "<UTC RFC3339 Timestamp>",
"archives": [
{
"label": "<String>",
"node_name": "<String>",
"client_id": "<String | Base32-UUIDv4>",
"bundle_id": "<String | Base32-UUIDv4>",
"connection_id": "<Base32-UUIDv4>",
"file_path": "REDACTED",
"filename": "<String>",
"metadata_file_path": "REDACTED",
"metadata_filename": "<String>",
"start_time_offset": "<Integer>",
"start_timestamp": "<UTC RFC3339 Timestamp>",
"stop_time_offset": "<Integer>",
"stop_timestamp": "<UTC RFC3339 Timestamp>",
"size": "<Integer>"
},
{
"label": "<String>",
"node_name": "<String>",
"client_id": "<String | Base32-UUIDv4>",
"bundle_id": "<String | Base32-UUIDv4>",
"connection_id": "<Base32-UUIDv4>",
"file_path": "REDACTED",
"filename": "<String>",
"metadata_file_path": "REDACTED",
"metadata_filename": "<String>",
"start_time_offset": "<Integer>",
"start_timestamp": "<UTC RFC3339 Timestamp>",
"stop_time_offset": "<Integer>",
"stop_timestamp": "<UTC RFC3339 Timestamp>",
"size": "<Integer>"
}
],
"failed_archives": [
{
"label": "<String>",
"node_name": "<String>",
"client_id": "<String | Base32-UUIDv4>",
"bundle_id": "<String | Base32-UUIDv4>",
"connection_id": "<Base32-UUIDv4>"
},
{
"label": "<String>",
"node_name": "<String>",
"client_id": "<String | Base32-UUIDv4>",
"bundle_id": "<String | Base32-UUIDv4>",
"connection_id": "<Base32-UUIDv4>"
}
]
}
}
S3 または S3 互換ストレージのエンドポイント¶
Google Cloud Storage¶
- endpoint:
storage.googleapi.com
Akamai Connected Cloud (Linode Object Storage)¶
- endpoint:
<region>.linodeobjects.com
Vultr Object Storage¶
- endpoint:
<region>.vultrobjects.com
region は以下を参考にしてください。
Cloudflare R2¶
- endpoint:
<account-id>.r2.cloudflarestorage.com
account-id は以下を参考にしてください。
https://developers.cloudflare.com/fundamentals/get-started/basic-tasks/find-account-and-zone-ids/