FFMPEG e vídeo de entrada - alguma maneira de recuperar altura e largura dinamicamente?

FFMPEG e vídeo de entrada - alguma maneira de recuperar altura e largura dinamicamente?

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

informação relacionada