🎬

Adobeで動画→GIF変換したら画像が小さすぎたのでLinuxでやる

に公開

ffmpegコマンドについて解説

0.はじめに

先日Flaskアプリについての記事を執筆した際、Adobeのフリーツールでmp4gifに変換する作業を行った。

満足いく変換ができず複数回試したところで制限が来てしまい、使用できなくなった。
履歴やCookie削除を行い、もう1度試したが利用できなかった。

その後、ffmpegコマンドの存在を知り利用。うまくgif変換ができた。

1. ffmpegコマンド使用方法

sudo apt install ffmpeg -y

Zennに今すぐ載せる用(変換したい動画の名前をinput.mp4にする)

高画質版
ffmpeg -i input.mp4 -vf "fps=15,scale=800:-1:flags=lanczos,palettegen" -y palette.png
ffmpeg -i input.mp4 -i palette.png -filter_complex "fps=15,scale=800:-1:flags=lanczos[x];[x][1:v]paletteuse" -y output.gif

mp4→png→gifというように2段階工程(パレット生成&適用方式)にすることで高画質を実現している。
flags=lanczos,palettegenのフラグを立てて高画質を担保している(らしい)

軽量版
ffmpeg -i input.mp4 -vf "fps=15,scale=800:-1:flags=lanczos" output.gif

scaleで画面縦幅(px)を調整できる。縦横比維持で横幅は自動調整される。

2.補足:PDF関係の変換コマンド

# pdfをpngに変換する
pdfppm -png input.pdf output

# pdfの3~5ページ目をJPEGに変換する
pdftoppm -jpeg -f 3 -l 5 input.pdf output

# PNGをPDFに変換する
convert input.png output.pdf

# すべてのjpgを1枚のpdfに変換する
convert *.jpg output.pdf

convertPDF→PNGに使用することもできるが、処理速度やページ指定などの便利機能の面でpdfppmに軍配が上がる。

3. おわりに

オフライン環境で変換ツールが使用できるLinuxはまだまだ奥が深いと感じた。オンラインにアップロードしないのでセキュリティにも優しい。PDFが絡むものは使用頻度が高いので家族にもお勧めしたい。

4.参考文献

Discussion