Ich habe es geschafft, einen ffmpeg-Filter-Komplex zusammenzustellen, der:
- Skaliert eine FBI-Warnung (fbi.mp4) auf die Größe ($ w: $ h) eines Trainingsvideos (train.mp4).
- Füllt die FBI-Warnung so auf, dass sie zentriert ist.
- Konzentriert sich das FBI-Warn- und Trainingsvideo zusammen.
- 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:
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).
(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
-map 0:a
oder 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.