ffmpeg: wie erstelle ich ein interlaced h.264 video?

1069
Thomas R.

Ich möchte ein qualitativ hochwertiges, nicht verschachteltes Eingangsvideo in ein weniger hochwertiges, aber weiter verteilbares H.264 / MP4-Format konvertieren. Die Ausgabe sollte einige Einschränkungen haben - insbesondere: Sie sollte interlaced sein !

Ich habe den folgenden Befehl ausprobiert, wobei auch mandelbroteine für die qualitativ hochwertige Eingabe gilt:

ffmpeg -hide_banner \ -t 10 -y \ -f lavfi \ -i anullsrc=r=48k:cl=stereo \ -f lavfi \ -i mandelbrot=r=50:size=1920x1080 \ -vf 'interlace=scan=tff:lowpass=complex,format=yuv420p' \ -codec:a aac \ -b:a 128k \ -aac_coder twoloop \ -codec:v libx264 \ -preset veryfast \ -tune animation \ -profile:v high \ -crf 35 \ -level 5.2 \ -x264opts interlaced=1 \ -shortest \ mandelbrot.mp4 

Mein ffmpeg ist ffmpeg version 3.4.2-2.

Ich bin jedoch nicht sicher, ob die Befehlszeile korrekt ist.

  • libx264erkennt eine verschachtelte Eingabe nicht. Ich habe einzufügen -x264opts interlaced=1.
  • Andere FAQs erzählen etwas über -flags +ilme+ildct...

Kannst du meine Parameter bestätigen? Vielen Dank.

1
"_es sollte interlaced_ sein" ... warum? Interlacing ist ein Kater aus der Zeit der CRTs, es hat keinen Platz in der modernen Welt und sieht wirklich schlecht aus. Attie vor 6 Jahren 1
Im Allgemeinen haben Sie recht ... Ich empfehle jedem in der digitalen Welt progressive ... Aber nehmen Sie diesen speziellen Fall als Herausforderung ... ;-) Thomas R. vor 6 Jahren 0
Warum ist in Ihrem Fall also Interlacing erforderlich? Nur neugierig… slhck vor 6 Jahren 0
Denken Sie an ein paar Hardware-Video-Player. Tatsächlich haben einige von ihnen technische Spezifikationen. Dann brühen Sie eine Videodatei genau wie in diesen Handbüchern beschrieben. Der Spieler weigert sich jedoch, ihn wiederzugeben. Deshalb möchte ich sowohl progressive als auch interlaced Dateien erzeugen ... Thomas R. vor 6 Jahren 0
Vielleicht ist es erwähnenswert - ich hatte einige Probleme mit dem Erzeugen von Interlaced-mp4-Dateien mit ffmpeg und versuchte es mit vielen verschiedenen Parametern. Das Video funktionierte in einem Software-Player einwandfrei, schien jedoch auf Sendung korrupt zu sein. Ich kann mich jetzt nicht an alle spezifischen Details erinnern. Ich sage nur: Wenn dies für eine ernsthafte Anwendung ist, sollten Sie es auf einer echten Hardware testen. Möglicherweise benötigen Sie einen proprietären Encoder, um die Kompatibilität zu gewährleisten. Mikhail V vor 6 Jahren 0

2 Antworten auf die Frage

1
Gyan

x264 via ffmpeg kann den Interlaced-Modus auf zwei Arten einstellen:

1) über private Parameter dh -x264opts(oder -x264-params)interlaced=1

2) oder über die generische Flagge libavcodec -flags +ildct

Wenn ich also Encoder-spezifische Parameter reduzieren möchte, sollte ich ffmpeg -hide_banner -t 10 -y -f lavfi -i anullsrc = r = 48k verwenden: cl = stereo -f lavfi -i mandelbrot = r = 50: size = 1920x1080 -vf 'interlace = scan = tff: lowpass = komplex, format = yuv420p' -Flags + ildct -codec: a aac -b: a 128k -aac_coder twoloop -codec: v libx264 -preset veryfast -tune animation-profilee: v high -crf 35 -level 5,2 -shortest mandelbrot.mp4`? Thomas R. vor 6 Jahren 0
Das sieht gut aus. Gyan vor 6 Jahren 0
Vielen Dank. Weil ich ein Neuling bin, ist meine Stimme nicht öffentlich ... ;-( Thomas R. vor 6 Jahren 0
0
Thomas R.

Endlich habe ich hervorragende Ergebnisse erzielt

ffmpeg \ -y \ -hide_banner \ -i "$" \ \ [... audio ...]\ \ -vf tinterlace=interleave_top,fieldorder=tff \ -crf 28 \ -preset placebo \ [... more video ...]\ -codec:v libx264 \ \ -f mp4 \ -flags +ildct+ilme \ [... more muxing ...]\ \ "$"