Alors que essayant d’optimiser la taille de mes vidéos personnelles , j’ai converti certaines d’entre elles en WebM à titre de test, en utilisant Pitivi sur Xubuntu. La différence de taille est significative. Le fichier Webm résultant ne représente qu'environ 10% du fichier d'origine, tandis que la qualité de l'image est sensiblement la même pour moi.
J'ai aussi essayé de faire la conversion en utilisant avconv
afin de pouvoir le scripter, mais le fichier résultant a vraiment l'air dingue. Après avoir examiné les paramètres de rendu dans Pitivi, j'ai essayé certains paramètres: avconv -i $1 -q 5 -qmin 0 -qmax 63 ${1%.*}.webm
, mais la qualité ressemble toujours à de la merde, il semble donc que je manque/j'utilise des paramètres incorrects. Est-ce que quelqu'un sait quels sont les paramètres corrects à utiliser pour convertir un film h264 en webm et obtenir la même qualité que celle de Pitivi?
Ce sont les paramètres dans Pitivi:
Remarque: Cette information est basée sur le wiki de FFmpeg sur encodage VP9 . Veuillez vous référer à cet article pour plus d'informations - il sera continuellement maintenu et étendu. Pour de meilleurs résultats, utilisez une version récente de
ffmpeg
en téléchargez-la depuis leur site Web (une version statique suffira; elle contient le codeurlibvps-vp9
.).
Le codage VBR vous donne la qualité globale optimale, car le codeur peut choisir librement le nombre de bits à affecter à une trame. Choisissez ce mode sauf si vous préparez des vidéos pour une diffusion en continu à débit constant.
Généralement, si vous ne souhaitez pas cibler une taille de fichier spécifique, vous devez laisser le débit binaire varier librement, car cela entraînera une qualité optimale. Pour ce faire, définissez le débit binaire sur 0 et le facteur de débit constant ( CRF ) sur le niveau de qualité cible:
ffmpeg -i input.mp4 -c:v libvpx-vp9 -crf 30 -b:v 0 output.webm
La valeur CRF peut être comprise entre 0 et 63. Des valeurs plus basses signifient une meilleure qualité. Les valeurs recommandées vont de 15 à 35, 31 étant recommandées pour la vidéo HD 1080p. Google a un guide avec plus d'informations à ce sujet .
Si vous souhaitez que votre fichier ait un débit binaire cible ou une taille de fichier spécifique, vous devez spécifier le débit et utiliser un codage en deux passes (qui garantira une distribution de qualité optimale). Ici, nous choisissons 5 Mbit/s, ce qui devrait suffire pour un contenu 1080p.
ffmpeg -i input.mp4 -c:v libvpx-vp9 -b:v 5M -pass 1 -f webm /dev/null && \
ffmpeg -i input.mp4 -c:v libvpx-vp9 -b:v 5M -pass 2 output.webm
Les utilisateurs Windows doivent utiliser NUL
au lieu de /dev/null
et un ^
au lieu de \
.
Tout d’abord, libvpx offre des modes de codage à débit constant et à débit variable . Un débit constant doit être évité autant que possible (sauf si vous ciblez une taille de fichier spécifique ou un scénario de diffusion en continu), car la qualité moyenne par taille de fichier sera plus mauvaise. Vous pouvez néanmoins essayer de définir un débit constant si rien d’autre ne vous convient, par exemple. avec 1 MBit/s:
ffmpeg -i input.mp4 -c:v libvpx-vp9 -minrate 5M -maxrate 5M -b:v 5M output.webm
Regardez la sortie et augmentez ou diminuez le débit selon vos préférences (ou les contraintes de taille de fichier). Par exemple, vous pouvez utiliser 500K
ou 5M
, et cetera.
Vous devez spécifier -minrate
, -maxrate
et le débit binaire -b:v
pour que l'encodeur puisse utiliser CBR. Ils doivent tous avoir la même valeur - sinon, le débit binaire cible sera différent et l'encodage VBR sera effectué, mais avec une mauvaise qualité.
Le codec audio actuel de choix pour l’encodage VP9 est Opus. FFmpeg choisira le codeur nécessaire et ses options par défaut. Si vous souhaitez définir explicitement -c:a libopus
, vous pouvez également le faire. Reportez-vous à la libopus
documentation pour plus d'options.