[unity]Video の警告を回避する

  • Color primaries 0 is unknown or unsupported by WindowsMediaFoundation. Falling back to default may result in color shift. ????.mp4
  • Unexpected timestamp values detected. This can occur in H.264 videos not encoded with the baseline profile. Timestamps will be skewed to correct the playback for ????.mp4

動画(Video)ファイルをインポートしたり、実行するとこのような警告が毎回表示されてしまいました。
上は警告だが、上手く表示されているなら問題ない(らしい)。
下はコメントだけど、再生時に映像(フレーム?)が歪む可能性がある、危険そうなコメント。

これを無くす方法を記事として残しておきます。

入力ファイルとして、無圧縮動画(avi)があることが前提です。入力ファイルが mp4 しかない場合、再エンコードで画質が下がってしまいますので注意してください。

ffmpeg を使う

コマンドラインツールですが、ffmpeg は無料で使用可能、様々な動画や音声の変換に適しています。

ダウンロード

こちらのサイトより、Windows であれば Download > Windows > Windows builds from gyan.dev >
ffmpeg-git-full.7z
の順にクリックしてダウンロード。
7-zip が解凍できるツールを使い、解凍したファイルを自分の使いたいフォルダに直置きします。
よくわからない人は C:\ffmpeg\ とかが無難。

パス(環境変数)を通しておく

これがなくても ffmpeg.exe は使えますが、面倒なので行っておきましょう。
Windows 左下アイコンより 検索 > 「システム環境変数」と入力して表示される項目をクリック。

詳細設定 > 環境変数 > 「Path」を選択して編集 > 新規 で、ffmpeg.exe の存在するパスを指定して、OK > OK
(C:\ffmpeg\ に解凍したファイル一式を入れたのであれば、多分 C:\ffmpeg\bin\ にあります)

コマンドラインで実行

C:\temp\sample.avi があるとして、これを C:\temp\sample.mp4 に変換するには、以下のコマンドを入力します。

unity で警告が出ないようにする必要があるので、一般的な変換にくらべてスイッチ多めです。

ffmpeg -i C:\temp\sample.avi -vcodec libx264 -pix_fmt yuv420p -r 30 -color_primaries bt709 -color_trc bt709 -colorspace bt709 -color_range pc -profile:v baseline C:\temp\sample.mp4

unity にインポートする

作成した mp4 を unity にインポートし、警告が出なくなったことを確認します。

参考にしたサイト

こちらを参考にしました。

Adobe Premire Pro を使う

こちらは残念ながら両方の警告を消せませんでした……(Color primaries 0 is unknown のエラーが対処できない)。

方法ですが、avi を読み込んで mp4 で書き出すだけ。その際、カラースペースを Rec.709 にするのがポイントです。

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA