# Docker を利用した Hisui の実行

Hisui は Docker イメージとして提供されており、環境構築なしですぐに利用することができます。

Docker イメージは GitHub Container Registry (ghcr.io) で公開されており、amd64 と arm64 の両アーキテクチャに対応しています。

## イメージの取得

```bash
# 最新の安定版を取得
docker pull ghcr.io/shiguredo/hisui:latest

# 特定のバージョンを取得
docker pull ghcr.io/shiguredo/hisui:2025.1.0

# Canary 版を取得（最新機能を試したい場合）
docker pull ghcr.io/shiguredo/hisui:2025.1.0-canary.8
```

## 使用方法

Docker で Hisui を実行する際は、録画ファイルへのアクセスのためにボリュームマウントが必要です。

```bash
docker run --rm -it -v <ホストのディレクトリ>:<コンテナ内のパス> ghcr.io/shiguredo/hisui:latest <コマンド> <引数>
```

## 実行例

### バージョン確認

```console
$ docker run --rm ghcr.io/shiguredo/hisui:latest --version
hisui 2025.1.0
```

### 利用可能なコーデック一覧の表示

```console
$ docker run --rm ghcr.io/shiguredo/hisui:latest list-codecs
Audio Decoders:
  OPUS
  AAC
  ...

Video Decoders:
  VP8
  VP9
  H264
  ...
```

### デフォルトレイアウトでの録画ファイル合成

```bash
# 録画ディレクトリをマウントして合成を実行
docker run --rm -it \
  -v $(pwd)/recordings:/recordings \
  ghcr.io/shiguredo/hisui:latest \
  compose /recordings/RECORDING_ID/

# 出力ファイルの確認
ls recordings/RECORDING_ID/output.mp4
```

### レイアウトファイルを指定しての合成

```bash
# レイアウトファイルと録画ディレクトリをマウント
docker run --rm -it \
  -v $(pwd)/recordings:/recordings \
  -v $(pwd)/my-layout.json:/layout.json \
  ghcr.io/shiguredo/hisui:latest \
  compose -l /layout.json /recordings/RECORDING_ID/
```

### 出力ファイル名を指定しての合成

```bash
docker run --rm -it \
  -v $(pwd)/recordings:/recordings \
  ghcr.io/shiguredo/hisui:latest \
  compose -o /recordings/RECORDING_ID/composed.mp4 /recordings/RECORDING_ID/
```

### 統計情報を出力しての合成

```bash
docker run --rm -it \
  -v $(pwd)/recordings:/recordings \
  ghcr.io/shiguredo/hisui:latest \
  compose -s /recordings/RECORDING_ID/stats.json /recordings/RECORDING_ID/

# 統計情報の確認
cat recordings/RECORDING_ID/stats.json
```

### 録画ファイルの詳細情報を取得

```bash
docker run --rm \
  -v $(pwd)/recordings:/recordings \
  ghcr.io/shiguredo/hisui:latest \
  inspect /recordings/RECORDING_ID/archive-CONNECTION_ID.mp4
```

## 注意事項

### マルチアーキテクチャ対応

Docker イメージは amd64（Intel/AMD）と arm64（Apple Silicon など）の両方に対応しています。
Docker が自動的にホストのアーキテクチャに適したイメージを選択するため、特別な指定は不要です。

### タグ戦略

- `latest`: 最新の安定版リリース
- `<version>`: 特定のバージョン（例: `2025.1.0`）
- `<version>-canary.<number>`: Canary リリース（開発版）

Canary リリースは最新機能を含みますが、安定性は保証されません。
本番環境では `latest` または特定のバージョンタグの使用を推奨します。

### 未対応コマンド

この Docker イメージには Hisui 本体のバイナリしか含まれていません。
そのため、外部パッケージのインストールが別途必要となる以下のコマンドには未対応となります。
- [`hisui tune`](./command_tune.md) コマンド
- [`hisui vmaf`](./command_vmaf.md) コマンド
