web-dev-qa-db-fra.com

Est-il possible de recadrer automatiquement les contours noirs d'une vidéo avec ffmpeg?

Je pense qu'il a un filtre vidéo "noir", qui peut déterminer si une séquence d'images est noire. Peut-être qu’il dispose également d’un filtre pour déterminer automatiquement les valeurs de recadrage afin de supprimer les bordures noires des bords d’une vidéo. Ou peut-être est-il possible d'écrire un script en utilisant le filtre "Blackness".

12
Konstantin

Oui c'est possible.

Commencez par lire votre vidéo pour voir si tout va bien:

ffplay -i YourMovie.mp4 -vf "cropdetect=24:16:0"

Les valeurs du filtre cropdetect sont les suivantes:

cropdetect=limit:round:reset

limit = black threshold (default 24)
round = output resolution must be divisible to this
reset = after how many frames the detection process will start over

Si ça vous va, recadrez-le:

ffmpeg -i YourMovie.mp4 -vf "crop=640:256:0:36" YourCroppedMovie.mp4

Source et plus d'infos: René Calles blog renevolution.com

16
Cornelius

De: https://stackoverflow.com/questions/17265381/ffmpeg-get-value-from-cropdetect

ffmpeg -i input -t 1 -vf cropdetect -f null - 2>&1 | awk '/crop/ { print $NF }' | tail -1
10
Jannes

Rassembler les deux autres réponses dans un script:

#!/bin/sh
#ffmpeg_zoom ver 20180128202453
I="$@";X=${I##*.};O=${I%.*}_zoomed.${X};f=$(which ffmpeg 2>/dev/null)
if [ ! "$f" ]||[ "$f" = '' ];then echo "Install ffmpeg";exit 1;fi
C=$($f -i "$I" -t 1 -vf cropdetect -f null - 2>&1|awk '/crop/{print $NF}'|tail -n1)
echo $f -i "$I" -vf "$C" "$O"; $f -i "$I" -vf "$C" "$O"

Cette question a quelques exemples pertinents de ffmpeg

3
Alexx Roche