Verkettung von Dateien mit unterschiedlichen Codec-Attributen?

0

In der ffmpeg-Dokumentation wird das folgende Codebeispiel gezeigt:

ffmpeg -i input1.mp4 -i input2.webm \ 
-filter_complex "[0:v:0] [0:a:0] [1:v:0] [1:a:0] concat=n=2:v=1:a=1 [v] [a]" \
-map "[v]" -map "[a]" <encoding options> output.mkv

Es steht etwas unterhalb des Beispiels: "Wie Sie diesem Beispiel entnehmen können, werden mehrere Eingabetypen unterstützt, und alles, was von ffmpeg gelesen werden kann, sollte funktionieren. Die Eingaben müssen dieselbe Framegröße haben und eine Handvoll anderer Attribute passen."

Weiß jemand, welche Attribute gleich sein müssen? Im Folgenden sind meine beiden Dateien aufgeführt, die ich zusammenführen möchte, und ich weiß nicht, ob dies angesichts der vielen Unterschiede bei den Attributen überhaupt möglich ist, obwohl beide im .avi-Format vorliegen:

(Anmerkung: file2.avi wurde von einem Bild geloopt, und ich wäre bereit, ein gelooptes Bild auch direkt mit file1.avi zu verknüpfen.)

ffmpeg -i file2.avi
ffmpeg version 2.6.1 Copyright (c) 2000-2015 the FFmpeg developers
  built with Apple LLVM version 6.1.0 (clang-602.0.53) (based on LLVM 3.6.0svn)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/2.6.1 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-libx264 --enable-libmp3lame --enable-libvo-aacenc --enable-libxvid --enable-vda
  libavutil      54. 20.100 / 54. 20.100
  libavcodec     56. 26.100 / 56. 26.100
  libavformat    56. 25.101 / 56. 25.101
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 11.102 /  5. 11.102
  libavresample   2.  1.  0 /  2.  1.  0
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  1.100 /  1.  1.100
  libpostproc    53.  3.100 / 53.  3.100
Input #0, avi, from 'file2.avi':
  Metadata:
    encoder         : Lavf56.25.101
  Duration: 00:05:00.09, start: 0.000000, bitrate: 389 kb/s
    Stream #0:0: Video: mpeg2video (Main) (mpg2 / 0x3267706D), yuv420p(tv), 1000x700 [SAR 1:1 DAR 10:7], 244 kb/s, 47.95 fps, 23.98 tbr, 47.95 tbn, 47.95 tbc
    Stream #0:1: Audio: mp2 (P[0][0][0] / 0x0050), 44100 Hz, stereo, s16p, 128 kb/s
At least one output file must be specified

file1.avi wurde aus einer .mts-Rohvideodatei konvertiert.

ffmpeg -i file1.avi
ffmpeg version 2.6.1 Copyright (c) 2000-2015 the FFmpeg developers
  built with Apple LLVM version 6.1.0 (clang-602.0.53) (based on LLVM 3.6.0svn)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/2.6.1 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-libx264 --enable-libmp3lame --enable-libvo-aacenc --enable-libxvid --enable-vda
  libavutil      54. 20.100 / 54. 20.100
  libavcodec     56. 26.100 / 56. 26.100
  libavformat    56. 25.101 / 56. 25.101
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 11.102 /  5. 11.102
  libavresample   2.  1.  0 /  2.  1.  0
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  1.100 /  1.  1.100
  libpostproc    53.  3.100 / 53.  3.100
Input #0, avi, from 'file1.avi':
  Metadata:
    encoder         : Lavf56.25.101
  Duration: 00:16:28.06, start: 0.000000, bitrate: 6889 kb/s
    Stream #0:0: Video: h264 (High) (H264 / 0x34363248), yuv420p, 1440x1080 [SAR 4:3 DAR 16:9], 6616 kb/s, 59.94 fps, 59.94 tbr, 59.94 tbn, 59.94 tbc
    Stream #0:1: Audio: ac3 ([0] [0][0] / 0x2000), 48000 Hz, stereo, fltp, 256 kb/s
At least one output file must be specified

Vielen Dank für Ihre Hilfe!

Laurence Rosenzweig
quelle

Antworten:

0

Die Pixeldimensionen müssen identisch sein, damit der Verkettungsfilter funktioniert.

In Ihrem Fall haben Sie einige Optionen: entweder eine der Dateien zuschneiden, skalieren oder auffüllen, damit die Pixelabmessungen gleich sind.

Hinweis - Ich musste noch nie mit Audio verketten, daher zeige ich Ihnen nachfolgend, wie Sie dies ohne Audio tun können. Sie sollten in der Lage sein, mit dem folgenden Befehl in Verbindung mit den Audio-Informationen hier herumzuspielen .... Zumindest bis jemand mit mehr Kenntnissen antwortet.

ffmpeg -i file1.avi -i file2.avi -filter_complex "[1:v]pad=1140:1080:(ow-iw)/2:(oh-ih)/2[p1];[0:v][p1]concat=n=2:v=1:a=0[out]" -map [out] ....... [transcode settings]
occvtech
quelle