【UE5】 Unreal Engineから直接mp4を書き出してみた記録

Unreal Engine 5でのレンダリングで直接.mp4で書き出す方法のメモ。

 

シーケンサーからのレンダリング方法学習をしていた際に、

moco

いちいち動画編集ソフトを介するの面倒くさいな…
直接mp4出力出来ないものか…

とぼやいていた所、Minomaru-GT氏(@mino1106tasu)より素敵な情報を頂きましたので、実際にやってみることにした記録。結果的に色々失敗を経て何とか出力に至りました。

 

この記事では

参考記事と動画

実際にやってみた手順

失敗の記録

をまとめています。

 

 検証のバージョンはwindows10,Engineバージョン5.1.1、FFmpeg 6.0

関連記事mp4出力ないのかや…というボヤキ

スポンサーリンク

参考情報

Minomaru-GT氏のQiita。感謝感謝です!

参考動画 『How To Export as MP4 and MOV Video Files - Unreal Engine 5』

Minomaru氏が参考にされた動画

実際にやってみた

大きな流れとしては

  1. FFmpegのDL
  2. ムービーレンダーキューにコマンドラインエンコーダを追加する
  3. プロジェクト設定の編集
  4. レンダリング
 ムービーレンダーキューを使用するためには、プラグインを有効にする必要があります。
ムービーレンダーキューの基本は別記事でまとめているので割愛。

1.FFmpegのDL

事前準備として、オープンソースのソフトウェアFFmpegをDLします。
これは動画と音声を記録・変換・再生するためのソフトで、UE5からこのソフトを介してmp4に出力ため必須のソフトウェアです。

    1. 上記リンクからwindows アイコン下のwindows build from gyan.dev にアクセスします
    2. その先でrelease builds からffmpeg-release-full.7zをDLします。動画によってはその上のffmpeg-release-essentials.7zをしようしていたのでどちらでも良いのかもしれません

       .7zは7-zipのフォーマットです。解凍する際には7-zipをご利用ください
    3. 解凍したフォルダごと任意の場所に移動します。
      私のフォルダ移動先

      C:\Users\ユーザー名\Documents\ffmpeg-6.0-full_build

2.ムービーレンダーキューにコマンドラインエンコーダを追加する

ムービーレンダーキュー>設定>コマンドラインエンコーダを追加します。

 

ムービーレンダーキューにアクセスするためには

■シーケンサーのカチンコマーク

ウィンドウ>シネマティクス>ムービーレンダーキュー


コマンドラインエンコーダについて公式ドキュメントを確認すると

コマンドライン エンコーダを使用すると、FFmpeg などのサードパーティ製ソフトウェアで独自の出力形式を作成できます。この設定には、エンコーダの実行可能ファイルが必要です。また、[Project Settings (プロジェクト設定)] でいくつかの設定を有効にする必要があります。

エクスポート形式|Unreal Engineドキュメント

ということで、外部のソフトを使用する際にはこちらを使用します。

 

追加すると警告のビックリマークが表示されます。

要はエンコーダの実行可能ファイルが設定されていないよ。ということでプロジェクト設定から実行ファイル(FFmpeg)の設定を行います。

3.プロジェクト設定の編集

プロジェクト設定でFFmpegの設定を行います。

設定>プロジェクト設定を開き

プラグイン>Movie Pipeline CLI Encoderにアクセス

以下4カ所にこのように入力します

  • 実行ファイルパス:ffmpeg.exeまでのパス
    ※私の場合→C:\Users\ユーザー名\Documents\ffmpeg-6.0-full_build\bin\ffmeg.exe
  • 映像コーデック:libx264
  • オーディオコーデック:aac
  • 出力ファイル拡張子:mp4

 

libx264はH.264を示すFFmpedのコマンドで、ほかのコーデックで出力したい場合には下記サイトが参考になりそうです。

参考

FFmpegでよく使う例、コーデックをまとめてみた(2023年版)@Qiita

私はいつもH.264を利用しているのでこのまま利用させて頂きます。

4.レンダリング

出力設定を行ってレンダリング

 

必要に応じて

Delete Source Files:ソースファイル(mp4を生成するための連番)を削除する
のチェックを入れて(任意)レンダリングします。

出力設定で指定したパスに動画出力されます。

本来であればこれでレンダリング出来ます。

失敗の記録

実は今回順当に出力に至らず、当初mp4で出力自体は出来たものの動画の中は真っ黒でした。

    その時出ていたエラーログ

    Shot/Camera "no shot" starts on a sub-frame. Rendered range has been rounded to the previous frame to match Sequencer.

     

    参考フォーラムでも同じ質問が投げられていましたが、解決に至らず。未だ原因がわかっておりません。

    Shot/Camera “no shot” When Rendering Level Sequence in Movie Render Queue

     

    chatGPTさんに投げたらこんな回答が来ましたが、真偽不明なので鵜呑みには出来ませんよね…。

    模索

    • 「【Windows】Windows10にffmpegをインストールする」というこちらの記事を参考に、FFmpegの位置を変えて、環境変数を設定したり
    • フォーラムを探し回ったり
    • ファイル名から2バイト文字を排除したり(※普段は使いませんが、受講講座に倣い2バイト文字使っていた)
    • まっさらなシーンでは出力可能であることを確認したり

    結果シーケンサーを新規で作り直すことで出力に至りました

     

    何故か新規シーケンサーで出力した後は、出力出来なかったはずの元のシーケンサーも出力できるように。。

    何故かさっぱりわかりません。。。

     

    根本的な解決策がわかり次第追記したいと思います。
    何ともモヤモヤする結果でしたが、とりあえず出力自体はできたのでファンタジー背景作成の学習に戻ります。

    Unreal Engineアイテム

    関連記事学び方


    関連記事動画で学びたいならこちら

    書籍








     

    Twitterでフォローしよう

    おすすめの記事