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
quelle
-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.Antworten:
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
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.
quelle