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


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

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

Comment puis-je faire ceci?


71
2017-11-30 06:38


origine


ffmpeg peut être déconseillé, voir ici et ici - nutty about natty
@nuttyaboutnatty Les messages "dépréciés" s'appliquaient uniquement à l'ancien, au mort, au faux "ffmpeg"de la fourche Libav, pas ffmpeg de FFmpeg qui est revenu dans 15.04. - LordNeckbeard


Réponses:


L'exemple le plus fondamental est le suivant:

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

En utilisant la scale filtre fournira plus de flexibilité:

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

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


Un inconvénient de l'échelle lors de l'utilisation libx264 est que cet encodeur nécessite des valeurs paires et l’échelle peut automatiquement choisir une valeur impaire entraînant une erreur: width or height not divisible by 2. Vous pouvez dire à l'échelle 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 -c ou -filter options Il peut aussi ne pas supporter scale. Dans ce cas, vous devriez utiliser un ffmpeg plus récent, que vous peut télécharger en version statique, ou se compiler.


120
2017-11-30 06:53



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 a eu l'erreur Unrecognized option 'filter:v' - doug65536
Après avoir fouillé la page de manuel de ffmpeg plusieurs fois, j'ai constaté qu'au lieu de -filter:v, l'option semble avoir été modifiée pour -vf. - doug65536
@ doug65536 -filter:v et -vf sont tous les deux bien. La version d'Ubuntu que vous utilisiez est cassée et obsolète, ce n'est pas vraiment le cas de FFmpeg ffmpeg, mais le binaire fourni par Libav (le fork FFmpeg) sous le même nom. - slhck
@MightyPork probablement votre version ffmpeg est obsolète - quels problèmes se produisent ?. En tout cas, cela m'a vraiment aidé (avec ffmpeg version 2.4.10) pour réduire la taille de certaines vidéos massives afin de libérer de l'espace - merci! - Wilf
'-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 ou les flux (ici l'audio) sans réencodage. Fondamentalement, les flux audio vont passer. Ceci est fréquent lorsque vous ne faites que manipuler le flux vidéo. - jimhark


J'utilise les commandes suivantes pour effectuer la mise à l'échelle des vidéos et des images. Pour largeur et hauteur fixes -

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

et si vous voulez conserver les proportions, donnez simplement la hauteur -1 et il redimensionnera 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 de l'entrée disons réduire la largeur / hauteur yo 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 à partir de - https://johnvansickle.com/ffmpeg/

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


2
2018-02-24 06:57