ffmpeg filter_complex concat enthält kein Audio

0

Ich habe es geschafft, einen ffmpeg-Filter-Komplex zusammenzustellen, der:

  1. Skaliert eine FBI-Warnung (fbi.mp4) auf die Größe ($ w: $ h) eines Trainingsvideos (train.mp4).
  2. Füllt die FBI-Warnung so auf, dass sie zentriert ist.
  3. Konzentriert sich das FBI-Warn- und Trainingsvideo zusammen.
  4. Stempelt den Inhalt mit einem gedrehten Wasserzeichen (image.png).

Das Folgende funktioniert bei stummen Videos (* siehe Versionsinformationen für ffmpeg unten):

ffmpeg -y -i fbi.mp4 -i train.mp4 -i $img -filter_complex "
[0:v]            scale=$w:-1                                 [fbi_sca];
[fbi_sca]        pad=$w:$h:($w-iw)/2:($h-ih)/2               [fbi_pad];
[fbi_pad][1:v]   concat=n=2:v=1                              [concat];
[2:v]            rotate=-PI/4:c=none:ow=rotw(iw):oh=roth(ih) [rotate];
[concat][rotate] overlay=(W-w)/2+110:(H-h)/2-90              [out]
" -map [out] -codec:a copy -c:v libx264 final.mp4

Meine Fragen lauten wie folgt:

Kann jemand den obigen Befehl / filter_complex umschreiben:

  1. Ermittelt automatisch die Breite und Höhe des Trainingsvideos (train.mp4), ohne es zuerst untersuchen, analysieren und die Variablen $ w und $ h ausfüllen zu müssen (es ist in Ordnung, wenn ich dies in einem separaten Schritt tun muss, aber ich möchte lieber nicht).

  2. (Wichtiger) Berücksichtigen Sie sowohl Video als auch Audio im Trainingsvideo, so dass:

    ein. Der Filter ist unabhängig davon, in welchen Streams (1 oder 0) Video und Audio angezeigt werden.

    b. Ich kann den gleichen Komplex zum Trainieren von Videos verwenden, die keine Audiospur haben, sondern nur eine Videospur.

    c. Das train.mp4-Audio beginnt an der richtigen Stelle in der verketteten Ausgabe.

* FFMPEG VERSION:

$ ffmpeg -version  

ffmpeg version N-69568-g21051af Copyright (c) 2000-2015 the FFmpeg developers
built with gcc 4.9.2 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-lzma --enable-decklink --enable-zlib
libavutil      54. 18.100 / 54. 18.100
libavcodec     56. 21.102 / 56. 21.102
libavformat    56. 19.100 / 56. 19.100
libavdevice    56.  4.100 / 56.  4.100
libavfilter     5.  9.103 /  5.  9.103
libswscale      3.  1.101 /  3.  1.101
libswresample   1.  1.100 /  1.  1.100
libpostproc    53.  3.100 / 53.  3.100
user3483276
quelle
Ich denke, Sie fehlen möglicherweise -map 0:aoder so ähnlich (je nachdem, welche Datei das Audio enthält. Nun, das ist Ihre Titelfrage zu beantworten, ich weiß nicht, über die Antworten auf 1. und 2.
sup

Antworten:

0

Ich hatte auch das gleiche Problem, ich habe eine Möglichkeit, wie ich in der Lage bin, Audio wieder an diesen Filter anzuhängen, einfach hinzuzufügen

[0: a] aresample = 44100;

Das Audiosignal wird mit 44100 Hz erneut gesampelt (Ändern Sie diesen Wert nach Bedarf), aber es wird nun Ja-Audiosignal vorhanden sein. Hoffentlich hilft es.

89n3ur0n
quelle