ffmpeg-hartkodierte Untertitel von oben, größer, mit dickerem Strich, auf dunklem Hintergrund

Ich habe diese Seite gefunden (ich kann dort nichts kommentieren oder beantworten, also hier ist eine neue Frage):

SRT-Untertitel in Video rendern?

mit dieser Zeile, die gut funktioniert:

ffmpeg -i input.mp4 -filter:v subtitles=subtitle.srt -c:a copy -c:v libx264 -crf 22 -preset veryfast output.mp4

Ich benötige folgendes und bekomme es nicht hin:

  • Untertitelzeilen beginnen oben auf der Leinwand
  • Untertitel haben eine größere Zeichengröße und einen dickeren Strich
  • Untertitelbereich hat einen halbtransparenten dunklen Hintergrund

mencoder könnte eine andere praktikable Möglichkeit sein, dies zu tun.

Antworten (1)

Ägisub

Verwenden Sie ASS-Untertitel. Gestalten Sie sie in Aegisub . Sie können jeden Buchstaben oder jedes Wort einzeln gestalten oder das gewünschte Styling auf alle Untertitel anwenden. Detaillierte Anweisungen finden Sie in der Dokumentation .

Geben Sie hier die Bildbeschreibung ein

Beispiel-ASS-Datei:

[Script Info]
; Script generated by Aegisub 3.2.2
; http://www.aegisub.org/
Title: Default Aegisub file
ScriptType: v4.00+
WrapStyle: 0
ScaledBorderAndShadow: yes
YCbCr Matrix: None

[Aegisub Project Garbage]
Last Style Storage: Default

[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,48,&H00FFFFFF,&H000000FF,&H00000000,&H80000000,0,0,0,0,100,100,0,0,1,6,0,8,10,10,20,1

[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:00.00,0:00:05.00,Default,,0,0,0,,Top of canvas. Bigger font size. Thicker stroke.

Ohne Ägisub

Sie können das Styling über die Untertitel- force_style Filteroption in anwenden ffmpeg. Dies sollte mit jedem Format funktionieren, das der Untertitelfilter akzeptiert.

ffmpeg -i input -vf "subtitles=subs.srt:force_style='Alignment=6,Fontsize=48,Outline=8'" output

In der Beispiel-ASS-Datei finden Sie akzeptierte force_styleOptionen, aber Sie können nicht jeden Buchstaben oder jedes Wort einzeln formatieren, wie Sie es in Aegisub können.

Beachten Sie, dass ScaleXund ScaleY-Werte bei Verwendung in ein Faktor und kein Prozentsatz sind, sodass die genauen Werte in diesem Fall (nicht ) force_stylewären .1,1100,100

Transparenter Hintergrund

Dies kann aufgrund einiger Einschränkungen von libass schwierig sein, aber es ist möglich. Siehe So legen Sie den Hintergrund für Untertitel in ffmpeg fest?

Danke @LordNeckbeard!!! Ich habe Aegisub 3.2.2 unter Ubuntu Linux verwendet, um diese Untertitel zu erstellen, ohne die Lesegeschwindigkeit von 15 cps zu überschreiten. Ich werde in seine Dokumente graben. Von dieser Seite über Stile und die Highlights scheint es mir auf den ersten Blick so, als ob ich das Video mit fest codierten Untertiteln nicht allein mit Aegisub rendern kann, oder? Im Moment habe ich das SubRip .srt-Format verwendet und Ihren Hinweis auf ffmpeg angewendet, großartig!
Es ist 720p und ich habe diese Zeile verwendet: ffmpeg -i input.mp4 -vf "subtitles=subs.srt:force_style='Alignment=6,Fontsize=22,Outline=2'" -c:a copy -c:v libx264 -crf 22 -preset slower output_Alignment_6_Fontsize_22_Outline_2___slower.mp4(Separater Kommentar, weil es sonst zu lang war, die Plattform hat es nicht zugelassen. Ich denke, ich sollte Ihre Antwort "akzeptieren", kann aber noch nicht sehen, wie es geht.)
könnten Sie mir bitte auf ausführliche Dokumente zur Verwendung der Option force_style verweisen? Ich kann nur hier und da Beispiele im Web finden, zB keine erklärten Ausrichtungsoptionen (versuchte 7 aus Neugier und es ist oben rechts). Nochmals VIELEN DANK! (Ich habe versucht, Ihre Antwort zu positiv zu bewerten, die Plattform sagt, dass sie aufgezeichnet, aber für die Öffentlichkeit nicht sichtbar ist, weil ich nicht genug Reputation habe ... vielleicht finde ich deshalb auch keine Schaltfläche oder keinen Link, um Ihre Antwort zu "akzeptieren". , ich hoffe, Sie haben nichts dagegen, tut mir leid.)
@JazzTp Ich bin mir nicht sicher, ob Sie Aegisub allein für Hardsub verwenden können, und Faulheit hindert mich daran, es nachzuschlagen. Ich habe es nur zum Erstellen von Untertiteldateien verwendet. Die Ausrichtung wird unter Linienausrichtung beschrieben (siehe \aund \anTags). force_stylescheint die Legacy-Positionierung ( \a) zu verwenden, die weniger sinnvoll ist als das aktuellere "Nummernblock"-Positionierungssystem ( \an). Nur die Dokumentation zu -force_stylebefindet sich unter den Untertitelfilterdokumenten, auf die ich in der Antwort verlinkt habe, aber die ASS-Tags-Seite hilft.
Nochmals vielen Dank @LordNeckbeard alles klar (beeindruckende Möglichkeiten mit dem Advanced Substation Alpha Format).
force_style implementiert nur die Tags, die pro Stil im INI-Abschnitt der ASS-Datei gesetzt sind.
Es hat mit dem ASS-Format funktioniert: ffmpeg -i input.mp4 -vf "subtitles=subs.ass" -c:a copy -c:v libx264 -crf 22 -preset slower output_subsASS_Alignment_8_Font_Arial_55_Outline_5.0___slower.mp4- Danke @Gyan, ich habe gerade deinen Kommentar gesehen (den ich ehrlich gesagt noch nicht ganz verstehe), als ich hergekommen bin, um diesen hinzuzufügen.
Ein Beispiel mit srt-Format und wo das Originalvideo neu skaliert werden musste, weil es zu niedrig aufgelöst war, um den Untertiteltext in anständiger Auflösung zu übertragen:ffmpeg -i input.mp4 -vf "scale=1080x720,subtitles=subs.srt:force_style='Alignment=2,Fontsize=22,Outline=2'" -c:a copy -c:v libx264 -crf 22 -preset slower output_1080x720_Alignment_2_Fontsize_22_Outline_2___slower.mp4
Interessanterweise werden Schriften größer, wenn dieselbe Schriftgröße in der force_style-Option verwendet wird, im Vergleich zu Pinta (Ubuntu-Grafikeditor). Irgendwelche Gedanken darüber, warum dies der Fall ist?
@RoelVandePaar Nie von Pinta gehört. Vielleicht ein Unterschied in der Schriftgröße (Pixel vs. Picas vs. Punkte).