Созданные пользователем композитные видеоролики с хроматическим ключом с помощью FFMPEG / AVCONV
5224
Jimmery
Я хочу создать систему, в которой пользователь может загрузить два видео на веб-сайт, одно из которых имеет синий экран на заднем плане, а веб-сайт использует AVCONV (или аналогичный) для создания сводного видео из двух с использованием техники Chroma Key ( он же синий скрининг).
Можно ли использовать AVCONV таким образом?
Согласно этому посту на SO статическое изображение может быть Chrome Keyed в фоновом режиме. Но можно ли сделать то же самое с видео?
Я также хотел бы знать, должны ли два видео быть одинаковой длины и формата, прежде чем они могут быть объединены? Есть ли какие-то другие технические соображения, на которые я должен обратить внимание, чтобы иметь возможность предложить такую услугу?
Воспроизводится фоновое видео и клип с зеленым экраном собаки в качестве второго трека, сложенного сверху. Он использует хроматический ключ (установлен на зеленый цвет с некоторой дисперсией), чтобы применить альфа к зеленым областям, позволяя прозрачному фону просвечивать. Они in=XXXпросто усекают какой-то ведущий мусор на используемых видеоклипах.
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.
Таким образом, технически не может быть сделано, но вы нашли отличную работу вокруг. Большое спасибо!
Jimmery 11 лет назад
0
Рад помочь :) ... если вы используете этот метод, не могли бы вы опубликовать, как вы сделали это здесь, в качестве ответа, чтобы помочь другим людям? Я также был бы лично заинтересован.
evilsoup 11 лет назад
0
Фильтры frei0r в ffmpeg могут это сделать, но я не уверен, что ffmpeg может поддерживать использование фильтров frei0r, которые используют два входа. Говоря о frei0r, я также не уверен, может ли ffmpeg поддерживать фильтры frei0r «mixer2» и «mixer3».
LordNeckbeard 11 лет назад
1
@LordNeckbeard, это действительно хороший момент, я сейчас собираю новую версию ffmpeg с --enable-libfrei0r, протестирую фильтр bluescreen0r позже сегодня / завтра.
evilsoup 11 лет назад
0
Я буду заинтересован в ваших результатах.
LordNeckbeard 11 лет назад
0
@evilsoup Я ищу наложение на видео в реальном времени, но одновременно я хочу увидеть три видео в одном потоке, возможно ли это, если да, не могли бы вы помочь, предоставив код?
Thirumalai murugan 11 лет назад
0
@Thirumalaimurugan Я бы порекомендовал задать этот вопрос в качестве отдельного вопроса (возможно, связать с ним, если вы считаете это актуальным), чтобы вы могли углубиться в детали, а другие люди взглянут на проблему.
evilsoup 11 лет назад
0
@evilsoup http://superuser.com/questions/581386/avconv-overlay-for-live-video Я разместил новый вопрос, пожалуйста, посмотрите и верните меня обратно спасибо
Thirumalai murugan 11 лет назад
0
0
Ravikant Tiwari
хроматический ключ доступен в ffmpeg с версии 3.0, перед этим вы можете использовать опцию colorkey