録画とストレージ
SkyView はデフォルトでローカルにセグメント録画を行い、任意で 115 クラウドをマウントしてクラウドバックアップにできます。本章では録画の仕組み、保持ポリシー、115 連携について説明します。
録画の書き込み方式
SkyView は各カメラの映像を時間で区切り、標準的な MP4 ファイルとして書き出します。各セグメントは 60 秒固定です。書き込みが終わった時点でそのまま再生できる完全なファイルになっており、シークもすぐに行えます。変換処理を待つ必要はありません。保存先パス:
data/recordings/
<camera_id>/
2026-05-18_14-30-00.mp4
2026-05-18_14-31-00.mp4
2026-05-18_14-32-00.mp4
...アーカイブ後のパス
archived 状態になると、原子的に rename されて data/recordings/_archive/<camera_id>/ 配下に移動します。ディレクトリ構造とファイル名はそのままミラーされ、書き込み中の inbox と区別しやすくなっています。_archive/ プレフィックスは規約であり、uploader の discovery スキャンはこれをスキップして、アーカイブ済みファイルが繰り返し処理されないようにしています。115 クラウドモードでは、ローカルにファイルを残すかどうかは delete_after_upload 設定で決まります(デフォルトはアップロード成功後に削除)。ローカルストレージのパス
録画は /app/data/recordings(ネストしたマウントで、大容量ディスクや NAS を個別に指定可能)に書き込まれ、データベース / cookies / ログなどの小さな状態は /app/data に置かれます。AI モデルはイメージに内蔵されており、データディレクトリには置かれません。本番運用では、録画ディレクトリを必ず容量に余裕のある大容量ディスクに指定してください。システムディスクと同じパーティションに詰め込むのは避けてください——録画で容量が尽きるとサーバーが起動しなくなります。
# 推奨:録画は別の大容量ディスク / NAS にマウント(小さな状態は data/ に残す)
sudo mkdir -p /mnt/recordings
# ワンライナースクリプト:--recordings-dir で大容量ディスクを指定
curl -fsSL https://cdn.yun-kan.com/yunkan-install.sh | bash -s -- --recordings-dir /mnt/recordings
# または手動で docker run する際に録画ボリュームをネストしてマウント
docker run -v $(pwd)/data:/app/data -v /mnt/recordings:/app/data/recordings ...保持ポリシーとディスク容量
SkyView は最初からこれを管理しています。スイッチを入れる必要はありません:録画に総容量の予算を与え、いっぱいになると最も古いものを新しいもので置き換えます(NVR と同じリングバッファ)。さらに、ディスク全体で計算するディスク保護が最後の砦として働き、満杯を防ぎます。
- 録画の総容量 —— SkyView の録画が使えるローカル容量の上限。いっぱいになると最も古いものから自動削除します。0 = 無制限。
- 最大ディスク使用率(%) —— ディスク全体がこの割合を超えると、最も古い録画から削除して戻します。共有ディスクが他のアプリで埋まる場合への備えです。
- N 日で削除(任意) —— 任意で、既定はオフ。日数を入れると「N 日を過ぎたら必ず削除」になります。プライバシー / コンプライアンス要件のための項目です。
| 解像度 | ビットレート | 1 系統・1 日あたりの目安 |
|---|---|---|
| 1080p H.264 | 2 Mbps | 約 21 GB |
| 1080p H.265 | 1 Mbps | 約 10 GB |
| 4K H.265 | 4 Mbps | 約 42 GB |
設定の仕方と、手動での片づけ方
ローカルの録画を非同期で 115 クラウドへアップロードし、いわば"クラウド NVR"のように機能します。インスタントアップロードに対応しているため、既存の録画は帯域を消費しません。
- 1
QR コードでログイン
Web 管理画面 → 115 → QR コードを表示し、115 のモバイル App でスキャンして認可します。SkyView はログイン情報を暗号化して data ディレクトリに保存します。
- 2
アップロード先フォルダを選択
115 内に空のフォルダを作成し(例:"SkyView 録画")、SkyView に戻ってこのフォルダをアップロード先として選択します
- 3
ストレージバックエンドを切り替え
設定 → ストレージ → 115 を選択 → 保存。切り替えはホットスワップで、プロセスの再起動は不要、次回のアップロードから有効になります
- 4
動作確認
Web Admin には現時点でアップロードキュー / 進捗パネルがありません。録画がアップロードされているか確認するには、次の 3 つの方法のいずれかを使ってください:① 設定 → 115 ページで VIP ステータスと残り容量が正常か確認する;② ログページ(サイドバー → ログ)で左側から
uploaderサービスを選択すると、各セグメントのアップロードの開始 / 完了 / 失敗の行をリアルタイムで確認できる;③ 115 の App またはウェブサイトを直接開いて目的のフォルダに入り、新しい録画が届いているか確認する。
115 のログインは期限切れになります
115 を利用していない場合は
ダウンロード / エクスポート
録画再生ページは「時間範囲を指定してエクスポート」に対応しています——開始・終了時刻を選択すると、バックエンドが再エンコードして 1 本の MP4 に切り出し、クライアントがダウンロードできるようにします。開始・終了時刻はフレーム単位の精度です(誤差 <40ms)。ハードウェアを自動選択:NVIDIA NVENC(実時間の 50〜200 倍、RTX なら 1 時間分が数十秒)→ Intel iGPU VAAPI(25〜50 倍、N100 なら 1 時間分が 1〜2 分)→ libx264 ソフトウェアエンコード(1.5〜3 倍、1 時間分が十数分)の順に試し、いずれかが失敗すると自動的に次の段階へフォールバックします。Web Admin、Android、iOS の三端末すべてに対応しています。
- 1
録画再生ページを開く
エクスポートしたいカメラと日付を選択します。タイムラインを目的の区間付近までドラッグし、中心の目盛りがその録画区間に来るようにします。
- 2
エクスポートボタンをタップ
Web Admin:再生コントロールバー右端の ⬇ アイコン;Android / iOS:再生コントロールバーの「速度」ボタン右側にある「エクスポート」。区間選択パネルがポップアップし、デフォルトでは現在の再生位置の ±30 秒が指定されます。
- 3
開始・終了時刻を調整 → 送信
パネル内で開始・終了時刻を変更すると、予想サイズがリアルタイムで計算されます(1080p H.264 で約 250 KB/秒)。1 回のエクスポートは最長 1 時間で、それを超えると拒否されます。「エクスポート開始」をクリックします。
- 4
進捗を確認
右下(Web)/ コントロールバー下部(Android/iOS)に進捗カードが表示されます。Web は SSE でリアルタイム更新、モバイルは 2 秒間隔のポーリングです。タスクがキューに入ると、通常は数秒から数十秒で完了します(セグメント数や、115 からクラウドセグメントを取得する必要があるかによって変わります)。
- 5
ダウンロード
進捗カードが「ダウンロード」ボタンに変わったらクリックします:Web はブラウザから直接ダウンロード;Android はシステムの DownloadManager で
Downloads/SkyView/に保存し、ステータスバーに通知が表示されます;iOS では ShareSheet が開き、「ファイル / 写真に保存」または WeChat への共有を選べます。
ハードウェアアクセラレーションの自動選択 NVENC > VAAPI > libx264
--gpus all が必要。RTX 30/40 シリーズなら 1 時間分の動画が約 30-60 秒
- VAAPI(Intel/AMD 内蔵 GPU):openvino/all-in-one イメージ + /dev/dri のパススルーが必要。N100 などで 1 時間分の動画が約 1-2 分
- libx264(CPU のみ):GPU がない場合のフォールバック。1 時間分の動画が約 20-40 分(CPU 性能による)
いずれかの段階が実行時に失敗した場合(ドライバの非互換、セッション上限超過など)、自動的に次の段階にフォールバックします。特定の方式を手動で強制するには recording.export.hwaccel = "nvenc" / "vaapi" / "none" を使用します。開始・終了時刻はフレーム単位の精度
qp=23 / VAAPI qp=23 / libx264 crf=23 —— ハードウェアが異なっても出力は視覚的にほぼ同一です(NVENC のファイルはやや大きくなる場合があります、<10%)。recording.export.{nvenc,vaapi}_qp を設定すると品質を個別に調整できます(0-51、値が小さいほど高品質)。115 クラウドストレージモードにも対応
エクスポートファイルは 24 時間保持
data/recordings/_exports/<job_id>.mp4 に配置され、デフォルトでは 24 時間後に cleanup によって自動削除されます(ディスクの圧迫を防ぐため)。この期間内であれば、どの端末からでも何度でも「ダウンロード」をクリックして同じファイルを取得できます。期限が切れた後に再度必要な場合は、改めてエクスポートを実行してください。UI を経由せず元のセグメントを直接取得したい場合
data/recordings/<camera_id>/<YYYY-MM-DD_HH-MM-SS>.mp4(ローカルアーカイブ後は data/recordings/_archive/<camera_id>/ 配下)にあり、各セグメントは標準的な MP4 です。JWT を付けて GET /api/recordings/<id>/download を呼び出せば、単一セグメントを取得することもできます。このページは役に立ちましたか?