Ich habe einen HTML 5-Videoplayer, der 700px breit und 400px hoch ist. Ich versuche, avconv
ffmpeg zu verwenden , um die Größe zu ändern (unter Beibehaltung des Seitenverhältnisses) und sicherzustellen, dass es in meinen Player passt.
Bei der Eingabe kann es sich um eine Datei beliebiger Größe handeln. Daher muss ich die Größe der größeren Datei ändern, die kleineren Dateien jedoch mit schwarzen Balken zentrieren. Bisher habe ich Folgendes versucht: -s
und -aspect
, ich habe gesehen, pad
dass der -vf
Switch verwendet wird, verstehe aber nicht, wie er genug funktioniert, um das zu bekommen, was ich brauche.
Dies ist eine ungefähre Vorstellung von dem, was ich brauche. Ich bin mir nicht sicher, ob es überhaupt möglich ist. Es ist fast so wie die maximale Breite / maximale Höhe von CSS. Mir ist klar, dass dies nur ein Durcheinander von Wörtern sein kann, aber wenn jemand versteht, wovon ich spreche, wäre ich dankbar für Hilfe, danke.
Befehl avconv:
avconv -y -i control.avi -vcodec libx264 -b 2000k -bufsize 20M -acodec aac -strict experimental -ar 44100 -ab 256k bigbuck_out.mp4
quelle
Antworten:
Eine einfache Methode ist die Verwendung der
force_original_aspect_ratio
Option im Skalenfilter .Original Bild. Stellt ein Video mit einem Seitenverhältnis von 640 x 480 und 4: 3 dar.
In diesen Beispielen wird das Originalbild so skaliert, dass es in ein Seitenverhältnis von 16: 9 passt, wobei das ursprüngliche Seitenverhältnis beibehalten wird. Dazu können Sie entweder:
Pillarbox oder Briefkasten
Pillarboxed Bild. Anpassen eines 640 x 480 (4: 3) Eingangs an einen 1280 x 720 (16: 9) Ausgang.
Dadurch wird das Bild vergrößert. Wenn Sie eine Hochskalierung vermeiden möchten, sehen Sie sich das folgende Beispiel an.
Letterboxing würde stattdessen auftreten, wenn das Eingabe-Seitenverhältnis breiter als das Ausgabe-Seitenverhältnis ist. Beispielsweise führt eine Eingabe mit einem Seitenverhältnis von 2,35: 1, die in eine 16: 9-Ausgabe passt, zu Letterboxing.
Wie oben, jedoch ohne Hochskalierung
640 x 480 (4: 3) Eingaben in 1280 x 720 (16: 9) Ausgaben ohne Hochskalierung.
Ernte
Zugeschnittenes Bild. 4: 3 Eingangs-Seitenverhältnis, 16: 9 Ausgangs-Seitenverhältnis.
quelle
color
Option hinzufügen , z. B.pad=1280:720:(ow-iw)/2:(oh-ih)/2:color=red
(oder Sie können das Hexadezimalzeichen verwenden, wenn Sie dies vorziehen). Siehe Liste der Farben .Hier ist der Befehl, der Säulen- oder Letterboxing für eine feste Ausgabebreite hinzufügt. Es ist ein bisschen lang, aber Sie müssen die Polsterung irgendwie angeben.
Definieren Sie zunächst in Ihrer Shell die Ausgabebreite und -höhe:
Führen Sie dann den Befehl aus:
Dies ist auf das Nötigste reduziert, um die Größe zu ändern und zu füllen - fügen Sie Ihre anderen Video- und Audiooptionen hinzu, wie Sie es für richtig halten. Beachten Sie, dass die Zahlen für
width
undheight
durch 2 teilbar sein müssen, um für die meisten Codecs zu funktionieren.Hier ist die Erklärung, was los ist:
min()
) und wählen nur diesen Faktor für die Größenänderung.iw*min(…):ih*min(…)
).$width:$height
ist die Ausgabebreite und -höhescale
Filter.quelle
-movflags +faststart
, das Beispiel von slhck zu ergänzen. Das progressiv heruntergeladene Video kann abgespielt werden, bevor es vollständig heruntergeladen ist. Weitere Codierungsanweisungen und Beispiele finden Sie im FFmpeg- und x264-Codierungshandbuch sowie im FFmpeg- und AAC-Codierungshandbuch .pad=$width:$height:(ow-iw)/2:(oh-ih)/2"
ow-iw
.Es scheint mir, dass Sie dies in drei Schritten tun müssen:
FFmpeg / avconv kann die Skalierung / Auffüllung mit Videofiltern in einem einzigen Schritt durchführen und nur einmal transkodieren. Wenn Sie beispielsweise ein 16: 9-Video aufnehmen möchten, skalieren Sie es in der Breite und schreiben Sie die Ergebnisse in eine Letterbox:
... aber für den ersten Schritt (Ermitteln des Seitenverhältnisses und Vergleichen mit dem gewünschten 7: 4-Format) müssen Sie ein Skript verwenden.
... zeigt das Seitenverhältnis des Videos an, das wie folgt aussieht: "16: 9" oder "4: 3". In einem Bash-Skript würde ich Folgendes verwenden:
Natürlich müssen Sie es an Ihre Bedürfnisse anpassen.
quelle