Подтвердить что ты не робот

FFmpeg AVFilter наложение/водяные знаки программно

Я пытаюсь программно накладывать изображения или видео поверх другого видео с помощью FFmpeg. Кажется, что AVFilter может это сделать.

Есть много примеров того, как сделать это или подобные вещи с командной строкой, однако я не нашел примеров использования AVFilter программно, кроме документа doc/examples/filtering.c, который помогает мне, но на самом деле недостаточно. Я уже могу декодировать и кодировать видео, мне просто нужно научиться фильтровать декодированные кадры и добавлять водяные знаки.

Существуют ли какие-либо примеры использования libavfilter программно?

Есть ли примеры использования фильтров наложения или фильма?

4b9b3361

Ответ 1

Команда:

ffmpeg –i inputvideo.avi -vf "movie=watermarklogo.png [watermark]; [in][watermark] overlay=10:10 [out]" outputvideo.flv

создает видео с изображением "watermarklogo.png" в верхнем левом углу. Вызов этой команды из другой программы должен быть достаточно простым.

Разбивать это пополам, чтобы понять это:

ffmpeg - это программа, которую вы будете использовать для добавления водяного знака.

-i используется для указания входных файлов.

inputvideo.avi - ваш входной файл, указанный -i.

-vf используется для указания фильтра видео. В этом случае это все в кавычках.

movie=watermarklogo.png загрузит файл, который вы хотите использовать в качестве водяного знака. Здесь мы загружаем файл как источник видео (используя movie) независимо от того, является ли файл видео. В этом случае это изображение.

[watermark] обозначает загруженный файл. Эта метка будет использоваться в остальной части кода.

[in] и [out] относятся к входному потоку и выходному потоку видео.

overlay используется сразу после метки [watermark], так что он ссылается на него. В этом простом случае положим overlay на 10:10. Это означает, что водяной знак будет смещен на 10 пикселей сверху и слева. Если вы хотите в нижнем правом углу, вы должны использовать overlay=main_w-overlay_w-10:main_h-overlay_h-10, где main_w - ширина входного потока, overlay_h - высота файла наложения и т.д.

Наконец, outputvideo.flv - это файл, который вы хотите сохранить.

Дополнительная информация:

Я нашел эту информацию через сайт, о котором Дмитрий упомянул в комментариях. Алекс упомянул, что эта страница может быть слишком сложной для тех, кто новичок в таких вещах. Тем не менее, я никогда не делал ничего подобного, и всего за пару минут у меня были результаты, которые, как мне кажется, ищут.

Примечание. У меня был момент неприятностей, когда я получал ошибку:

error while opening encoder for output stream #0.1

Если у вас такая же проблема, вам, вероятно, потребуется вручную установить частоту дискретизации с использованием параметра -ar (например, -ar 22050).