Verketten von Dateien aus Rawvideo

Verketten von Dateien aus Rawvideo

Ich habe Adobe After Effects verwendet, um ein einfaches Outro von ca. 10 Sekunden für ein Video zu erstellen und es in das verlustfreie AVI-Format ( ) exportiert . Soweit ich weiß, gibt es in After Effects keine Möglichkeit, dem Video einen leeren Audiostream zu geben, und der Concat-Demuxer von FFmpeg erfordert, dass jeder Videostream einen Audiostream hat. Daher habe ich Folgendes ausgeführt, um etwas Stille hinzuzufügen und das Ganze in / rawvideoneu zu kodieren :rawvideoh264opus

ffmpeg -i "YouTube Outro.avi" -f lavfi -i aevalsrc=0 -map 0 -map 1 -shortest -c:v libx264 -c:a libopus "Outro.mkv"

Die Probleme treten auf, wenn ich versuche, diese Datei mit meinem Originalvideo zu verknüpfen. Ich habe Folgendes in einer Datei:

file Original.mkv
file 'YouTube Outro.mkv'

Infos zu diesen Eingängen:

Input #0, matroska,webm, from 'Original.mkv':
  Metadata:
    ENCODER         : Lavf58.65.100
  Duration: 00:42:45.54, start: -0.007000, bitrate: 2521 kb/s
    Stream #0:0(eng): Video: h264 (High), yuv420p(tv, bt709/unknown/unknown, progressive), 1920x1080 [SAR
 1:1 DAR 16:9], 25 fps, 25 tbr, 1k tbn, 50 tbc (default)
    Metadata:
      ENCODER         : Lavc58.115.102 libx264
      DURATION        : 00:42:45.541000000
    Stream #0:1: Audio: opus, 48000 Hz, stereo, fltp (default)
    Metadata:
      HANDLER_NAME    : SoundHandler
      VENDOR_ID       : [0][0][0][0]
      ENCODER         : Lavc58.115.102 libopus
      DURATION        : 00:42:45.368000000
Input #1, matroska,webm, from 'YouTube Outro.mkv':
  Metadata:
    DATE            : 2021-03-10T23:13:19.647059
    ENCODER         : Lavf58.65.100
  Duration: 00:00:08.97, start: -0.007000, bitrate: 74 kb/s
    Stream #1:0: Video: h264 (High 4:4:4 Predictive), yuv444p(tv, progressive), 1920x1080, 29.97 fps, 29.
97 tbr, 1k tbn, 59.94 tbc (default)
    Metadata:
      ENCODER         : Lavc58.115.102 libx264
      DURATION        : 00:00:08.949000000
    Stream #1:1: Audio: opus, 48000 Hz, mono, fltp (default)
    Metadata:
      ENCODER         : Lavc58.115.102 libopus
      DURATION        : 00:00:08.968000000
At least one output file must be specified

... und verwenden Sie den concatDemuxer, um sie zu verketten:

ffmpeg -f concat -safe 0 -i list.txt -c copy Final.mkv

Die resultierende Datei enthält das gesamte Originalvideo und ihr Zeitstempel gibt die hinzugefügten 10 Sekunden wieder. Wenn dieser Zeitstempel jedoch erreicht ist, wird nichts angezeigt. Tatsächlich friert das Video einige Frames ein, bevor das Originalvideo endet, und bleibt bis zum Ende der Videodauer auf diesem Frame hängen.

Was mache ich hier falsch, dass es so schwer ist, diese h264/ opusDateien zu verketten?

Antwort1

Die Attribute müssen gleich seinfür die korrekte Verkettung mit demConcat-Demuxer. Pixelformat, Profil und Kanallayout variieren je nach Eingabe. Sorgen Sie dafür, dass sie übereinstimmen Original.mkv:

ffmpeg -i "YouTube Outro.avi" -f lavfi -i anullsrc=cl=stereo:r=48000 -map 0 -map 1 -c:v libx264 -crf 18 -vf format=yuv420p -c:a libopus -shortest "Outro.mkv"

verwandte Informationen