Comment redimensionner une vidéo pour la réduire avec FFmpeg

103

Est-il possible de redimensionner mes vidéos pour les réduire avec FFmpeg?

J'ai une dimension vidéo originale de 1024x576, maintenant je veux redimensionner la vidéo à 720x480 pour répondre à l'exigence.

Comment puis-je faire ceci?

Alan
la source
ffmpegpeut être déconseillé, voir ici et ici
noisette à propos de natty
13
@nuttyaboutnatty Les messages "obsolètes" ne s'appliquaient qu'aux anciens "faux, morts," ffmpeg"de la branche Libav, pas à ceux ffmpegde FFmpeg qui sont revenus dans 15.04.
llogan

Réponses:

165

L'exemple le plus fondamental est le suivant:

ffmpeg -i input.avi -s 720x480 -c:a copy output.mkv

L'utilisation du scalefiltre apportera plus de flexibilité:

ffmpeg -i input.avi -filter:v scale=720:-1 -c:a copy output.mkv

Il -1indiquera à ffmpeg de choisir automatiquement la hauteur correcte par rapport à la largeur fournie pour préserver le rapport de format. -1peut également être utilisé pour la largeur si vous fournissez une hauteur donnée.


Un inconvénient d'échelle lors de l' utilisation libx264est que ce codeur nécessite même des valeurs et de l' échelle peut choisir automatiquement une valeur impaire qui entraîne une erreur: width or height not divisible by 2. Vous pouvez indiquer à scale de choisir une valeur paire pour une hauteur donnée (720 dans cet exemple):

scale="trunc(oh*a/2)*2:720"

... ou une largeur donnée (1280 dans cet exemple):

scale="1280:trunc(ow/a/2)*2"

Notez que votre version de ffmpeg pourrait se plaindre de ne pas reconnaître -cou d’ -filteroptions. Il peut également ne pas supporter scale. Dans ce cas, vous devez utiliser un fichier ffmpeg plus récent, que vous pouvez télécharger en tant que build statique ou le compiler vous-même .

Jimhark
la source
1
J'ai essayé ffmpeg -i output.mkv -filter:v scale=720:-1 -acodec copy -threads 12 output_shrink.mkv(dans la version 0.8.6-6 de ffmpeg: 0.8.6-0ubuntu0.12.10.1) mais j'ai eu l'erreurUnrecognized option 'filter:v'
doug65536
6
Après avoir parcouru la page de manuel de ffmpeg plusieurs fois, j’ai trouvé qu’au lieu de -filter:v, l’option semble avoir été remplacée par -vf.
Doug65536
2
@ doug65536 -filter:vet -vfsont tous deux bien. La version Ubuntu que vous utilisiez est cassée et obsolète - ce n'est pas vraiment FFmpeg ffmpeg, mais le binaire fourni par Libav (le fork de FFmpeg) sous le même nom.
Slhck
1
@MightyPork probablement votre version de ffmpeg est obsolète - quels problèmes se produisent ?. Quoi qu'il en soit, cela m'a vraiment aidé (avec ffmpeg version 2.4.10) à réduire la taille de certaines vidéos massives pour libérer de l'espace - merci!
Wilf
4
'-c' est l'abréviation de -codec, ': a' spécifie le ou les flux audio, 'copy' spécifie le codec de copie, qui copie le (s) flux (audio dans ce cas) sans réencodage. Fondamentalement, les flux audio passeront. Ceci est courant lorsque vous manipulez uniquement le flux vidéo.
Jimhark
14

J'utilise les commandes suivantes pour redimensionner des vidéos et des images. Pour largeur et hauteur fixe -

ffmpeg -i input.avi -vf scale="720:480" output.avi

et si vous souhaitez conserver les proportions, donnez simplement height -1 et le redimensionnement se fera automatiquement en fonction de la largeur -

ffmpeg -i input.avi -vf scale="720:-1" output.avi

Si vous souhaitez mettre à l'échelle en fonction de la taille d'entrée, par exemple. Disons réduire la largeur / hauteur de la moitié que vous pouvez faire -

ffmpeg -i input.avi -vf scale="iw/1:ih/2" output.avi

REMARQUE :

iw : input width
ih : input height

La construction statique peut être téléchargée depuis - https://johnvansickle.com/ffmpeg/

Documentation: https://ffmpeg.org/ffmpeg.html#filter_005foption

Aniket Thakur
la source
Ne fonctionne pas Stuck at handler_name: Sound Handle
Rushi M Thakker
J'ai une qualité vidéo terrible avec cette commande. Bien mieux si je crée output.mp4, pas avi. Donc, l'extension est importante.
sekrett