hisui 2025.3.3

Recording Composition Tool Hisui
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
# エンコード設定の指定方法

[レイアウト機能](./layout.md) で指定する JSON ファイルでは、
合成後の映像や音声をエンコードするコーデックやエンコードパラメーターを指定することができます。

エンコードコーデックやパラメーターによって、合成結果の品質やサイズ、
合成の要する時間が大きく変わる可能性があるため、
Hisui を最大限活用するためには、これらを適切に指定することが重要です。

実際に利用可能なコーデックは、Hisui のビルド方法や実行環境で変わりますが、
[`hisui list-codecs`](./command_list_codecs.md) コマンドで一覧を取得することができます。

なお [`hisui tune`](./command_tune.md) コマンドを利用することで、
適切なエンコードパラメーターをある程度自動で調整することができます。

## 音声エンコードコーデックの指定

合成後の音声のエンコードコーデックは、以下のように `audio_codec` フィールドで指定できます。

```json
{
  "audio_codec": "OPUS",
  "audio_sources": ["archive-*.json"]
}
```

`audio_codec` で指定可能な値は以下の通りです:

- `"OPUS"`: Opus音声コーデック(デフォルト)
- `"AAC"`: AAC音声コーデック

### 注意

`"AAC"` は、以下のいずれかの条件を満たしている場合にのみ指定可能です:

- macOS 用にビルドされた Hisui(Apple Audio Toolboxの AAC エンコーダーが使用されます)
- FDK-AAC を有効にしてビルドされた Hisui

公開されているビルド済みバイナリは FDK-AAC には対応していません。
FDK-AAC を利用する場合は、[ビルド方法](build.md) を参考にして、自前でのビルドを行ってください。

## 音声エンコードビットレートの指定

映像とは異なり、音声はエンコード時のパラメーターが少なく、
エンコードビットレートのみが指定可能となっています。

エンコードビットレートは、以下のように `audio_bitrate` フィールドで bps 単位で指定します。

```json
{
  "audio_codec": "OPUS",
  "audio_bitrate": 65536,
  "audio_sources": ["archive-*.json"]
}
```

`audio_bitrate` のデフォルト値は 65536 です。

## 映像エンコードコーデックの指定

合成後の映像のエンコードコーデックは、レイアウト JSON の `video_codec` フィールドで指定できます。

```json
{
  "video_codec": "VP8",
  "video_layout": {
    "main": {
      "video_sources": ["archive-*.json"]
    }
  }
}
```

`video_codec` で指定可能な値は以下の通りです:

- `"VP8"`: VP8 映像コーデック
- `"VP9"`: VP9 映像コーデック(デフォルト)
- `"H264"`: H.264 映像コーデック
- `"H265"`: H.265 映像コーデック
- `"AV1"`: AV1 映像コーデック

### 注意

`"H264"` は、以下のいずれかの条件を満たしている場合にのみ指定可能です:

- **macOS 用にビルドされた Hisui**: Apple Video Toolbox の H.264 エンコーダーが使用されます
- **OpenH264 オプション指定時**: [`hisui compose`]command_compose.md などのコマンドで `--openh264` オプションや `HISUI_OPENH264_PATH` 環境変数が指定された場合
- **nvcodec 対応時**: nvcodec に対応してビルドされた Hisui では NVIDIA Video Codec SDK の H.264 エンコーダーが使用されます

`"H265"` は、以下のいずれかの条件を満たしている場合にのみ指定可能です:

- **macOS 用にビルドされた Hisui**: Apple Video Toolbox の H.265 エンコーダーが使用されます
- **nvcodec 対応時**: nvcodec に対応してビルドされた Hisui では NVIDIA Video Codec SDK の H.265 エンコーダーが使用されます

`"AV1"` は、以下のいずれかの条件を満たしている場合にのみ指定可能です:

- **SVT-AV1 対応時**: SVT-AV1 に対応してビルドされた Hisui では SVT-AV1 エンコーダーが使用されます
- **nvcodec 対応時**: nvcodec に対応してビルドされた Hisui では NVIDIA Video Codec SDK の AV1 エンコーダーが使用されます

なお自前で Hisui のビルドを行う場合には、nvcodec はデフォルトでは無効になっています。
有効にする方法は [ビルド方法](build.md) をご参照ください。
ubuntu-24.04_x86_64 向けのビルド済みバイナリでは nvcodec が有効になっています(CUDA がない環境では実行時に無効になります)。

## 映像エンコードビットレートの指定

映像エンコードビットレートは、レイアウト JSON の `video_bitrate` フィールドで bps 単位で指定できます。

```json
{
  "video_codec": "VP8",
  "video_bitrate": 1048576,
  "video_layout": {
    "main": {
      "video_sources": ["archive-*.json"]
    }
  }
}
```

`video_bitrate` のデフォルト値は `映像ソースの数 * 200 * 1024` です。

### 注意

[レガシー版の Hisui](./migrate_hisui_legacy.md) との互換性維持のため、`bitrate` フィールド(kbps単位)も利用可能ですが、両方が指定された場合には `video_bitrate` が優先されます。

## 映像エンコーダー固有のパラメーターセットの指定

Hisui は映像のエンコーダーとして、以下をサポートしています:

- **libvpx**: VP8 / VP9 用のエンコーダー
- **OpenH264**: H.264 用のエンコーダー
- **SVT-AV1**: AV1 用のエンコーダー
- **Apple Video Toolbox**: macOS で利用可能な H.264 / H.265 用のエンコーダー
- **NVIDIA Video Codec SDK**: CUDA対応GPU で利用可能な H.264 / H.265 / AV1 用のハードウェアエンコーダー

映像エンコーダーの種類とエンコードコーデックの組み合わせによって、指定可能なパラメーターセットは変わります。

例えば `libvpx` エンコーダーで `VP8` コーデックでエンコードを行う場合のパラメーターセットは、
以下のように、`libvpx_vp8_encode_params` をキーとした JSON オブジェクトを使って指定します:

```json
{
  "video_codec": "VP8",
  "libvpx_vp8_encode_params": {
    "cpu_used": 4,
    "min_quantizer": 4,
    "max_quantizer": 56
  }
}
```

エンコーダー固有パラメーターセット用のキーの一覧は以下の通りです:

- `libvpx_vp8_encode_params`: libvpx で VP8 エンコードを行う際のパラメーターセット
- `libvpx_vp9_encode_params`: libvpx で VP9 エンコードを行う際のパラメーターセット
- `openh264_encode_params`: OpenH264 で H.264 エンコードを行う際のパラメーターセット
- `svt_av1_encode_params`: SVT-AV1 で AV1 エンコードを行う際のパラメーターセット
- `video_toolbox_h264_encode_params`: Apple Video Toolbox で H.264 エンコードを行う際のパラメーターセット
- `video_toolbox_h265_encode_params`: Apple Video Toolbox で H.265 エンコードを行う際のパラメーターセット
- `nvcodec_h264_encode_params`: NVIDIA Video Codec SDK で H.264 エンコードを行う際のパラメーターセット
- `nvcodec_h265_encode_params`: NVIDIA Video Codec SDK で H.265 エンコードを行う際のパラメーターセット
- `nvcodec_av1_encode_params`: NVIDIA Video Codec SDK で AV1 エンコードを行う際のパラメーターセット

以降では、それぞれの詳細を説明します。

なお、デフォルトで使用されるエンコードパラメーターは [layout-examples/compose-default.jsonc](../layout-examples/compose-default.jsonc) にも記載されています。

### `libvpx_vp8_encode_params` で指定可能なパラメーターセット

`libvpx` で VP8 エンコードを行う際に指定可能なパラメーターは以下の通りです。

なお、本ドキュメントでの各パラメーターについての説明などは参考程度のものとなっております。
正確な情報については、本家のドキュメントやソースコードを参照してください。

### 基本的なエンコーダーパラメーター

- `min_quantizer` (整数値): 最小量子化パラメーター値
  - デフォルト値: 26
  - 指定可能な範囲: 0 〜 63

- `max_quantizer` (整数値): 最大量子化パラメーター値
  - デフォルト値: 40
  - 指定可能な範囲: 0 〜 63

- `cq_level` (整数値): 固定品質エンコード時の品質レベル
  - デフォルト値: 5
  - 指定可能な範囲: 0 〜 63

- `cpu_used` (整数値): エンコード速度と品質のバランス調整
  - デフォルト値: 1
  - 指定可能な範囲: 0 〜 16
  - 値が大きいほど高速だが品質が低下

### エンコード制御パラメーター

- `deadline` (文字列): エンコード期限設定
  - デフォルト値: `"realtime"`
  - 指定可能な値: `"best"`, `"good"`, `"realtime"`

- `rate_control` (文字列): レート制御モード
  - デフォルト値: `"cbr"`
  - 指定可能な値: `"vbr"`, `"cbr"`, `"cq"`

- `lag_in_frames` (整数値): 先読みフレーム数
  - デフォルト値: 6
  - 指定可能な範囲: 1 〜 25

- `threads` (整数値): エンコードに使用するスレッド数
  - デフォルト値: 1
  - 指定可能な範囲: 1 〜 システムに依存

- `error_resilient` (真偽値): エラー耐性モードの有効化
  - デフォルト値: `false`

- `keyframe_interval` (整数値): キーフレーム間隔
  - デフォルト値: 300
  - 指定可能な範囲: 1 以上の値

### VP8 固有のパラメーター

- `noise_sensitivity` (整数値): ノイズ感度設定
  - デフォルト値: 0
  - 指定可能な範囲: 0 〜 6

- `static_threshold` (整数値): 静的領域検出閾値
  - デフォルト値: 957
  - 指定可能な範囲: 0 以上の値

- `token_partitions` (整数値): トークン分割数
  - デフォルト値: 0
  - 指定可能な範囲: 0 〜 3

- `max_intra_bitrate_pct` (整数値): イントラフレームの最大ビットレート(%)
  - デフォルト値: 6668
  - 指定可能な範囲: 0 以上の値

- `arnr_config` (オブジェクト): Altref Noise Reduction 設定
  - `max_frames` (整数値): 最大フレーム数
    - デフォルト値: 1(必須項目)
    - 指定可能な範囲: 0 以上の値
  - `strength` (整数値): フィルター強度
    - デフォルト値: 4(必須項目)
    - 指定可能な範囲: 0 以上の値
  - `filter_type` (整数値): フィルタータイプ
    - デフォルト値: 2(必須項目)
    - 指定可能な値: 正の整数値

### `libvpx_vp9_encode_params` で指定可能なパラメーターセット

`libvpx_vp9_encode_params` で指定可能なパラメーターセットは以下の通りです。

なお、本ドキュメントでの各パラメーターについての説明などは参考程度のものとなっております。
正確な情報については、本家のドキュメントやソースコードを参照してください。

## 基本的なエンコーダーパラメーター

- `min_quantizer` (整数値): 最小量子化パラメーター値
  - デフォルト値: 15
  - 指定可能な範囲: 0 〜 63

- `max_quantizer` (整数値): 最大量子化パラメーター値
  - デフォルト値: 43
  - 指定可能な範囲: 0 〜 63

- `cq_level` (整数値): 固定品質エンコード時の品質レベル
  - デフォルト値: 33
  - 指定可能な範囲: 0 〜 63

- `cpu_used` (整数値): エンコード速度と品質のバランス調整
  - デフォルト値: 9
  - 指定可能な範囲: 0 〜 9
  - 値が大きいほど高速だが品質が低下

## エンコード制御パラメーター

- `deadline` (文字列): エンコード期限設定
  - デフォルト値: `"realtime"`
  - 指定可能な値: `"best"`, `"good"`, `"realtime"`

- `rate_control` (文字列): レート制御モード
  - デフォルト値: `"cq"`
  - 指定可能な値: `"vbr"`, `"cbr"`, `"cq"`

- `lag_in_frames` (整数値): 先読みフレーム数
  - デフォルト値: 16
  - 指定可能な範囲: 1 〜 25

- `threads` (整数値): エンコードに使用するスレッド数
  - デフォルト値: 1
  - 指定可能な範囲: 1 〜 システムに依存

- `error_resilient` (真偽値): エラー耐性モードの有効化
  - デフォルト値: `false`

- `keyframe_interval` (整数値): キーフレーム間隔
  - デフォルト値: 300
  - 指定可能な範囲: 1 以上の値

## VP9 固有のパラメーター

- `aq_mode` (整数値): 適応量子化モード
  - デフォルト値: 3
  - 指定可能な範囲: 0 〜 3

- `noise_sensitivity` (整数値): ノイズ感度設定
  - デフォルト値: 2
  - 指定可能な範囲: 0 〜 6

- `tile_columns` (整数値): タイル分割の列数(log2値)
  - デフォルト値: 5
  - 指定可能な範囲: 0 〜 6

- `tile_rows` (整数値): タイル分割の行数(log2値)
  - デフォルト値: 1
  - 指定可能な範囲: 0 〜 2

- `row_mt` (真偽値): 行単位マルチスレッドの有効化
  - デフォルト値: `false`

- `frame_parallel_decoding` (真偽値): フレーム並列デコーディングの有効化
  - デフォルト値: `false`

- `tune_content` (文字列): コンテンツタイプ最適化設定
  - デフォルト値: `"default"`
  - 指定可能な値: `"default"`, `"screen"`

### `openh264_encode_params` で指定可能なパラメーターセット

`openh264` で H.264 エンコードを行う際に指定可能なパラメーターは以下の通りです。

なお、本ドキュメントでの各パラメーターについての説明などは参考程度のものとなっております。
正確な情報については、本家のドキュメントやソースコードを参照してください。

#### 基本的なエンコーダーパラメーター

- `thread_count` (整数値): エンコードに使用するスレッド数
  - デフォルト値: 1
  - 指定可能な範囲: 1 〜 16

- `intra_period` (整数値): Intraフレーム間隔
  - デフォルト値: 300
  - 指定可能な範囲: 1 〜 1000

#### 品質制御パラメーター

- `max_qp` (整数値): 最大量子化パラメーター値
  - デフォルト値: 39
  - 指定可能な範囲: 1 〜 51

- `min_qp` (整数値): 最小量子化パラメーター値
  - デフォルト値: 19
  - 指定可能な範囲: 1 〜 51

- `complexity_mode` (文字列): エンコード複雑度モード
  - デフォルト値: `"low"`
  - 指定可能な値: `"low"`, `"medium"`, `"high"`

#### エンコード制御パラメーター

- `entropy_coding` (真偽値): エントロピー符号化の有効化(CABAC/CAVLC選択)
  - デフォルト値: `false`
  - `false`: CAVLC(高速)、`true`: CABAC(高効率)

- `ref_frame_count` (整数値): 参照フレーム数
  - デフォルト値: なし(省略可能)
  - 指定可能な範囲: 1 〜 16

- `spatial_layers` (整数値): 空間レイヤー数
  - デフォルト値: なし(省略可能)
  - 指定可能な範囲: 1 〜 4

- `temporal_layers` (整数値): 時間レイヤー数
  - デフォルト値: なし(省略可能)
  - 指定可能な範囲: 1 〜 4

#### レート制御パラメーター

- `rate_control_mode` (文字列): レート制御モード
  - デフォルト値: `"timestamp"`
  - 指定可能な値:
    - `"off"`: レート制御無効(最高速)
    - `"quality"`: 品質優先モード
    - `"bitrate"`: ビットレート優先モード
    - `"timestamp"`: タイムスタンプ基準モード

#### 前処理機能パラメーター

- `denoise` (真偽値): ノイズ除去の有効化
  - デフォルト値: `false`

- `background_detection` (真偽値): 背景検出の有効化
  - デフォルト値: `true`

- `adaptive_quantization` (真偽値): 適応量子化の有効化
  - デフォルト値: `false`

- `scene_change_detection` (真偽値): シーンチェンジ検出の有効化
  - デフォルト値: `false`

- `deblocking_filter` (真偽値): デブロッキングフィルターの有効化
  - デフォルト値: `false`

- `long_term_reference` (真偽値): 長期参照フレームの有効化
  - デフォルト値: `false`

#### スライスモード設定

- `slice_mode` (オブジェクト): スライス分割方法の設定
  - `type` (文字列): スライスモードのタイプ(必須)
    - デフォルト値: `"single"`
    - 指定可能な値:
      - `"single"`: 単一スライス(最高速)
      - `"fixed_count"`: 固定スライス数
      - `"size_constrained"`: サイズ制限スライス
  - `count` (整数値): `"fixed_count"` モード時のスライス数
    - 指定可能な範囲: 1 〜 16
  - `size` (整数値): `"size_constrained"` モード時の最大サイズ(バイト単位)
    - 指定可能な範囲: 1 〜 1000000

## `svt_av1_encode_params` で指定可能なパラメーターセット

`SVT-AV1` で AV1 エンコードを行う際に指定可能なパラメーターは以下の通りです。

なお、本ドキュメントでの各パラメーターについての説明などは参考程度のものとなっております。
正確な情報については、本家のドキュメントやソースコードを参照してください。

### 品質・速度制御パラメーター

- `enc_mode` (整数値): エンコード速度と品質のバランス調整
  - デフォルト値: 13
  - 指定可能な範囲: 0 〜 13
  - 値が小さいほど高品質だが低速、値が大きいほど高速だが品質が低下

- `qp` (整数値): 量子化パラメーター値
  - デフォルト値: 46
  - 指定可能な範囲: 0 〜 63

- `min_qp_allowed` (整数値): 最小量子化パラメーター値
  - デフォルト値: 12
  - 指定可能な範囲: 1 〜 20

- `max_qp_allowed` (整数値): 最大量子化パラメーター値
  - デフォルト値: 50
  - 指定可能な範囲: 35 〜 63

### レート制御パラメーター

- `rate_control_mode` (文字列): レート制御モード
  - デフォルト値: `"vbr"`
  - 指定可能な値: `"vbr"`, `"cbr"`

- `over_shoot_pct` (整数値): ビットレート超過許可率(%)
  - デフォルト値: 51
  - 指定可能な範囲: 0 〜 100

- `under_shoot_pct` (整数値): ビットレート不足許可率(%)
  - デフォルト値: 75
  - 指定可能な範囲: 0 〜 100

### GOP・フレーム構造パラメーター

- `intra_period_length` (整数値): イントラフレーム間隔
  - デフォルト値: 300
  - 指定可能な範囲: -1 〜 1000
  - -1 を指定するとイントラフレームが最初のフレームのみになります

- `hierarchical_levels` (整数値): 階層レベル数
  - デフォルト値: 3
  - 指定可能な範囲: 2 〜 5

- `pred_structure` (整数値): 予測構造
  - デフォルト値: なし(省略可能)
  - 指定可能な値: 1, 2

- `scene_change_detection` (真偽値): シーンチェンジ検出の有効化
  - デフォルト値: `false`

- `look_ahead_distance` (整数値): 先読みフレーム数
  - デフォルト値: 13
  - 指定可能な範囲: 0 〜 120

### 並列処理パラメーター

- `pin_threads` (整数値): スレッドピニング設定
  - デフォルト値: 1
  - 指定可能な範囲: 0 〜 128

- `tile_columns` (整数値): タイル分割の列数
  - デフォルト値: なし(省略可能)
  - 指定可能な範囲: 1 〜 6

- `tile_rows` (整数値): タイル分割の行数
  - デフォルト値: なし(省略可能)
  - 指定可能な範囲: 1 〜 6

- `target_socket` (整数値): ターゲットソケット設定
  - デフォルト値: なし(省略可能)
  - 指定可能な範囲: -1 〜 1

### フィルタリングパラメーター

- `enable_dlf_flag` (真偽値): デブロッキングループフィルターの有効化
  - デフォルト値: `false`

- `cdef_level` (整数値): CDEF(Constrained Directional Enhancement Filter)レベル
  - デフォルト値: -1
  - 指定可能な範囲: -1 〜 4

- `enable_restoration_filtering` (真偽値): 復元フィルタリングの有効化
  - デフォルト値: `false`

### 高度な設定パラメーター

- `enable_tf` (真偽値): Temporal Filtering の有効化
  - デフォルト値: `true`

- `enable_overlays` (真偽値): オーバーレイの有効化
  - デフォルト値: `false`

- `film_grain_denoise_strength` (整数値): フィルムグレインノイズ除去強度
  - デフォルト値: 0
  - 指定可能な範囲: 0 〜 50

- `enable_tpl_la` (真偽値): TPL Look Ahead の有効化
  - デフォルト値: `false`

- `force_key_frames` (真偽値): キーフレーム強制挿入の有効化
  - デフォルト値: `false`

- `stat_report` (真偽値): 統計レポート出力の有効化
  - デフォルト値: `false`

- `recon_enabled` (真偽値): 再構成フレーム出力の有効化
  - デフォルト値: なし(省略可能)

### エンコーダー固有設定パラメーター

- `tier` (整数値): エンコーダーティア設定
  - デフォルト値: 1
  - 指定可能な範囲: 0 〜 1

- `fast_decode` (真偽値): 高速デコードモードの有効化
  - デフォルト値: `false`

## `video_toolbox_h264_encode_params` で指定可能なパラメーターセット

`Apple Video Toolbox` で H.264 エンコードを行う際に指定可能なパラメーターは以下の通りです。

なお、本ドキュメントでの各パラメーターについての説明などは参考程度のものとなっております。
正確な情報については、本家のドキュメントを参照してください。

### 基本的なエンコーダーパラメーター

- `max_key_frame_interval` (整数値): キーフレーム間隔の最大値(フレーム数)
  - デフォルト値: 300
  - 指定可能な範囲: 1 〜 600

### 速度と品質のバランス設定

- `prioritize_speed_over_quality` (真偽値): 品質よりも速度を優先するモード
  - デフォルト値: `true`

- `real_time` (真偽値): リアルタイムエンコードモード
  - デフォルト値: `false`

- `maximize_power_efficiency` (真偽値): 電力効率最大化モード
  - デフォルト値: `false`

### フレーム構造設定

- `allow_frame_reordering` (真偽値): フレーム再順序付けの許可
  - デフォルト値: `false`

- `allow_temporal_compression` (真偽値): 時間圧縮の許可
  - デフォルト値: `true`

### プロファイル・レベル設定

- `profile_level` (文字列): H.264プロファイル・レベル
  - デフォルト値: `"baseline"`
  - 指定可能な値: `"baseline"`, `"main"`, `"high"`

- `h264_entropy_mode` (文字列): H.264エントロピー符号化モード
  - デフォルト値: `"cavlc"`
  - 指定可能な値: `"cavlc"`, `"cabac"`

### 並列処理・遅延制御設定

- `max_frame_delay_count` (整数値): 最大フレーム遅延数
  - デフォルト値: 2
  - 指定可能な範囲: 1 〜 16

- `use_parallelization` (真偽値): 並列処理の使用
  - デフォルト値: `false`

## `video_toolbox_h265_encode_params` で指定可能なパラメーターセット

`Apple Video Toolbox` で H.265 エンコードを行う際に指定可能なパラメーターは以下の通りです。

H.265 エンコーダーは H.264 と多くの共通点がありますが、いくつかの相違点があります。

なお、本ドキュメントでの各パラメーターについての説明などは参考程度のものとなっております。
正確な情報については、本家のドキュメントを参照してください。

### 基本的なエンコーダーパラメーター

- `max_key_frame_interval` (整数値): キーフレーム間隔の最大値(フレーム数)
  - デフォルト値: 300
  - 指定可能な範囲: 1 〜 600

### 速度と品質のバランス設定

- `real_time` (真偽値): リアルタイムエンコードモード
  - デフォルト値: `false`

- `maximize_power_efficiency` (真偽値): 電力効率最大化モード
  - デフォルト値: `false`

### フレーム構造設定

- `allow_frame_reordering` (真偽値): フレーム再順序付   けの許可
  - デフォルト値: `false`

- `allow_temporal_compression` (真偽値): 時間圧縮の許可
  - デフォルト値: `true`

- `allow_open_gop` (真偽値): Open GOP の許可
  - デフォルト値: `true`
  - H.265 では H.264 と異なり、この設定が利用可能です

### プロファイル・レベル設定

- `profile_level` (文字列): H.265プロファイル・レベル
  - デフォルト値: `"main"`
  - 指定可能な値: `"main"`, `"main10"`

### 並列処理・遅延制御設定

- `max_frame_delay_count` (整数値): 最大フレーム遅延数
  - デフォルト値: 15
  - 指定可能な範囲: 1 〜 16

- `use_parallelization` (真偽値): 並列処理の使用
  - デフォルト値: `true`

## NVIDIA Video Codec SDK エンコーダーパラメーター

NVIDIA Video Codec SDK(nvcodec)は、CUDA対応GPUを利用したハードウェア加速エンコーダーです。
H.264、H.265、AV1の各コーデックに対応しており、高い処理性能を提供します。

### 利用条件

nvcodecエンコーダーを利用するには、以下の条件を満たしている必要があります:

- CUDA対応のNVIDIA GPU
- 適切なNVIDIA GPUドライバー
- nvcodecに対応してビルドされたHisui
  - ubuntu-24.04_x86_64 向けのビルド済みバイナリは nvcodec が有効になっています(CUDA がない環境では実行時に無効になります)

### 共通パラメーター

nvcodecエンコーダーでは、H.264、H.265、AV1の全てのコーデックで共通して利用できるパラメーターがあります。

#### エンコード品質・速度制御パラメーター

- `preset` (文字列): エンコードプリセット
  - デフォルト値: `"p4"`
  - 指定可能な値: `"p1"`, `"p2"`, `"p3"`, `"p4"`, `"p5"`, `"p6"`, `"p7"`
  - `"p1"`: 最高品質(最低速)、`"p7"`: 最高速(最低品質)

- `tuning_info` (文字列): チューニング情報
  - デフォルト値: `"low_latency"`
  - 指定可能な値:
    - `"high_quality"`: 高品質優先
    - `"low_latency"`: 低遅延優先
    - `"ultra_low_latency"`: 超低遅延優先
    - `"lossless"`: 無劣化圧縮

#### レート制御パラメーター

- `rate_control_mode` (文字列): レート制御モード
  - デフォルト値: `"vbr"`
  - 指定可能な値:
    - `"const_qp"`: 固定量子化パラメーター
    - `"vbr"`: 可変ビットレート
    - `"cbr"`: 固定ビットレート

#### GOP・フレーム構造パラメーター

- `gop_length` (整数値): GOPの長さ(フレーム数)
  - デフォルト値: `300`
  - 指定可能な範囲: 整数値

- `idr_period` (整数値): IDR フレームの周期(フレーム数)
  - デフォルト値: なし(省略可能)
  - 指定可能な範囲: 整数値
  - 省略時は gop_length と同じ値が使用されます

#### デバイス制御パラメーター

- `device_id` (整数値): 使用するCUDAデバイスのID
  - デフォルト値: `0`
  - 指定可能な範囲: 0以上の値(システムの利用可能GPU数による)

### `nvcodec_h264_encode_params` で指定可能なパラメーターセット

NVIDIA Video Codec SDK で H.264 エンコードを行う際に指定可能なパラメーターは、上記の共通パラメーターに加えて、以下のH.264固有のパラメーターがあります。

#### H.264固有パラメーター

- `profile` (文字列): H.264プロファイル
  - デフォルト値: `"main"`
  - 指定可能な値:
    - `"baseline"`: Baseline Profile
    - `"main"`: Main Profile
    - `"high"`: High Profile
    - `"high_10"`: High 10 Profile
    - `"high_422"`: High 4:2:2 Profile
    - `"high_444"`: High 4:4:4 Profile

### `nvcodec_h265_encode_params` で指定可能なパラメーターセット

NVIDIA Video Codec SDK で H.265 エンコードを行う際に指定可能なパラメーターは、上記の共通パラメーターに加えて、以下のH.265固有のパラメーターがあります。

#### H.265固有パラメーター

- `profile` (文字列): H.265プロファイル
  - デフォルト値: `"main"`
  - 指定可能な値:
    - `"main"`: Main Profile
    - `"main10"`: Main 10 Profile
    - `"frext"`: Format Range Extensions Profile

### `nvcodec_av1_encode_params` で指定可能なパラメーターセット

NVIDIA Video Codec SDK で AV1 エンコードを行う際に指定可能なパラメーターは、上記の共通パラメーターに加えて、以下のAV1固有のパラメーターがあります。

#### AV1固有パラメーター

- `profile` (文字列): AV1プロファイル
  - デフォルト値: `"main"`
  - 指定可能な値: `"main"`(現在はMainプロファイルのみサポート)