この記事では『Replay MOD』で動画を書き出す際の設定、コマンドライン、GPUのハードウェアエンコードについてを中心に解説していきます。
『Replay MOD』、『FFmpeg』の導入方法についてはこちらの記事で解説しています。
動画の書き出し
動画の設定
書き出し方式
- デフォルトの書き出し方式
- ステレオスコピックレンダリング(立体視)
- キュービックレンダリング(360°)
- 正距円筒図法(360°)
- ODSレンダリング(3D/360°)
の5種類から選べます。
余程の事がない限りはデフォルトの書き出し方式を選んでおけば問題ありません。
エンコードのプリセット
- MP4 – 任意のビットレート
- このプリセットを選択すると、ビットレート入力フィールドが有効になり、ビデオのビットレートを自分で定義できます。
x264 コーデック MP4 ビデオでエンコードします。
- このプリセットを選択すると、ビットレート入力フィールドが有効になり、ビデオのビットレートを自分で定義できます。
- MP4-低品質
- x264 コーデック MP4 ビデオを非常に低い品質でレンダリングします。
ビデオ自体は非常に見栄えが悪いですが、ファイル サイズが小さい為、このプリセットはテストレンダリングに使用できます。
- x264 コーデック MP4 ビデオを非常に低い品質でレンダリングします。
- WEBM – 任意のビットレート
- このプリセットを選択すると、ビットレート入力フィールドが有効になり、ビデオのビットレートを自分で定義できます。
vp8 コーデック webm ビデオでエンコードされます。
webm ビデオ ファイルはYouTube などのストリーミング サービスに直接アップロードする場合に便利です。
- このプリセットを選択すると、ビットレート入力フィールドが有効になり、ビデオのビットレートを自分で定義できます。
- MKV-ロスレス
- x264 コーデック MKV ビデオをロスレス品質でエンコードします。
高品質ですが、ほとんどの非 FFmpeg ベースのビデオ プレーヤーおよびビデオ編集ソフトウェア(QuickTime Player、Sony Vegas、Adobe Premiere など) では再生できません。
- x264 コーデック MKV ビデオをロスレス品質でエンコードします。
- OpenEXR Sequence(Minecraft 1.14 以降)
- シーケンスをOpenEXR 形式の個々のフレームとしてエクスポートします。
画像は完璧な品質であり、目に見えるもの以外の追加の画像レイヤーが含まれている場合があります。
- シーケンスをOpenEXR 形式の個々のフレームとしてエクスポートします。
- PNG シーケンス
- シーケンスを個々のフレームとしてPNG 形式でエクスポートします。
画像は完璧な品質です。
深度マップ イメージは、BGRA の順序で 8 ビット コンポーネントにエンコードされた 32 ビット フロートであり、ほとんどのエディターで使用するには何らかの後処理が必要です。
- シーケンスを個々のフレームとしてPNG 形式でエクスポートします。
エンコードのプリセットについては
基本的には MP4 – 任意のビットレート を選んでおけば良いと思います。
詳しくは後述のコマンドライン設定で解説します。
動画の解像度
YouTube等に投稿する用の動画であれば HD画質である 1920*1080 に設定しておくのが無難で使いやすい素材になります。
一応、一般的なビデオ解像度は次の通りです。
- 720p – 1280 * 720
- 1080p – 1920 * 1080
- WQHD – 2560 * 1440
- 4k – 3840 * 2160
Bitrate
HD画質で動画のフレームレートが60の場合、20mbps に設定しておけば問題ありません。
書き出す動画
動画を書き出した際のファイル名を設定できます。
ここは特に変更しなくても問題ありません。
任意のもので大丈夫です。
詳細設定
名札を表示
エンティティのネームタグを表示したくない場合は、チェックボックスのチェックを外してください。
非表示のネームタグには、プレイヤーだけでなく防具立てやMobのネームタグも含まれます。
Preserve Alpha Channel
Replay MOD はデフォルトだとアルファチャンネルをエクスポートしません。
必要に応じて有効にすればいいですが、基本無効で問題ありません。
カメラを安定化する
この設定は、キュービックレンダリングと正距円筒法にのみ適用されます。
360 °ビューアではカメラが回転する為、周囲を見回すとカメラが上または下を向いて視界が傾いて見えることがあります。
したがって、それぞれのチェックボックスを使用して、カメラのピッチとロールを常に安定させるがオススメされています。
クロマキー
書き出した動画の空の色を指定した色に変更します。
Adobe After Effectsなどのビデオ編集ソフトウェア用の実験的な機能です。
Inject Spherical Metadata
球体メタデータを動画に追加するオプションで、ODSレンダリング(3D/360°)使用時のみ有効です。
Depth map
動画内に深度情報を保存するオプションで、OpenEXR Sequence、PNG シーケンスでのみ有効なオプションです。
Export camera path
カメラパスをエクスポートするかどうかのオプションです。
アンチエイリアス
ジャギー(ピクセルのギザギザ)を目立たなくするオプション。
好みの設定で大丈夫ですが、数値を大きくする程レンダリングするのに時間が掛かります。
求める画質の程度にも寄りますが、なしでも問題はありません。
コマンドライン設定
他の項目は雑に紹介してきましたが、コマンドラインの設定についてしっかり触れておきます。
使用頻度が少なそうな
- WEBM – 任意のビットレート
- KMV – ロスレス
- OpenEXR Sequence
- PNGシーケンス
の4つについては解説しません。
デフォルトのプリセット
MP4 – 任意のビットレート
ビットレートを任意で調整できますが最低限の引数のみになっており、このままでは調整の余地がありません。
また、CPUでエンコードを行っている為、処理に時間も掛かってしまいます。
-y -f rawvideo -pix_fmt bgra -s %WIDTH%x%HEIGHT% -r %FPS% -i - %FILTERS%-an -c:v libx264 -b:v %BITRATE% -pix_fmt yuv420p "%FILENAME%"
MP4 – 低品質
プリセットに ultrafast 、crf に 51 を指定することで、処理が早く、サイズの小さいビデオをエンコードする事が出来るようにしています。
ただ、本当に処理速度のみに特化していて動画としてのクオリティには一切気を使っていない為、動画素材としては使い物になりません。
-y -f rawvideo -pix_fmt bgra -s %WIDTH%x%HEIGHT% -r %FPS% -i - %FILTERS%-an -c:v libx264 -preset ultrafast -crf 51 -pix_fmt yuv420p "%FILENAME%"
カスタムしたプリセット
デフォルトのプリセットではあまりにも使い勝手が悪いのでカスタムしたプリセットを紹介します。
-y -f rawvideo -pix_fmt bgra -s %WIDTH%x%HEIGHT% -r %FPS% -i - %FILTERS%-an -movflags +faststart -c:v h264_nvenc -preset:v slow -profile:v high -b:v %BITRATE% -cq 20 -g 30 -bf 2 -pix_fmt yuv420p "%FILENAME%"
エンコード速度はある程度早く、品質も担保されています。
NVIDIAのGPUを搭載しているPCであればこれをこのままコピペしても問題なく使用出来るとは思いますが、各々で調整出来る用に変更、追加した引数についても解説していきます。
プリセットについての解説
-movflags +faststart
このオプションを追加することにより、いくつかの情報がファイルの先頭に移動します。
それにより、視聴者がファイルを完全にダウンロードする前に動画の再生が開始されるようになります。
YouTubeでは、アップロードが完了する前に再エンコードを開始できるように +faststart の使用を推奨しています。
-c:v h264_nvenc
出力ファイルのビデオコーデックを指定するオプションです。
デフォルトでは libx264 が指定されていますがCPUに寄るエンコードの為、書き出し時間が長くなりがちです。
h264_nvenc にすることでNVIDIA社製のGPUに寄るハードウェアエンコードが可能になります。
AMD社製のGPUを使用している場合は h264_amf に書き換えてください。
GPUでエンコードする際にはGPUのドライバ等が必要です。
まだインストールしていない場合は、事前にインストールしPCを再起動してください。
- NVIDIA ドライバ
- CUDA Toolkit SDK
- AMD ドライバ
-preset:v slow
品質と速度のトレードオフを調整するためのオプションです。
- ultrafast
- superfast
- veryfast
- faster
- fast
- medium
- slow
- slower
- veryslow
一番上の ultrafast が処理が最も早く、品質は最も低い
一番下の veryslow が処理が最も遅く、品質が一番高くなります。
デフォルトでは medium が選択されています。
処理速度をある程度早くしたい場合、後述する ーcq の数値を低めに設定しておくのがオススメです。
profile:v high
profile:vオプションは、出力を特定のH.264プロファイルに制限します。
通常はこのオプションを使用する必要はなく、推奨はプロファイルの設定を省略することで、x264 が自動的に適切なプロファイルを選択するよう出来ます。
このオプションを使用する理由は、ビデオを連結する場合に他のビデオとプロファイルを合わせる為です。
ビデオを連結する予定がない場合、このオプションは削除しても問題ありません。
(削除しなくても問題なくエンコードは出来ます)
-cq 20
-cqオプションは、クオリティーレベル(画質)を調整するオプションです。
値が低いほど高品質になりますが、ファイルサイズも大きくなります。
-cqオプションを指定しない場合のデフォルト値は0ですが、品質にバラつきが出てくる場合があります。
処理の早い -preset を使用する場合は更に数値を下げるようにしてください。
-g 30 -bf 2
これらは、動画をYouTube側で推奨されているクローズドGOP、2連続Bフーレムに合わせる為のオプションです。
動画のフレームレートによって -g 30 の数値が変動します。
YouTubeの場合はフレームレートの半分が目安になります。
余談
今回紹介したコマンドラインについて
今回紹介したコマンドラインはあくまで一例です。
今回の記事では紹介していませんが、より圧縮率・ビットレートあたりの品質が高いH.265(HEVC)コーデックや、固定ビットレートでの書き出す方法等もあります。
書き出した動画の音に関して
書き出した動画に音がないのは『Replay MOD』の仕様です。
コマンドラインの -an オプションに寄って音をエンコードしない設定になっていますが、このオプションを変更しても音が出ないということには変わりはありません。
リプレイのプレビュー画面を録画してしまうか、プレビュー画面を録音、書き出した動画と合成等の方法で対応してください。
リプレイの時間や天候について
保存したリプレイ上では weather や time コマンドが使えない為、通常では天候や時間を変更することは出来ません。
BobLite という外部ソフト
TweakerMore というMOD
のいずれかを使用することで、天候と時間を変更することが可能です。
終わりに
これで動画を書き出す際の設定、コマンドライン、GPUのハードウェアエンコードについての解説は終わりです!
この記事について、なにか分からないことがあればコメントやTwitter@daisyukibで質問してください!
[ads-01]
コメント