摘み入れ地点

得た知見を書きためていく場所です。ソシャゲ、自動化、データを見るのが好きです。Amazonアソシエイト、各種アフィリエイトサービスを使用しています。

ffmpegとwaifu2xでWallpaper Engine用の4K動画を準備した

ずっと更新できていなかった&技術っぽいネタができたので、作業ログとして書くことにする。

 

前提:Wallpaper Engineについて

store.steampowered.com

Steamで売ってるこいつを使うとデスクトップの壁紙を動画にすることができる。見てもらった方が早いので、気になる方は以下動画参照。

www.youtube.com

壁紙にする動画はYouTubeの動画URLでも指定可能。つまり、手元に動画ファイルが無くてもストリーミングで壁紙に設定できる。

だが、4Kモニタで生きている身としてはやはり4K解像度の動画を壁紙設定したくなった。そうなるとデータ通信量的にも手元に動画を準備した方がよいと考えたので、その準備をするためにいろいろやった。この記事はその作業ログ。

 

動画の準備

以下動画サイトなどからDLした。イリーガルな匂いもするので、やるときは自己責任で。

WallpaperWaifu - Free Live Wallpaper For Your Desktop PC & Mobile Phone

MyLiveWallpapers.com - Best Live Wallpaper For Your Desktop PC and Mobile Phone

また、YouTubeで「Wallpaper Engine (なんたら)」で検索すると、壁紙用の動画が出てくるのでそれをダウンロードするのも良い。今ダウンロードするなら素直にyoutube-dlを使うのが良い。こちらもいろいろあるので自己責任で。詳細は以下参照。

github.com

 

動画の解像度を上げる(アップコンバートする)

どうせ解像度上げるならいいやつが使いたい、となるとやはりwaifu2xが出てくる。

waifu2x.udp.jp

公式では画像しか対応していないが、有志の方が動画へ対応するためのバイナリ・cmdファイルをセットにしたアプコンキットを配布していたので、今回はそちらを使用させていただいた。ありがとうございます。

wp.nippombashi.net

 

基本的にはサイトの手順通りやれば良い。内部で行っている処理もサイトに詳細に書いてある。

 

ただし自分の場合は対応しないといけなかったことや定数設定がいくつかあったので、それらをメモしておく。

こまかくいじりたい人は内部で使用しているバイナリの大元のREADMEを参照すると良い。

github.com

 

step2_up-scale_2x.cmdファイルの定数設定
:: noise=-1/0/1/2/3 デフォルトのまま2でOK
set NOISE=2

:: scale=1/2 ここではまった。少数は使用不可。1/2/4/8/16/32のみ使用可(元のバイナリがそれしか対応していないため)
set SCALE=2 :: blocksize=400 RTX3070では400が限界?これ以上にすると動作が不安定に
set BLOCKSIZE=400

scaleがはまりポイント。適当に1.X倍とか設定すると勝手に1倍になり、ただのノイズ除去になってしまうので注意(元のREADME読まないと分からないのでまぁまぁ時間食った……)

また、自分の場合元動画がFHDだったためscale=2がちょうど4Kになり都合が良かったが、そうじゃない場合は元動画の画面サイズに合わせて倍率を調整する必要がある。

 

step3_merge_nvenc.cmdファイルのコマンド編集

大元の動画に音声が無い場合は動画化する際にファイルを参照しようするが存在しないためエラーで落ちてしまう。そのため、音声ファイルを参照しないようにコマンドを書き直す必要がある。該当行を以下のように差し替えれば動くはず。

ffmpeg64\ffmpeg.exe -framerate %FPS% -hide_banner -strict -2 -i "%~dp0\_temp-project\image-frames2x\image-%%09d.png" -r %FPS% -qp 0 -vcodec hevc_nvenc -y "%~dp0\FINAL_%dttime%.mp4"

 

自分の環境特有かも知れないが、ここでコマンドを書き直してビデオのビットレートを指定してもなぜか非圧縮(40秒程度の動画が驚異の50,000kbps、ファイルサイズ800MB!)で書き出しされてしまった。

同様の症状が出た方はいるかわからないが、もしいた場合は一度そのまま動画を生成してしまい、その後ffmpegを使用して動画ビットレートを変更することで解決可能だ。

 

(やらなくていいかも)ffmpegで動画ビットレートの変更

同フォルダにあるffmpegのバイナリに対してPowershellで以下コマンドを実行。

ffmpeg64\ffmpeg.exe -i .\FINAL_「動画の名前」.mp4 -vcodec hevc_nvenc -b:v 5000k -r 60 output.mp4

 

「-r 60」はFPS指定。変換する動画のFPSに合わせて設定すること。「-b:v 5000k」は使用用途に合わせて変更すると良い。自分のように壁紙にするぐらいなら5000kで十分。

これで解像度を4Kにしたままファイルサイズを約800MBから約20MBまで小さくすることができた。やったね。

 

画面が真っ黒の場合の対処法(LAVのインストール)

これで動画は生成できたが、手元では生成した動画を設定すると画面が真っ暗になってしまった。

調べると公式のFAQがあったのでそちらを確認。手順通り外部から動画再生用のフィルタ?をインストールし、PCを再起動すると症状が治った。

help.wallpaperengine.io

 

以上、同様のことをやろうとしている人向けの記事だった。参考になれば幸い。

余談だが、自分の好きなキャラが常時こちらを向いて「動いている」という体験は本当に良い。一度設定すると本当にQOLが上がるので是非いろんな人に試してもらいたい。