O que estou tentando fazer é configurar um script que verifique a proporção entre altura e largura e, em seguida, determine QUAL dimensão dimensionar para caber em HD (1920x1080). Isso é possível usando comandos FFMPEG padrão?
Também preciso cortar a altura ou a largura se a dimensão resultante for maior que 1080 ou 1920, respectivamente.
Eu já li isso Redimensione vídeos com larguras diferentes para uma altura fixa preservando a proporção de aspecto com ffmpeg
então eu sei como dimensionar se você souber antecipadamente QUAL dimensão do seu vídeo de origem é maior.
Responder1
Eu usaria o ffprobe para ler a largura e a altura do vídeo existente e faria as contas no bash para descobrir qual é o fator limitante.
(Você mencionou que queria configurar um "script", então espero que isso signifique que o bash seja aceitável.)
#!/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