ffmpegを使うときに、ノイズを低減しつつmp4をgif化したい
from 深度とフォグ < 点を描くところから始めるRust製ソフトウェアラスタライザ
windowsでffmpegを使うときに、ノイズを低減しつつmp4をgif化したい
ここでやること
これを
https://gyazo.com/7012b34dd55415a5df3bd1c777b92beb
こうする
https://gyazo.com/c0c01cb5c306ea50e46fe8fd4841ecc0
ffmpegをwingetでインストールする
なんかvscodeのpowershellからインストールしても環境変数に反映されない...?
パスが通らないので、Powershell単体だけ立ち上げて起動してインストールしたら解決した
なんでかは知らん
code:cmd
ffmpeg -i "rasterizer-rs 2025-10-04 22-36-47.mp4" -r 15 -vf scale=240:-1 rasterizer-rs.gif
出せたけどなんかノイズ乗ってない?appbird.icon
https://gyazo.com/7012b34dd55415a5df3bd1c777b92beb
jpegノイズ?
ドキュメント見てみるかappbird.icon
多くが「GIFの256色制限+デフォルトの減色・ディザ設定」が原因です。GPT.icon
FFmpegではpalettegen / paletteuse を使った減色が定番で、これに適切なディザや必要なら軽いデノイズを足すとノイズ感を大きく減らせます。
code:cmd
ffmpeg -i input.mp4 -vf "fps=15,scale=720:-1:flags=lanczos,palettegen=stats_mode=diff" -y palette.png
パレット画像が生成された これがGIFで使いたい256色かなappbird.icon
https://gyazo.com/5d3068c7af5d8f31c688d1527496483e
https://gyazo.com/c0c01cb5c306ea50e46fe8fd4841ecc0
パレットを使ってgifを生成する
code:dos
ffmpeg -i input.mp4 -i palette.png -lavfi "fps=15,scale=320:-1:flags=lanczos x; x1:v paletteuse=dither=bayer:bayer_scale=3" -ss 10 -t 3 -loop 0 -y out.gif
どゆこと?appbird.icon
fps=15,scale=320:-1:flags=lanczos [x];GPT.icon
入力ストリームに 2つのフィルタfps, scale を直列でかける
scale=320:-1:flags=lanczos
Lanczos補間でリサイズ
その結果を [x] という名前の出力パッド に送っています
[x][1:v] paletteuse=dither=bayer:bayer_scale=3GPT.icon
paletteuse フィルタに2つの入力を渡しています:
[x] → 上で作ったフィルタ済み映像
[1:v] → 2番目の入力
v = その入力の video stream
[0:a] … 1番目の入力の音声ストリーム
[0:s] … 1番目の入力の字幕ストリーム
[0:1] … 1番目の入力ファイルの「ストリームID 1」(音声かもしれないし映像かもしれない)
[1:v:0] … 2番目の入力ファイルの「ビデオストリームのうち0番目」
paletteuse は、パレット画像を使って入力動画をGIF用に減色するフィルタです。GPT.icon
dither=bayer → バイヤー方式のディザリング(粒状ノイズを減らす規則的パターン)
それティザリングっていうのかappbird.icon
bayer_scale=3 → バイヤーのパターン強度(小さいほど弱いディザ)
なんか結構自由度高いな そういう柔軟性の高いCLIもあるのかappbird.icon
そうそう、FFmpeg の強みって「コーデック変換ツール」というより、フィルタを自由につないで処理パイプラインを組める“ビデオのシェルスクリプト”みたいなものになっているところなんです GPT.icon
-vf みたいに簡単に書くと「直列」だけだけど、
-lavfi(libavfilter)+ラベルを使うと「並列・合流・分岐」もできる。
たとえば「映像A+Bを横に並べる」「音声を別系統で加工して最後に合流」みたいな複雑なフィルタグラフもワンライナーで書けます。
ffplay を使えば、その場でリアルタイム試聴しながら調整することもできます。
へぇ....!この思想は結構面白いというか、CLIでここまでコンテンツクリエイションに寄せられてるのは珍しいなappbird.icon