Ist es möglich, schwarze Ränder eines Videos mit ffmpeg automatisch zu beschneiden?


15

Ich denke, es hat einen "Schwärze" -Videofilter, der bestimmen kann, ob eine Bildsequenz schwarz ist. Möglicherweise verfügt es auch über einen Filter zum automatischen Ermitteln von Zuschneidewerten, um schwarze Ränder an den Kanten eines Videos zu entfernen. Oder vielleicht ist es irgendwie möglich, ein Skript mit dem Filter "Schwärze" zu schreiben.

Antworten:


21

Ja, es ist möglich.

Spielen Sie zuerst Ihr Video ab, um festzustellen, ob es in Ordnung ist:

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

Die cropdetectFilterwerte sind:

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

Wenn es in Ordnung aussieht, beschneiden Sie es:

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

Quelle und weitere Informationen: René Calles Blog renevolution.com


5
Es kann hilfreich sein, einen Startpunkt (-ss 00:05:00) anzugeben, wenn Cropdetect verwendet wird (vor der Eingabe -i), da einige Videos beim Starten einen durchgehend schwarzen Bildschirm haben.

Ich möchte dies verwenden, um python matplotlib.animationVideos zuzuschneiden , die einen weißen Rand haben. Ist es möglich, die Farbe des erkannten Rahmens zu ändern?
Ryanjdillon

1
Können Sie etwas anderes als Schwarz als Rahmenfarbe angeben? Weiß zum Beispiel?
DanMan

Dies beantwortet die Frage nicht, da Sie noch manuelle Maßnahmen ergreifen müssen
Freedo

Hey @Cornelius, kannst du mir bitte helfen, einen Befehl zu finden? Ich möchte video.mp4 mit ffmpeg von Square auf Round zuschneiden. Ich möchte dafür keinen Overlay-Befehl verwenden.
Adil


4

Die beiden anderen Antworten in einem Skript zusammenfassen:

#!/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"

Diese Frage enthält einige relevante ffmpeg-Beispiele

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.