FFMPEG et entrée vidéo-tout moyen de récupérer dynamiquement hauteur et largeur? [dupliquer]

0

Ce que j'essaie de faire est de configurer un script qui vérifie le rapport hauteur sur largeur, puis détermine QUELLE dimension à l’échelle pour l’adaptation à la HD (1920x1080). Est-ce possible d'utiliser des commandes FFMPEG standard?

J'ai également besoin de rogner la hauteur ou la largeur si la dimension résultante est supérieure à 1080 ou 1920 respectivement.

J'ai déjà lu cette section Redimensionner des vidéos de différentes largeurs à une hauteur fixe en préservant les proportions avec ffmpeg

Je sais donc comment évoluer si vous savez à l'avance quelle dimension de votre vidéo source est la plus grande.

Bachalo
la source
1
superuser.com/questions/547296/… cela couvre-t-il votre question?
Jasper
Si vous aviez une vidéo d'entrée carrée, disons 500x500, voudriez-vous que la sortie soit 1080x1080 ou 1920x1080 avec des boîtes à piliers?
David Yaw
Jasper - oui, ça couvre assez bien, merci!
Bachalo

Réponses:

1

J'utiliserais ffprobe pour lire la largeur et la hauteur de la vidéo existante et ferais le calcul en bash pour déterminer quel est le facteur limitant.

(Vous avez mentionné que vous vouliez créer un "script", j'espère donc que cela signifie que bash est acceptable.)

#!/bin/bash

W=$( ffprobe input.mp4 -show_streams |& grep width )
W=${W#width=}

H=$( ffprobe input.mp4 -show_streams |& grep height )
H=${H#height=}

# Target a 1920x1080 output video. 
TARGETW=1920
TARGETH=1080

# I'm not familiar with the resizing parameters to ffmpeg, 
# so I'm writing the below code based on the question you linked to. 

if [ $(( $W * $TARGETH )) -gt $(( $H * $TARGETW" )) ]; then
    # The width is larger, use that
    SCALEPARAM="scale=$TARGETW:-1"
else
    # The height is larger, use that
    SCALEPARAM="scale=-1:$TARGETH"
fi

ffmpeg -i input.mp4 -vf $SCALEPARAM output.mp4
David Yaw
la source