Ни AVconv, ни FFmpeg в настоящее время не могут это сделать - это одна из основных задач обработки видео, которую они не могут выполнить.
Эти инструменты могут накладывать изображение или видео с прозрачным фоном на другое видео или изображение - это то, к чему вы так привязали этот вопрос. Однако видео с прозрачным фоном должно быть в видеоформате, который поддерживает прозрачность (большинство из них не поддерживают) - я бы использовал qtrle
(кодек Apple Animation). Но они не могут выполнять фактическую хроматизацию (превращая определенный цвет в прозрачный).
Возможно, вы могли бы использовать обходной путь, включающий avconv и ImageMagick, но он был бы довольно интенсивно загружающим ЦП, и я не знаю, насколько хороши ваши результаты. Вам необходимо:
- Превратите видео, которое вы хотите в хроматический ключ, в отдельные кадры с помощью avconv
- Используйте инструмент ImageMagick для преобразования (или mogrify), чтобы выполнить хроматический ключ для каждого отдельного кадра.
- Сшиваем кадры вместе с avconv и размещаем поверх фонового видео
Вы можете упростить процесс, используя трубы.
Чтобы извлечь кадры (создает файлы, которые выглядят как 00001.png, 00002.png и т.д.):
avconv -i input.mp4 %05d.png
Чтобы соединить их вместе и поместить поверх фонового видео после того, как вы запустите ImageMagick поверх них:
avconv -f image2 -r 25 -i %05d.png -i background.mp4 \
-filter_complex '[1:v][0:v]overlay[out]' \
-map [out] -c:v libx264 -crf 23 -preset veryfast output.mp4
-r 25
дает вам частоту кадров 25; если вы хотите другую частоту кадров, просто используйте другое число. Убедитесь, что вы используете ту же частоту кадров, что и в исходном видео. Если вы хотите взять аудио с вашего исходного входа, используйте
avconv -f image2 -r 25 -i %05d.png -i background.mp4 -i input.mp4 \
-filter_complex '[1:v][0:v]overlay[out]' \
-map [out] -map 2:a -c:v libx264 -crf 23 -preset veryfast -c:a copy output.mp4
Обратите внимание, что некоторые версии AVconv (например, версия в репозиториях Ubuntu) не имеют поддержки графов фильтров. Если это так, перейдите на более новую версию avconv или ffmpeg.
Что касается этапа 2 ... На самом деле я не уверен, как это сделать, но я знаю, что ImageMagick может выполнять хроматическую клавиатуру. Вот несколько ссылок, которые вы можете найти полезными:
http://www.imagemagick.org/Usage/photos/#chroma_key
http://www.imagemagick.org/discourse-server/viewtopic.php?t=14394
http://tech.natemurray.com/2007/12/convert-white-to-transparent.html
Из-за различий в освещении и т.д. Между образцами, которые вам дадут, вам придется что-то использовать, чтобы определить точные оттенки синего, чтобы избавиться от них. Возможно, вам придется оставить это на усмотрение ваших пользователей, возможно, используя ffmpeg для создания миниатюры, а затем с помощью пипетки для выбора цвета фона.