録画

概要

Tobi では Sora が持つ録画機能を利用することが可能です。

録画ファイルの取得にはご用意いただいた AWS S3 または S3 互換オブジェクトストレージ (以降オブジェクトストレージ) にアップロードする方法と、 こちらが用意したオブジェクトストレージにアップロード後、署名付き URL からダウンロードする方法の二つがあります。

ダウンロードする仕組みの場合は制限があるため、 S3 互換オブジェクトストレージをご用意いただく事をお勧めします。

オブジェクトストレージへのアップロード

set-object-storage-settings API で指定したオブジェクトストレージに録画関連ファイルをアップロードします。

それぞれのファイルのアップロードが終わり次第、アップロード完了のウェブフックリクエストを飛ばします。

対応オブジェクトストレージ

  • AWS S3

  • MinIO

  • GCP GCS

  • Vultr Object Storage

  • Linode Object Storage

  • DigitalOcean Spaces

  • Cloudflare R2

ダウンロード機能

Tobi では Sora で録画したファイルごとに署名付きダウンロード URL で提供します。

署名付き URL は Tobi ウェブフックか Tobi API で取得できます。

注釈

Tobi ウェブフックは現在開発中です

Tobi ウェブフック archive.uploaded

tobi-webhook-type:

archive.uploaded

{
  "type": "archive.uploaded",
  "timestamp": "<RFC3339>",
  "recording_id": "<Base32-UUIDv4>",
  "channel_id": "<String>",
  "connection_id": "<Base32-UUIDv4>",
  "filename": "archive-<Connection-ID>.webm",
  "file_url": "<String>",
  "metadata_filename": "archive-<Connection-ID>.json",
  "metadata_url": "<String>"
}

Tobi ウェブフック split-archive.uploaded

tobi-webhook-type:

split-archive.uploaded

{
  "type": "split-archive.uploaded",
  "timestamp": "<RFC3339>",
  "recording_id": "<Base32-UUIDv4>",
  "channel_id": "<String>",
  "connection_id": "<Base32-UUIDv4>",
  "filename": "archive-<Connection-ID>.webm",
  "file_url": "<String>",
  "metadata_filename": "archive-<Connection-ID>.json",
  "metadata_url": "<String>"
}

Tobi ウェブフック split-archive-end.uploaded

tobi-webhook-type:

split-archive-end.uploaded

{
  "type": "split-archive-end.uploaded",
  "timestamp": "<RFC3339>",
  "recording_id": "<Base32-UUIDv4>",
  "channel_id": "<String>",
  "connection_id": "<Base32-UUIDv4>",
  "filename": "split-archive-end-<Connection-ID>.json",
  "file_url": "<String>"
}

Tobi ウェブフック recording-report.uploaded

tobi-webhook-type:

recording-report.uploaded

{
  "type": "recording-report.uplaoded",
  "timestamp": "<RFC3339>",
  "recording_id": "<Base32-UUIDv4>",
  "channel_id": "<String>",
  "filename": "<Recording-ID>/report-<Connection-ID>.json",
  "file_url": "<String>"
}

制限

split_only を利用しない場合の 1 録画ファイルの最大容量

1 ファイル最大 30 GB まで。 split_only を利用しない場合は必ず exprire_time に 0 以上の値を設定してください。

録画ファイルのダウンロード期限

録画ファイルは録画ファイルがアップロードされてから最大で 24 時間までダウンロード可能です。

録画ファイル合計容量

署名付き URL が生成された録画ファイル合計容量は月最大 300 GB です。

毎月 1 日 (UTC) にリセットされます。

例えば毎日 1 GiB の録画ファイルが生成された場合は録画ファイルの合計容量は 30 日で 30 GB です。

録画関連ファイルの Sora との差分

  • *_path 系の値がすべて "REDACTED" という文字列に置き換わります

  • event_metadata の値がすべて "REDACTED" という文字列に置き換わります

イベントウェブフックの Sora との差分

イベントウェブフック recording.report

Tobi の録画ウェブフック recording.report は Sora と仕様が一部が異なります。

Sora では録画終了時のウェブフックにレポートと録画とメタデータのファイルローカルパスを通知しますが、 Tobi ではローカルパスは 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>",
    "data": {
        "channel_id": "<String>",
        "recording_id": "<Base32-UUIDv4>",
        "metadata": "<JSON-Object>",
        "split_only": "<Boolean>",
        "created_at": "<UNIX-Time>",
        "expire_time": "<Integer>",
        "expired_at": "<Integer>",
        "file_path": "REDACTED",
        "filename": "<String>",
        "metadata_file_path": "REDACTED",
        "metadata_filename": "<String>",
        "archives": [
            {
                "client_id": "<String or Base32-UUIDv4>",
                "connection_id": "<Base32-UUIDv4>",
                "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>",
                "connection_id": "<Base32-UUIDv4>",
                "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

Tobi の録画ウェブフック archive.available は Sora と仕様が一部が異なります。

Sora では録画ファイルが利用可能になったウェブフックに録画ファイルとメタデータのローカルパスを通知しますが、 Tobi ではローカルパスは REDACTED という文字列に置き換わって通知されます。

  • "file_path": "REDACTED"

  • "metadata_file_path": "REDACTED"

{
    "type": "archive.available",
    "id": "<Base32-UUIDv4>",
    "version": "<String>",
    "label": "<String>",
    "node_name": "<String>",
    "channel_id": "<String>",
    "client_id": "<String or Base32-UUIDv4>",
    "bundle_id": "<String or Base32-UUIDv4>",
    "connection_id": "<Base32-UUIDv4>",
    "timestamp": "<UTC RFC3339 Timestamp>",
    "event_metadata": "<JSON>",
    "data": {
        "channel_id": "<String>",
        "recording_id": "<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": {
            "codec_type": "<String>"
        },
        "video": {
            "codec_type": "<String>",
            "bit_rate": "<Integer>",
            "height": "<Integer>",
            "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

Tobi の録画ウェブフック split-archive.available は Sora と仕様が一部が異なります。

Sora では録画ファイルが利用可能になったウェブフックに録画ファイルとメタデータのローカルパスを通知しますが、 Tobi ではローカルパスは REDACTED という文字列に置き換わって通知されます。

  • "file_path": "REDACTED"

  • "metadata_file_path": "REDACTED"

{
    "type": "split-archive.available",
    "id": "<Base32-UUIDv4>",
    "version": "<String>",
    "label": "<String>",
    "channel_id": "<String>",
    "client_id": "<String or Base32-UUIDv4>",
    "connection_id": "<Base32-UUIDv4>",
    "timestamp": "<UTC RFC3339 Timestamp>",
    "data": {
        "channel_id": "<String>",
        "recording_id": "<Base32-UUIDv4>",
        "split_index": "0001",
        "client_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>",
        "video": {
            "codec_type": "<String>",
            "bit_rate": "<Integer>",
            "height": "<Integer>",
            "width": "<Integer>"
        },
        "audio": {
            "codec_type": "<String>"
        },
        "stats": {},
        "start_time": "<Unix Time>",
        "start_timestamp": "<UTC RFC3339 Timestamp>",
        "stop_time": "<Unix Time>",
        "stop_timestamp": "<UTC RFC3339 Timestamp>",
    }
}

イベントウェブフック split-archive-end.available

Tobi の録画ウェブフック split-archive-end.available は Sora と仕様が一部が異なります。

Sora では録画ファイルが利用可能になったウェブフックに録画ファイルとメタデータのローカルパスを通知しますが、 Tobi ではローカルパスは REDACTED という文字列に置き換わって通知されます。

  • "file_path": "REDACTED"

  • "metadata_file_path": "REDACTED"

{
    "type": "split-archive-end.available",
    "id": "<Base32-UUIDv4>",
    "version": "<String>",
    "label": "<String>",
    "channel_id": "<String>",
    "client_id": "<String or Base32-UUIDv4>",
    "connection_id": "<Base32-UUIDv4>",
    "timestamp": "<UTC RFC3339 Timestamp>",
    "data": {
        "channel_id": "<String>",
        "recording_id": "<Base32-UUIDv4>",
        "split_index": "0001",
        "client_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>",
        "stats": {},
        "start_time": "<Unix Time>",
        "start_timestamp": "<UTC RFC3339 Timestamp>",
        "stop_time": "<Unix Time>",
        "stop_timestamp": "<UTC RFC3339 Timestamp>",
    }
}
© Copyright 2022, Shiguredo Inc. Created using Sphinx 5.0.0