GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Konvertieren Sie ein Video durch Zuschneiden und Ändern der Größe in eine feste Bildschirmgröße?

Ich habe versucht, das selbst herauszufinden, aber die unzähligen Möglichkeiten verblüffen mich einfach.

Ich möchte idealerweise entweder ffmpeg verwenden oder mencoder (oder etwas anderes, aber die beiden, von denen ich weiß, dass ich daran arbeite), jedes eingehende Video in eine feste Bildschirmgröße umzuwandeln.

Wenn das Video dafür breiter oder zu kurz ist, schneiden Sie das Video mittig zu. Wenn es dann nicht die richtige Größe hat, ändern Sie die Größe nach oben oder unten, um es genau auf die feste Bildschirmgröße zu bringen.

Das genaue letzte, was ich brauche, ist 720×480 in einem XVid-AVI mit einer MP3-Audiospur.

Ich habe viele Seiten gefunden, die zeigen, wie man die Größe auf eine maximale Auflösung ändert, aber ich brauche das Video mit genau dieser Auflösung (mit abgeschnittenen zusätzlichen Teilen, ohne schwarze Balken).

Kann mir jemand sagen, wie die Befehlszeile ausgeführt werden soll – oder mir zumindest einen Teil / den größten Teil des Weges dorthin bringen? Wenn es mehrere Befehlszeilen sein müssen (führen Sie X aus, um die Auflösung zu erhalten, führen Sie diese Berechnung durch und führen Sie dann Y mit der Ausgabe dieser Berechnung aus), kann ich das skripten.

Akzeptierte Antwort:

Ich bin kein ffmpeg-Guru, aber das sollte reichen.

Zunächst können Sie die Größe des Eingabevideos wie folgt ermitteln:

ffprobe -v error -of flat=s=_ -select_streams v:0 -show_entries stream=height,width in.mp4

Mit einem einigermaßen aktuellen ffmpeg können Sie die Größe Ihres Videos mit diesen Optionen ändern:

ffmpeg -i in.mp4 -vf scale=720:480 out.mp4

Sie können die Breite oder Höhe auf -1 setzen um ffmpeg zu lassen Ändern Sie die Größe des Videos unter Beibehaltung des Seitenverhältnisses. Eigentlich -2 ist die bessere Wahl, da der berechnete Wert gleichmäßig sein sollte. Sie könnten also Folgendes eingeben:

ffmpeg -i in.mp4 -vf scale=720:-2 out.mp4

Sobald Sie das Video erhalten haben, ist es möglicherweise größer als die erwarteten 720x480 da lässt du ffmpeg Berechnen Sie die Höhe, also müssen Sie sie zuschneiden. Dies kann folgendermaßen erfolgen:

ffmpeg -i in.mp4 -filter:v "crop=in_w:480" out.mp4

Schließlich könnten Sie ein Skript wie dieses schreiben (kann leicht optimiert werden, aber ich habe es wegen der Lesbarkeit einfach gehalten):

#!/bin/bash

FILE="//eadn-wc01-5196795.nxedge.io/tmp/test.mp4"
TMP="//eadn-wc01-5196795.nxedge.io/tmp/tmp.mp4"
OUT="//eadn-wc01-5196795.nxedge.io/tmp/out.mp4"

OUT_WIDTH=720
OUT_HEIGHT=480

# Get the size of input video:
eval $(ffprobe -v error -of flat=s=_ -select_streams v:0 -show_entries stream=height,width ${FILE})
IN_WIDTH=${streams_stream_0_width}
IN_HEIGHT=${streams_stream_0_height}

# Get the difference between actual and desired size
W_DIFF=$[ ${OUT_WIDTH} - ${IN_WIDTH} ]
H_DIFF=$[ ${OUT_HEIGHT} - ${IN_HEIGHT} ]

# Let's take the shorter side, so the video will be at least as big
# as the desired size:
CROP_SIDE="n"
if [ ${W_DIFF} -lt ${H_DIFF} ] ; then
  SCALE="-2:${OUT_HEIGHT}"
  CROP_SIDE="w"
else
  SCALE="${OUT_WIDTH}:-2"
  CROP_SIDE="h"
fi

# Then perform a first resizing
ffmpeg -i ${FILE} -vf scale=${SCALE} ${TMP}

# Now get the temporary video size
eval $(ffprobe -v error -of flat=s=_ -select_streams v:0 -show_entries stream=height,width ${TMP})
IN_WIDTH=${streams_stream_0_width}
IN_HEIGHT=${streams_stream_0_height}

# Calculate how much we should crop
if [ "z${CROP_SIDE}" = "zh" ] ; then
  DIFF=$[ ${IN_HEIGHT} - ${OUT_HEIGHT} ]
  CROP="in_w:in_h-${DIFF}"
elif [ "z${CROP_SIDE}" = "zw" ] ; then
  DIFF=$[ ${IN_WIDTH} - ${OUT_WIDTH} ]
  CROP="in_w-${DIFF}:in_h"
fi

# Then crop...
ffmpeg -i ${TMP} -filter:v "crop=${CROP}" ${OUT}

Linux
  1. Konvertieren Sie Videos mit FFmpeg in das WhatsApp-Videoformat

  2. Wie und wo wird $term interpretiert?

  3. Wie kann man die Größe eines Videos mit Ffmpeg reduzieren?

  4. LosslessCut – Ein einfacher plattformübergreifender Video- und Audio-Cutter

  5. Wie konvertiere ich m4v- und wmv-Videos mit ffmpeg in das mp4-Format?

So installieren Sie FFmpeg unter Linux und verwenden Befehle

So vergrößern und verkleinern Sie Videos mit FFmpeg

So konvertieren Sie Videos in GIF unter Linux [Terminal- und GUI-Methoden]

Die nützlichsten FFmpeg-Befehle für die Audio- und Videokonvertierung

Reduzieren Sie die Dateigröße von Images in Linux – CLI- und GUI-Methoden

Linux - Standard-Terminalgröße und Bildschirmposition festlegen?