Was ist das beste Videoformat für die Verkettung?

Was ist das beste Videoformat für die Verkettung?

Ich kämpfe jetzt seit ungefähr 2 Tagen mit .mp4s und versuche, eine Serie von ungefähr 20 in einer einzigen Datei zusammenzufügen. Jeder Unterschied zwischen den Dateien und es ist ein Albtraum. Einige Dateien haben unterschiedliche fps und andere unterschiedliche Verhältnisse.

Ich wollte wissen, ob MP4 das Format ist, das ich verwenden sollte, oder ob es ein besseres, benutzerfreundliches Format für die Verkettung gibt. Zeit ist kein Problem, ich brauche einfach ein relativ hochwertiges Format, das unter den meisten Umständen verkettet.

Wenn dies nicht der Fall ist, wären alle Vorschläge zum Umgang mit den stark variierenden Eigenschaften von MP4-Dateien (ich bin mir nicht ganz sicher, welche Unterschiede zwischen Videos außer den fps und dem Verhältnis, die ein Problem verursachen könnten) großartig.

Ich verwende ffmpeg, um zu versuchen, die Dateien zu verketten. Zuerst habe ich versucht, den Demuxer und dann den Concat-Filter zu verwenden, aber ich finde den Concat-Filter sehr entmutigend und bin völlig ratlos, wie ich ihn verwenden soll.

Jedes Video verfügt über Ton, einige haben Standbilder und andere Bewegtbilder.

Antwort1

Multimediadateien sind komplex, daher sind für die Verkettung mehrere Anforderungen erforderlich:

  • Alle zu verkettenden Segmente müssen über die gleiche Anzahl und Art von Streams verfügen.
  • Alle Streams müssen die gleichen Parameter haben.

Da jeder Input in jedem beliebigen Parameter variieren kann, empfehle ich die Verwendung des Concat-Filters. Sie müssen jeden Input mithilfe von Filtern an einen gemeinsamen Parametersatz anpassen. Das Inputformat spielt keine so große Rolle, da Sie sowieso alles neu kodieren werden.

Einfaches, allgemeines Beispiel mit main.mp4Video und Audio und end.mp4Video und keinem Audio. Alle anderen Parameter werden als unterschiedlich angenommen. Die hier verwendeten Filter sind: anullsrc, scale, pad, setsar, fps, format, aformat und concat.

ffmpeg -i main.mp4 -i end.mp4 -f lavfi -t 0.1 -i anullsrc=channel_layout=stereo:sample_rate=44100 -filter_complex "[0:v]scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2,setsar=1,fps=25,format=yuv420p[v0];[1:v]scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2,setsar=1,fps=25,format=yuv420p[v1];[0:a]aformat=channel_layouts=stereo:sample_rates=44100[a0];[v0][a0][v1][2:a]concat=n=2:v=1:a=1[v][a]" -map "[v]" -map "[a]" -c:v libx264 -c:a aac -movflags +faststart output.mp4

Hierzu gibt es mehrere Möglichkeiten und Sie müssen möglicherweise basierend auf Ihren Eingaben oder Ihren Anforderungen Anpassungen vornehmen.

verwandte Informationen