URL: https://linuxfr.org/forums/general-general/posts/conversion-de-videos-en-webm Title: Conversion de vidéos en WebM Authors: JGO Date: 2013年08月31日T18:36:22+02:00 License: CC By-SA Tags: firefox, ffmpeg, webm et theora Score: 1 Pour un site owncloud familial, j'héberge des vidéos ogg/theora qui sont affichées dans un lecteur html5 des navigateurs. J'ai donc besoin de codecs lisibles directement par le navigateur. J'utilise theora mais j'aimerais passer à webm, dont on dit beaucoup plus de bien. Pour ogg/theora, j'utilise les commandes suivantes (trouvées [sur stackoverflow] (http://stackoverflow.com/questions/5487085/ffmpeg-convert-html-5-video-not-working)) : * `ffmpeg -i FICHIER -b 1500k -vcodec libtheora -acodec libvorbis -ab 160000 -g 30 sortie.ogv`, ou bien * `ffmpeg2theora FICHIER` (au choix avec la précédente) Pour matroska/webm, la commande équivalente est : * `ffmpeg -i FICHIER -b 1500k -vcodec libvpx -acodec libvorbis -ab 160000 -f webm -g 30 intermediaire.webm` * `mkvmerge -o sortie.webm -w intermediaire.webm` *Remarques concernant la commande mkvmerge (paquet [mkvtoolnix] (https://www.bunkus.org/videotools/mkvtoolnix/)) : il s'agit de mettre dans un conteneur Matroska. En fonction du codage utilisé par l'appareil qui a produit l'original, firefox n'arrive pas toujours à lire si on ne fait pas mkvmerge (alors que chromium et opera s'en sortent bien avec tous mes appareils). Utiliser mkvmerge impose le conteneur matroska ce qui résout le problème. ffmpeg supporte aussi `-f matroska` sans passer par mkvmerge mais firefox trouve que le fichier est corrompu (encore une fois, les autres navigateurs s'en sortent). Enfin, bien que le suffixe canonique du conteneur soit .mkv, les navigateurs ne comprennent pas qu'il s'agit d'une vidéo si on l'appelle .mkv, d'où le nom .webm.* Or d'après mes essais, les fichiers matroska/webm sont plus gros que les fichiers ogg/theora, tous les paramètres d'encodage étant égaux, et sans différence de qualité en première impression visuelle. Voici des exemples de tailles en octets : * Vidéo.mp4 : 1 985 618 (original compressé produit par un ordiphone) . * Vidéo.webm : 3 912 334 (ffmpeg 1.0.2) / 3 910 532 (ffmpeg 1.2.3) * Vidéo.ogv : 3 865 656 (ffmpeg 1.0.2) / 3 864 127 (ffmpeg 1.2.3) * Vidéo.ogv : 1 933 461 (ffmpeg2theora) Ma commande ffmpeg conduit dans ce cas à un fichier plus gros que l'original (ça dépend des réglages de compression de l'appareil qui a produit le fichier, ce n'est pas le plus important ici), alors que ffmpeg2theora (sans argument) utilise des valeurs par défaut plus faibles et conduit à un fichier plus petit. Mais surtout, on remarque que .webm est 1,2 % plus gros que le fichier .ogv, alors que le niveau de qualité défini par le débit (bitrate) est le même. Une augmentation de 1,2 % en taille ce n'est pas la mort (je suis encore loin de la limite en trafic consommé fixée pour l'hébergement de ce site), mais puisqu'on dit que webm est meilleur que theora, c'est bien qu'il est censé produire des fichiers plus petits à qualité égale. Est-ce que j'utilise des paramètres incorrects, avez-vous des conseils pour les arguments à passer pour tirer le meilleur parti de webm ? ### 2013年09月04日 Remarques postérieures ### Les fichiers plus haut ne montraient aucune différence de qualité entre theora et webm parce que codés à 1500k, ce qui est dans tous les cas une très très bonne qualité. La différence de qualité entre les deux codecs apparait clairement lorsqu'on réduit le débit par exemple 500k ; la taille est toujours à peu près la même (à quelques pourcents près) mais webm est clairement plus agréable à regarder. Finalement j'ai choisi les paramètres suivants : `ffmpeg -i FICHIER -b:v 750k -crf 10 -vcodec libvpx -acodec libvorbis -ab 160000 -f webm -g 30 intermediaire.webm` La paramètre crf est un paramètre de qualité complémentaire au débit et qu'il vaut mieux donner. Une bonne valeur de départ est 10 ; on peut mettre n'importe quel entier entre 4 (meilleure qualité) et 63 (plus mauvaise qualité).