webp apng avif等新しい拡張子が増えファイルサイズも小さく、画質もきれいなアニメーションをブラウザーに表示することができるようになりました。
かなり簡単に動画を最新の拡張子webp,apng,avifに変換する環境を作る。
ブラウザーで表示できる動画ファイルは「gif」ファイルでした。しかし今はwebp,apng,avifが画像のファイルサイズが小さく、高画質になったため、gifを使う理由がなくなった。
では映像ファイルをブラウザーにアップしたい場合どれを使えばいいのか?
今はとりあえずwebpにしておけばファイルサイズを小さく画質は高画質にすることができる。webpより高画質なavifがあるが、まだすべてのブラウザ、端末で対応していないのでとりあえずwebpにしておいた方が良いかもしれない。
webpを使うと小さいファイルサイズに、さらに高画質に、全てのブラウザ、端末で表示されるので映像をwebpに変換していく。
使用するものはffmpegというものを使って変換をしていく。
ffmpegをgitページからダウンロードをします。
最新バージョンがffmpeg-master-latest-win64-gpl.zipだったのでこれをダウンロードしました。
時期によって最新バージョンが異なるので、とりあえずffmpeg-n〇.〇-latest-win64-lgpl-〇.〇.zipをダウンロードしても大丈夫です。 〇.〇の部分は現在6.1が最新の様です。
ffmpegを解凍したらbinフォルダー内に3つファイルがあるのでそれを移動させます。 私の場合はCドライブ直下にffmpegというファイルを作成しその中に入れています。
環境変数にffmpeg.exeの入っているフォルダー場所を追加します。
C:\ffmpeg
パスの追加方法の詳細はここを参照してください。
1.ウィンドウズキーを押して「cmd」と入力し、コマンドプロンプトを起動します。
2.ffmpegと入力して画像のようにに表示されたら正常に環境変数が追加でき、ffmpegが起動できる状態になりました。
cd/d %~p1
:FILEDROP
ECHO ファイル受け取り
:REPEAT
ffmpeg -i %1 -vcodec libwebp -lossless 0 "%~n1.webp"
if "%~2"=="" GOTO EXIT
shift
GOTO REPEAT
:EXIT
あとは画像ファイルを選んでドラッグアンドドロップで変換がされます。
画像のファイルサイズは312KBから25.3KBになりました。
およそ12分の1まで小さくなりました。
元の画像もあまりよくありませんが、劣化もあまり感じられない。
apngはアニメーションpngです。webpと同様gifアニメーションの上位互換です。 以下のコマンドで良いクオリティで出現できると思います。
ffmpeg -i %1 -vcodec libwebp -lossless 0 -qscale 5 -vf fps=8,scale=640:-1,format=pal8 -pix_fmt yuv420p -preset default -y -loop 0 -b:v 100k "%~n1.webp"
よく webp vs apng vs avif。何が優れている、どっちを使えばいいのか。と言う議論があるが、今のところどちらでも良い、大差無しと感じます。
私は諸事情によりapngではなく、webpを使っています。そろそろavifに切り替えを検討中。
webp apngどちらを使うべきか、ズバリwebpを使う方が良いと考えます。
理由としては汎用性、端末、ブラウザの対応状況がwebpがほんの少し優れているからです。
また、apngがオプションの指定が少し複雑なためです。適切にパラメーターを調整できればapngの方が優れている。動画によるので本当にケースバイケースになる。
そのため、汎用性が高いwebpを使うべきだと考える。
正直avifがかなり良い。品質良いし、ファイルサイズ小さい。のだた、まだブラウザー側が対応していないところもあるので...
と言ってもほとんど対応しているので、webpからavifに切り替えてしまおうか迷っている...
ffmpeg -i %1 -c:v libaom-av1 -b:v 80k -vf scale=640:-1,framerate=8 -pix_fmt yuv420p -aom-params lossless=0 -movflags faststart -g 80 -cpu-used 8 -y "%~n1.avif"
上記のコマンドで私の場合満足しているが、人によって欲しい結果が異なるので、どこを変更すればいいのか
#映像クオリティ
-b:v 80k
変更例:80k -> 1M 500k
#フレームレート
-framerate=8 -g 80
両方を合わせるべき
変更例:framerate=8 -g 80 -> framerate=15 -g 150
#画像サイズ
-vf scale=640:-1
変更例:-vf scale=1080:-1
参考までに40秒の動画を変換したところ
画質に関しては動画でご確認ください。
どれが映像がどの拡張子なのか
webp | avif |
gif | apng |
となっています。
ウェブページで動く画像は何がいいのかは、現時点ではwebpが良いと思う。
やはり人によって表示されない状況は避けたい。
しかし、正直のところこの画像問題についてはcloudinaryを使っているため、何も考えずに済んでいる
もう少しでavifも全て対応されるのでavifを使うのも悪く無い選択肢。そろそろwebpからavifに切り替えようかな...
質問や、間違いがありましたら、お気軽にどうぞ
※お名前とコメントの内容を入力してください。
※全てこのブログ上に公表されます。
※許可なく管理者によって修正・削除する場合がございます。 詳しくはプライバシーポリシーを参照ください