時間はかかるが実感しにくい。完全に自己満足。
現代において映像の一つの目指す点は4kと60fps化だ。エンコードするときに設定を4kにして60fpsに設定すると、数値上を4k60fpsにすることは可能だが、それは数値上のものだけであり、実際に見ても差異はないので意味がない。
それに現行放送は1440x1080で放送されているが、どうもアニメは720pで制作されているそうだ。
例えアニメの4k放送やUHD BDが発売されたとしても、それはおそらく疑似4kだろう。
また、TVの機能でアップコンバートしてフレーム補間も可能だが、これではそのTVで再生するときにアップコンバートするだけで、ファイル自体が変わるわけではない。なので映像のファイルそれ自体を4k60fps化したいのだ。
さて、一応だが、フリーソフトでこれらの夢を叶えることは可能だ。ただ時間とHDDにそれなりの余裕が必要ではあるが。
手順としては
動画をffmpegを用いて画像と音声にバラす
waifu2xを利用して先程ばらした画像をニューラルネットワークを用いて4kにアップコンバートする
4k画像を再び動画化し、音声と合体させる
AMDのVega以前のGPUであれば利用可能なFluid Motionを用いて60fps化する
以上で完成だ
ハードウェアで用意するものはAMDのVega以前のGPUのみである。Vega世代であれば最も望ましい。あとはフリーソフトだけでなんとかなる。
あとコマンドラインでアプリが使えないとかなりきつい。
まず、4k化についてだ。AI Scalerというソフトを使えば高品質なアップコンバートが可能なそうだが、20万円もするので却下だ。Video Enhance AIというソフトは199ドルで購入のハードルは低いが、今回はフリーソフトのwaifu2xを使用する。
このソフトはニューラルネットワークを用いて動画をアップコンバートするものではなく、画像ファイルをアップコンバートするものなので、一度動画を全てばらして画像ファイルにする。ffmpegを使用すれば簡単だ。
ffmpeg -i "input" -c:v tiff "output\image_%04d.tiff"
をコマンドラインから入力すればいい。inputには使用する動画ファイルを、outputには出力するフォルダーをそれぞれ指定する。また画像のフォーマットはpngでも問題はない。知識があるのであればハードウェアデコーダーを利用することでより高速に画像への変換が可能なはずだ。
アニメは基本的に24分。つまり1440秒で1秒あたりに29.97枚の画像が生成されるため、43156枚の画像が合計で生成される。なお今回は2分半程度の動画を利用するのでそこまで多くのファイルは生成されない。
このように、すごい量の画像が生成されるのは間違いない。そしてかすみんかわいい
次に音声と動画を分離する。
ffmpeg -i "input" -c:v flac "output\audio.flac"
今回はなんとなくflacにしたが、フォーマットはmp3でもaacでも何でも良い。またファイル名もなんでも良い。とにかく分離できればそれでOKだ。
変換が終了するとwaifu2xを利用して4k化する。
AMDのGPUを利用しているのであれば上記から、NVIDIAのGPUを利用しているのであればwaifu2x-coffeeというのを推奨する。ちなみにCUDAが使えるNVIDIAの方が速度は圧倒的に早い。
DLして解凍したら
waifu2x-ncnn-vulkan.exe -i "input" -o "output" -n 2 -s 2
のコマンドを実行。今回はinputとoutputはそれぞれ指定する。ファイルではなくフォルダを指定する。
GPU性能にもよるが、かなり時間がかかる。とにかく待つ。
ここで画像を比較してみるとしよう。
元の画像(FHD) |
4kアップコンバート後の画像 |
う~ん。なかなかこれだけを見て違いを見出すのは難しいというのが正直なところではある。というかBloggerの仕様上、解像度が一定以上のは自動で圧縮されてしまい、2048 x 1152にされてしまうようだ。
さて、完成したら次はアップコンバートされた画像と音声を合成して動画ファイルに戻す。
ffmpeg -i "input\image_%04d.png" -i "input\audio.flac" -c:v libx264 -crf 10 -r 23.976 -preset ultrafast -c:a copy "output"
今回はx264を使用した。今回は60fps化のためにまた後でエンコードするのでビットレートもりもりの超激重ファイルになるが、画質を極力劣化させない設定にした。
フレームレート(-r)は元動画の数値に合わせる。今回は23.976だったのでその数値にした。
ここで音ズレが発生した場合はコマ落ちかフレームレートを間違えている可能性がある。頑張って原因を究明するしかない。
ここからが60fps化だ。bluesky氏によって公開されているA's Video Converterを使えばAMDのFluid Motionというフレーム補間技術を使って映像を60fps化できる。
設定は以下の通りに行う。
これを使うにはVCEというエンコーダーを利用する必要があるが、いかんせんこれは画質が最悪レベルに悪い。なので固定QPにして品質を0にする。こうするとビットレートはとてつもなく高くなるが、無劣化で動画が出てくる。60fps化したあとで好きなように圧縮すればいい。
ビデオフィルタでは上記のように設定し、Fluid Motionを有効にする。
これで4K化と60fps化は完了だ。
動画の容量がとてつもないことになっていると思うので、最後にx265を使ってエンコードすれば作業は完了となる。
私はいつもffmpegで
-c:v libx265 -crf 20 -pix_fmt yuv420p10le -profile:v main10 -preset fast -c:a copy
という設定にしている。
以上。
コメント
コメントを投稿