アプリ内に動画を入れたいけど、100MB以内に収めたい。そんなとき、エンコード方法によってどれくらい容量が変わるのか検証してみました。
目次
検証条件
- 解像度:1280×720px
- 検証する尺:30秒、60秒、90秒
- 目標:アプリ容量100MB以内に収める
非圧縮(AVI)の動画サイズ
まずはオリジナルの非圧縮動画のサイズを確認します。
| 尺 | 30秒 | 60秒 | 90秒 |
|---|---|---|---|
| 容量 | 2.32GB | 4.63GB | 6.96GB |
当然ですが、このままではアプリに入れられません。
After Effectsでエンコードした場合
AEの標準機能でMP4(H.264)にエンコードしてみました。
品質別の比較(30秒の動画)
| 品質 | 0 | 50 | 100 |
|---|---|---|---|
| 容量 | 24.4MB | 87.5MB | 377MB |
| 画質 | 汚い | ぎりぎり許容範囲 | 綺麗 |
尺別の比較(品質40で統一)
ぎりぎり許容できる画質として品質40を選択しました。
| 尺 | 30秒 | 60秒 | 90秒 |
|---|---|---|---|
| 容量 | 65.7MB | 105MB | 281MB |
結果:AEでのエンコードでは、100MB以内に収めようとすると30秒程度が限界。画質もあまり良くありません。
AviUtlでエンコードした場合
H.264を細かくチューニングできるAviUtl(+x264guiExプラグイン)を試してみました。
導入方法の参考:https://aviutl.info/x264guiex-intro/
尺別の比較(YouTubeプロファイル設定)
| 尺 | 30秒 | 60秒 | 90秒 |
|---|---|---|---|
| 容量 | 8.58MB | 17.1MB | 25.7MB |
結果:AEと比べて容量が大幅に削減されました。画質を保ちながら90秒でも25MB程度に収まっています。
注意点:動画の内容やプロファイル設定によっては映像が乱れる場合があります。その場合は設定を調整してください。
ビルド後の動画サイズ
Unityでビルドすると圧縮されてさらに小さくなるのでは?と思い検証しました。
Android(Mono)
| 尺 | 30秒 | 60秒 | 90秒 |
|---|---|---|---|
| 容量 | 8MB | 17MB | 25MB |
iOS(IL2CPP)
| 尺 | 30秒 | 60秒 | 90秒 |
|---|---|---|---|
| 容量 | 9MB | 18MB | 26MB |
結果:ビルド後もほぼ変わりません。動画の容量はそのままアプリサイズに反映されると考えましょう。
エンコード方法の比較まとめ
| エンコード方法 | 90秒の容量 | 画質 | 特徴 |
|---|---|---|---|
| AVI(非圧縮) | 6.96GB | 最高 | 実用不可 |
| AE(品質40) | 281MB | ぎりぎり | 容量が大きい |
| AviUtl | 25.7MB | 綺麗 | 高画質・低容量 |
まとめ
- AEの標準エンコードでは100MB以内に収めるのが難しい
- AviUtl + x264guiExを使えば、画質を保ちながら容量を大幅に削減できる
- ビルド時に動画は圧縮されないので、事前のエンコードが重要
- 適切にエンコードすれば、100MB以内でも数分の動画を入れられる
アプリに動画を組み込む場合は、エンコードツールの選択が容量削減のカギになります。
