ffmpegの使い方

初めて動画編集をやってffmpegを使ったので、記録として残しておく。

動画の領域の切り抜き

ファイルtest.mp4の画面中央から縦横900pxを切り抜く。

ffmpeg -i test.mp4 -vf crop="w=900:h=900" test_cropped.mp4

動画の時間の切り抜き

ファイルtest.mp4の2分55秒から5分24秒を切り抜く。

ffmpeg -ss 00:02:55 -to 00:05:24 -i test.mp4 -c copy test_trimmed.mp4

動画から連番画像の作成

ファイルtest.mp4をフレームレート10で、ディレクトリdir以下にpng形式の連番画像を作成する。

ffmpeg -i test.mp4 -vcodec png -r 10 dir/%05d.png

連番画像から動画の作成

ディレクトリdir以下のフレームレート10の連番画像から、フレームレート10の動画を作成する。

ffmpeg -r 10 -i dir/%05d.png -vcodec libx264 -pix_fmt yuv420p -r 10 test_fps10.mp4

動画のフレームレートの変更

ファイルtest.mp4のフレームレートを5にする。

ffmpeg -i test.mp4 -r 5 test_fps5.mp4

動画のフレームレートの補完

ファイルtest.mp4のフレームレートが20になるように補完する。

ffmpeg -i test.mp4 -vf "minterpolate='fps=20'" test_fps20.mp4

動画の連結

ファイルtest1.mp4とtest2.mp4を連結する。

ffmpeg -f concat -i concat_list.txt -c copy test1_2.mp4

なおファイルconcat_list.txtに、連結する動画のファイル名を記載しておく。

file test1.mp4
file test2.mp4

xargsで並行してコマンドを実行する

しょっちゅうは使わないけどたまに使うコマンドxargsで、並行してコマンドを実行できるオプションを知ったので記録。

-Pオプションで同時に実行する最大プロセス数を指定できる。0にするとxargsができるだけ多くのプロセスを実行しようとする。

dir1以下のすべてのmp4ファイルについてfpsを10にして上書きする、をできるだけ並行して実行する。

find dir1/ -name *.mp4 | xargs -P 0 -IREPLACE ffmpeg -i REPLACE -r 10 REPLACE

上記で併せて使っているxargsの-Iオプションも地味に便利。xargsは、-Iオプションで指定された文字列をパイプされてきたデータで置き換えてくれる。

参考リンク

https://linuxjm.osdn.jp/html/GNU_findutils/man1/xargs.1.html

Stable Diffusionの画像生成パラメータ比較

Stable Diffusionで画像生成するときのいくつかのパラメータの値を変えて、生成される画像の見た目がどう変わるか調べた。

結論

大雑把に試した結果、個人的には以下の見解となった。

パラメータ 備考
Steps 20以上で十分。
Clip skip 基本は1固定。2以上で大きく変わるので、粗い調整要素。
CFG scale 中程度の調整要素。
Variation strength 細かい調整要素。0.05から変わってくる印象。
Upscaler 個人的にはLatent系がよさげ。そのなかでLatent(antialiased)がよさげ。
Upscaler, Hire steps 0固定。1以上で意味不明な画像になる。
Upscaler, Denoising strength 基本は0.7。値が低いほどぼやける、値が大きいほどシャープになる。

環境

基本設定

パラメータ 設定
Prompt 1girl,full body,Bohemian,flowy,loose-fitting clothes,often with a mix of patterns and textures,such as maxi dresses,tassels
Negative prompt EasyNegative, extra fingers,fewer fingers,nsfw
Sampler(Scheduler) DPM++ 2M Karras, DPM++ SDE Karras
Width/Height 512
Seed 1
Steps 20
Clip skip 1
CFG Scale 7
Variation strength 0
Upscaler Latent
Upscaler, Hires steps 0
Upscaler, Denoising strength 0.7
Upscale by 2

比較

Steps

推論させる回数。10だと多少弱い。20~30あたりで安定。

Clip skip

低い値ほどpromptに忠実になる。粗い調整用。

CFG Scale

低い値ほどpromptに忠実になる。中程度の調整用。

Variation strength

低い値ほどpromptに忠実になる。細かい調整用。

Upscaler

どれを選ぶかは好みによる。

Upscaler, Hires steps

1以上はまったく意味のないでたらめな画像になった。

Upscaler, Denoising strength

値が低いほどぼやける、値が大きいほどシャープになる。