# SysCamera

**コントロール機能**: システムのカメラを使用して静止画を撮影するためのもので、リアルタイムプレビューが可能。撮影後は画像を `data URL` および `File` オブジェクトの形式で返却します。  
**タイプ**: 通常コントロール  
**親クラスコントロール**: `bricks.SysVideoRecorder`

## 初期化パラメータ

- 明示的なカスタム初期化パラメータなし（親クラス `MediaRecorder` から継承）。  
- 実際の使用時には、インスタンス生成時に `widgetid` などの親クラスで使用される可能性があるオプションを渡す必要があります（ただし、本クラスでは直接使用しません）。

## 主なイベント

- **`shot`**  
  発生タイミング：ユーザーが録画ボタンをクリックして写真を撮影した後に発生。  
  コールバックデータ：
  ```js
  {
    url: string,   // 画像の data URL。<img> タグでの表示に利用可能
    file: File     // ファイルオブジェクト。アップロードや保存に利用可能
  }
  ```

---

# WidgetRecorder

**コントロール機能**: ページ内の指定された widget（例: `<video>` や `<audio>` 要素）のメディアストリームを録画・録音する機能。音声または動画の録画に対応しています。  
**タイプ**: 通常コントロール  
**親クラスコントロール**: `bricks.MediaRecorder`

## 初期化パラメータ

- `widgetid` *(String)*: 録画対象の widget の一意な識別子 ID。`bricks.getWidgetById()` を通じて対応する DOM 要素を取得するために使用されます。

## 主なイベント

- **`record_started`**  
  発生タイミング：録画開始時に発生。  
  コールバックデータ：なし。

- **`record_end`**  
  発生タイミング：正常に録画を停止した後に発生。  
  コールバックデータ：
  ```js
  {
    url: string,   // メディアファイルの object URL。再生に利用可能
    file: File     // 生成されたファイルオブジェクト（wav 音声または mp4 動画）
  }
  ```

---

# SysAudioRecorder

**コントロール機能**: システムのマイクを使用して音声を録音。WebM 形式の音声を自動的に WAV 形式に変換して出力。高品質な音声収集が必要なシーンに適しています。  
**タイプ**: 通常コントロール  
**親クラスコントロール**: `bricks.MediaRecorder`

## 初期化パラメータ

- 追加の初期化パラメータなし。すべての設定は内部ロジックによって決定されます。

## 主なイベント

- **`record_started`**  
  発生タイミング：マイクが有効になり、録音を開始したときに発生。  
  コールバックデータ：なし。

- **`record_end`**  
  発生タイミング：録音が正常に終了し、フォーマット変換が完了した後に発生。  
  コールバックデータ：
  ```js
  {
    url: string,   // 変換後の WAV ファイルの object URL
    file: File     // WAV 形式の File オブジェクト（アップロードや処理に便利）
  }
  ```

---

# SysVideoRecorder

**コントロール機能**: システムのカメラとマイクを使用して音声付き動画を録画。リアルタイムの映像プレビューが可能で、録画終了後に MP4 形式の動画ファイルを出力します。  
**タイプ**: 通常コントロール  
**親クラスコントロール**: `bricks.MediaRecorder`

## 初期化パラメータ

- 追加の初期化パラメータなし。デフォルトのメディアデバイス権限要求（音声・映像含む）を使用。

## 主なイベント

- **`record_started`**  
  発生タイミング：カメラ/マイクからのストリームを正常に取得し、録画を開始したときに発生。  
  コールバックデータ：なし。

- **`record_end`**  
  発生タイミング：録画を停止し、動画ファイルを生成した後に発生。  
  コールバックデータ：
  ```js
  {
    url: string,   // 動画ファイルの object URL
    file: File     // MP4 形式の File オブジェクト
  }
  ```