[Blender]動画をレンダーする時に出てくるファイルフォーマット、コンテナ、動画コーデックって何？①

この記事は [tatmiusのおひとり Advent Calendar 2023](https://adventar.org/calendars/9690)の2日目の記事です。

# この記事は何？
タイトルの通り、BlenderのOutputの設定にあるFile format、Container、Encodingってそれぞれ何なんだろうと思ったので、調べてまとめてみた記事です。なかなか調べる事が多く、放置していたネタなのですが、アドベントカレンダーにかこつけて、シリーズ化して記事にします(アドカレでシリーズものってそもそもアリ？)

![レンダーの設定メニュー。File Format, Container, Video Codecというのがある。](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/327331/57feddfc-3fb2-1ca7-55b1-18983d930f91.png "レンダーの設定メニュー。File Format, Container, Video Codecというのがある。
")
記事としてはBlender色は弱いです。単に調べるきっかけがそうだったというだけであって....。

# ファイルフォーマットとは
コトバンクに収録されているニッポニカでは以下のように述べられています。
>コンピュータなどで利用するファイルの保存形式。ファイル形式ともいう。ファイルは、その内容によって記述方法が違うため、属性にあわせたファイルの保存形式が用いられる。その体裁や型をフォーマットという。[コトバンク-ファイルフォーマット](https://kotobank.jp/word/ファイルフォーマット-12045)

また、マイクロソフト社の[Learn about file formats](https://support.microsoft.com/en-us/office/learn-about-file-formats-56dc3b55-7681-402e-a727-c59fa0884b30)では以下のように述べられています。
> A file format specifies how data is stored for a particular application.
> ファイルフォーマットは、特定のアプリケーションのためにデータがどのように記憶されるかを定めます。(筆者訳)

英語版wikipdiaでは以下のように述べられています。
>A file format is a standard way that information is encoded for storage in a computer file. It specifies how bits are used to encode information in a digital storage medium. 
> ファイルフォーマットはコンピュータのファイルに情報を保管するため、どのように情報をエンコードするかの標準化された方法です。デジタル記憶装置で情報をエンコードするのにbitがどのように使用されるかを定めます(筆者訳)

これらざっくりとまとめると、「データをどのように保存するか」を決定しているのがファイルフォーマットであるかと思います。

また、英語のFormat自体に a pattern, plan, or arrangement といった意味があり、bitのpatternやarrangementと考えると、自然に聞こえます。

https://dictionary.cambridge.org/dictionary/english/format

## Blenderで選択可能な出力フォーマット(画像)
Blenderで選択可能な画像フォーマットを簡単にまとめました。

| フォーマット | 圧縮タイプ| 透過   | 特徴           |
|-------------|-------------|-------------|-------------|
| BMP 　　　　 | 無    　  | :x:  | Windows環境で広く使用される基本的なフォーマット |
| Iris  | RLE圧縮   |  :o: | 古いフォーマットで、主にSGI系のシステムで使用   |
| PNG  | 可逆圧縮 | :o: | ウェブで広く使用される汎用フォーマット |
| JPEG | 非可逆圧縮  | :x:  | 写真の保存に広く使用されるが、圧縮による画質の劣化がある |
| JPEG 2000 | 可逆圧縮と非可逆圧縮の両方     |  :o: | JPEGよりも高度な圧縮アルゴリズムを使用 |
| Targa  | RLE圧縮  |  :o: | 今は無きTruevision社の規格。アニメ業界などで使われているらしい。|
| Targa Raw | 無圧縮   |  :o:  | Targaと似ているが、圧縮されていない |
| Cineon  | 無圧縮   |:x: | kodakが開発した映画産業用フォーマット |
| DPX| 無圧縮   | :x: | [色情報や空間の特殊な保存方法が映画業界で人気](https://www.adobe.com/jp/creativecloud/file-types/image/raster/dpx-file.html)らしい |
| OpenEXR| 様々な圧縮オプション  |  :o:   | [the professional-grade image storage format of the motion picture industry](https://openexr.com/en/latest/)だそうです。 Openなのが良いですね。 |
| OpenEXR Multilayer   | 同上  | :o:  | 複数のレイヤーを一つのファイル内で管理可能     |
| Radiance HDR  | 無圧縮   | :x:  | HDRイメージングに使用                         |
| TIFF   | 可逆圧縮と非可逆圧縮  | :o: | 高品質な画像保存に適しており、プリント業界で広く使用 |
| WebP |可逆圧縮と非可逆圧縮|:o:  | Googleによって開発された、ウェブ用の最新フォーマット |

## Blenderで選択可能なフォーマット(動画)
Blenderで選択可能な動画のフォーマットをまとめました。
| フォーマット  | 圧縮タイプ      | 品質・圧縮レベル | 透過性   | 特徴 |
|-------------|----------------|-----------------|-------------------|------|
| AVI JPEG    | 非可逆圧縮        | 可変、ユーザー設定可能 | :x: | JPEG画像をフレームとして使用するAVIフォーマット。一般的なビデオ編集や共有に適しているが、品質は圧縮レベルに依存する。 |
| AVI Raw     | 無圧縮         | 最高品質        | :x: | 画像データを圧縮せずにそのまま保存する。高品質だがファイルサイズが大きくなる。|
| FFmpeg Video | 様々な圧縮オプション | 可変、多数のコーデックと設定 | コーデックに依存 | FFmpegライブラリを使用。多様なビデオコーデックとフォーマットをサポートし、様々なカスタマイズが可能。 |

## まとめ
使用用途に応じて、最適なファイルフォーマットを選びたい所ですが、趣味の範疇ならあんまり気にすることでもなさそうな気がしました。透過が可能かどうかとかは使う知識かもしれないですね。

次回の記事ではコンテナについて調べます。