Benutzergenerierte Chroma-Key-Composite-Videos mit FFMPEG / AVCONV
5323
Jimmery
Ich möchte ein System erstellen, bei dem ein Benutzer zwei Videos auf eine Website hochladen kann, von denen eines im Hintergrund einen blauen Bildschirm hat, und die Website verwendet AVCONV (oder ähnliches), um mithilfe der Chroma-Key- Technik ein zusammengesetztes Video zu erstellen ( aka blaues Screening).
Kann AVCONV auf diese Weise verwendet werden?
Laut diesem Post auf SO kann ein statisches Bild in den Hintergrund Chrome Keyed werden. Aber kann man das auch mit einem Video machen?
Ich möchte auch wissen, ob die beiden Videos die gleiche Länge und das gleiche Format haben müssen, bevor sie zusammengefügt werden können. Gibt es andere technische Überlegungen, die ich prüfen sollte, um einen solchen Service anbieten zu können?
Dies spielt ein Hintergrundvideo und einen Green-Screen-Clip eines Hundes als zweiten Titel, der oben zusammengesetzt ist. Es verwendet einen Chroma-Key (grün eingestellt mit etwas Abweichung), um das Alpha auf die grünen Bereiche anzuwenden, sodass der zusammengesetzte Hintergrund durchscheinen kann. Sie in=XXXsind nur zum Abschneiden einiger führender Abfälle in den verwendeten Videoclips.
2
evilsoup
Neither AVconv nor FFmpeg can currently do this - it's the one major video processing task that they cannot do.
These tools can overlay an image or video with a transparent background over another video or image - which is what that SO question you linked to wanted. However, the video with the transparent background needs to be in a video format that supports transparency (most of them don't) - I'd use qtrle (Apple's Animation codec). But they cannot do the actual chroma-keying (turning a certain colour transparent).
You could probably use a workaround involving avconv and ImageMagick, but it would be rather CPU-intensive, and I don't know how good your results would be. You would need to:
Turn the video you want to chroma-key into individual frames with avconv
Use ImageMagick's convert (or mogrify) tool to do the chroma-keying on each individual frame
Stitch the frames back together with avconv & place it over the background video
You may be able to simplify the process using pipes.
To extract the frames (produces files that look like 00001.png, 00002.png, etc):
avconv -i input.mp4 %05d.png
To stitch them back together & put on top of your background video after you've run ImageMagick over them:
-r 25 gives you a frame rate of 25; if you want another frame rate, just use a different number. Make sure you use the same frame rate as the original input video. If you want to take the audio from your original input, use
Note that some versions of AVconv (like the version in the Ubuntu repos) don't have support for filtergraphs. If that's the case for you, upgrade to a newer version of avconv or ffmpeg.
As for stage 2... I'm actually not sure how to do it, but I know that ImageMagick can do chroma-keying. Here are a few links you may find useful:
Due to differences in lighting etc between the samples people will give you, you'll have to use something to detect the exact shades of blue to get rid of. You'll probably have to leave that up to your users, perhaps using ffmpeg to create a thumbnail, and then using an eyedropper to choose the background colour.
Technisch kann also nichts getan werden, aber Sie haben eine hervorragende Arbeit gefunden. Vielen Dank!
Jimmery vor 11 Jahren
0
Freut mich zu helfen :) ... Wenn Sie diese Methode verwenden, können Sie bitte hier posten, wie Sie es getan haben, um anderen Menschen zu helfen? Ich wäre auch persönlich interessiert.
evilsoup vor 11 Jahren
0
Die frei0r-Filter in ffmpeg können dies zwar tun, aber ich bin mir nicht sicher, ob ffmpeg die Verwendung von frei0r-Filtern mit zwei Eingängen unterstützen kann. Apropos frei0r, ich bin mir auch nicht sicher, ob ffmpeg die frei0r-Filter "mixer2" und "mixer3" unterstützen kann.
LordNeckbeard vor 11 Jahren
1
@LordNeckbeard das ist ein wirklich guter Punkt, ich kompiliere gerade eine neue Version von ffmpeg mit --enable-libfrei0r, werde den bluescreen0r-Filter später / morgen testen.
evilsoup vor 11 Jahren
0
Ich werde an Ihren Ergebnissen interessiert sein.
LordNeckbeard vor 11 Jahren
0
@evilsoup Ich suche nach der Überlagerung von Live-Videos. Zu einem Zeitpunkt möchte ich drei Live-Videos in einem einzigen Stream sehen. Ist dies möglich? Wenn ja, können Sie helfen, indem Sie den Code angeben?
Thirumalai murugan vor 11 Jahren
0
@Thirumalaimurugan Ich würde empfehlen, diese Frage als separate Frage zu stellen (wenn Sie es für relevant halten, möglicherweise mit dieser zu verknüpfen), können Sie auf diese Weise detaillierter eingehen und die anderen Personen werden einen Blick auf das Problem werfen
evilsoup vor 11 Jahren
0
@evilsoup http://superuser.com/questions/581386/avconv-overlay-for-live-video Ich habe die neue Frage gepostet. Bitte schauen Sie sich diese an und kehren Sie zurück, danke
Thirumalai murugan vor 11 Jahren
0
0
Ravikant Tiwari
chroma key ist in ffmpeg ab Version 3.0 verfügbar, bevor Sie die colorkey-Option verwenden können