画像形式の変換
2025/12/05
FFmpeg コード
今回、swf形式から WebP、WebM に変換するに当たり、最終的に FFmpeg を使いました。ChatGPT に聞いたコードが以下です。私の状況に応じて最適なコードです。
ffmpeg -i input.mov -c:v libwebp_anim -lossless 1 -compression_level 6 -loop 0 -an output.webp
ffmpeg -i input.mov -c:v libvpx-vp9 -lossless 1 -pix_fmt yuva420p -row-mt 1 -an output-HQ.webm
ffmpeg -i input.mov -c:v libvpx-vp9 -pix_fmt yuva420p -b:v 0 -crf 30 -an output.webm
馬 WebP の before / after
馬 WebP:before
馬 WebP:after
馬 WebP[拡大]:before
馬 WebP[拡大]:after
前に載せていた WebP とどこが変わったのか、一番ジャギーが目立つ部分を拡大して見比べました。同じですね。単なる圧縮ですから。ピクセルの形やアルファの形は変更されない。
ChatGPT が言うには、見た目は同じでも WebP アニメーションとして正しく最適化されるのは「after」の方だけだそうです。以下が、Gemini が教えてくれた「before」のコードです。
ffmpeg -i input.mov -lossless 1 -loop 0 output.webp
Gemini に教えてもらいながら変換しましたが、何度も失敗しました。最終的に、「もっと簡単なコードの方が成功するのでは?」と伝えたところ、 このコードを出してくれました。成功はしましたが、実際には簡易的なコードだったようです。最初から ChatGPT に聞いていれば良かったです。
before と after の違い
| 項目 | before | after |
|---|---|---|
| コーデック | FFmpegが自動 | WebPアニメ専用 |
| 品質 | ロスレスだけど最適化不足 | ロスレス+最適化 |
| 容量 | 無駄が出る可能性あり | 最小になりやすい |
| 再現性 | 不安定 | 安定 |
| 正式な作り方 | ✕ | ◎ |
ちなみに、FFmpegでの透過に関しては、ChatGPT、Gemini が出したコードでは成功しませんでした。私の場合は特殊なケースですので仕方がないとは思いましたが、 試しに Copilot に聞いてみたら、一度で成功しました。AI にも得意不得意があるようですね。
