Rendez-vous sur Arrakiss
Le 31/01/2020 à 10:15 dans /Journal/2019/

VP9, PNG et JPG pour limiter l’utilisation de bande passante

Quand on doit partager des vidéos ou des photos à la famille, ou même lorsqu’on héberge un site, je pense qu’il est important de garder en tête l’idée de limiter la quantité de données à transférer :

Ici, je vais recenser comment optimiser les images et les vidéos tout en gardant une qualité correcte.

VP9 : encodage vidéo

L’encodage VP9 permet de produire des .webm dont la taille est ridiculement petite. À titre de comparaison :

Il existe de nombreuses options pour l’encodage. Pour ma part, je me contente de la “qualité constante”. Vous encoder toute une série de vidéos, ça donnerait :

convert2webmvp9 *.avi

Le script en question (convert2webmvp9) contient ces lignes :

#!/bin/sh
# require ffmpeg
# convert video to webm using vp9 encoder

for i in $@; do
  j="${i%.*}"
  ffmpeg -i ${i} -c:v libvpx-vp9 -b:v 0 -crf 32 -pass 1 -an -row-mt 1 -f webm /dev/null -y && \
  ffmpeg -i ${i} -c:v libvpx-vp9 -b:v 0 -crf 32 -pass 2 -c:a libopus -row-mt 1 ${j}.webm
done

Pour augmenter la qualité, il faut changer le paramètre -crf 32 :

Plus le nombre est faible, plus la qualité est grande.

PNG : optipng

Une seule commande suffit à optimiser les images png : optipng

JPG : GraphicsMagick

Avec GraphicsMagick ou ImageMagick (le premier étant plus rapide), la commande convert permet d’optimiser une image jpg en mode progressif :

gm convert image.jpg -strip -quality 70 -interlace line image.jpg

Optimiser toutes les images

J’ai un petit script qui fait ça : (imgopti)

imgopti *.jpg *.png