FFMPEG e entrada de vídeo - qualquer maneira de recuperar a altura e largura dinamicamente? [duplicado]

0

O que estou tentando fazer é configurar um script que verificará a proporção de altura sobre a largura e, em seguida, determinará QUAL dimensão para dimensionar para caber em HD (1920x1080). Isso é possível usando comandos padrão do FFMPEG?

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 Redimensionar vídeos com diferentes larguras para uma proporção fixa de preservação de altura com ffmpeg

então eu sei escalar se você souber com antecedência QUAL dimensão do seu vídeo de origem é maior.

    
por Bachalo 26.01.2015 / 23:05

1 resposta

1

Eu usaria o ffprobe para ler a largura & altura do vídeo existente, e faça as contas em bash para descobrir qual é o fator limitante.

(Você mencionou que queria configurar um "script", então espero que isso signifique que bash é 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
    
por 26.01.2015 / 23:41

Tags