Как объединить изображение JPG с клипом MP4 на Windows 10 с помощью FFmpeg
Если вам нужно добавить изображение к вашему видео, чтобы оно отображалось в течение первых 5 секунд, а затем продолжать воспроизведение оригинального клипа, FFmpeg может стать вашим верным помощником. В этой статье мы рассмотрим, как это сделать, не перекодируя ваши видео, чтобы сэкономить время при обработке большого количества клипов.
Подготовка к работе с FFmpeg
FFmpeg — это мощный инструмент командной строки для обработки видео и аудио. Для начала убедитесь, что у вас установлена последняя версия FFmpeg, так как некоторые функции могут зависеть от обновлений.
Начальный код для объединения изображений и видео
Для простого объединения изображения и видео можно использовать следующий код:
ffmpeg -y -loop 1 -t 5 -i %1.jpg -f lavfi -t 1 -i anullsrc -i %1.mp4 -filter_complex "[0:v][2:v]scale2ref[logo]; [logo]setsar=sar=1[logo]; [logo][1:a][2:a]concat=n=2:v=1:a=1" %1-output.mp4
Этот код позволяет вам добавлять изображение JPG в начале видео. Однако могут возникнуть проблемы с зависанием FFmpeg на определенных кадрах.
Проблема с зависанием FFmpeg
Если ваш FFmpeg зависает на 69-м кадре и не продвигается дальше, это может быть связано с несоответствием частоты кадров между видео и изображением. В некоторых версиях FFmpeg, включая 7.1, присутствуют ошибки, которые могут привести к подобному поведению.
Альтернативный подход без зависания
Чтобы избежать зависания и несоответствия частоты кадров, мы можем использовать другие фильтры, такие как tpad
и overlay
. Вот обновленный код:
ffmpeg -y -i 1.jpg -f lavfi -t 5 -i anullsrc -i 1.mp4 -filter_complex "[2:v]tpad=start_duration=5[pv];[0:v][pv]scale=rw:rh[logo];[logo]setsar=sar=1[logo];[logo]overlay=enable=between(t\,0\,5)[outv];[1:a][2:a]concat=n=2:v=0:a=1[outa]" -map "[outv]" -map "[outa]" 1-output.mp4
Пояснение параметров команды
tpad=start_duration=5
: добавляет черные рамки в начале видео в течение 5 секунд.scale=rw:rh
: масштабирует изображение до размера видео.overlay=enable=between(t\,0\,5)
: накладывает изображение на видео в течение первых 5 секунд.concat=n=2:v=0:a=1
: объединяет 5 секунд пустого звука с оригинальным аудиотреком.
Тестирование кода на примере
Для тестирования вы можете создать образцы видео и изображений. Вот команды, которые помогут вам это сделать:
# Создание тестового изображения
ffmpeg -y -f lavfi -i testsrc=s=100x100:r=1:d=1 -frames:v 1 -update 1 1.jpg
# Создание тестового видео
ffmpeg -y -f lavfi -i testsrc=size=192x108:rate=10 -f lavfi -i sine=frequency=200 -acodec aac -t 30 1.mp4
Затем вы можете протестировать ваше видео с использованием одной из приведенных ранее команд.
Заключение
Объединение изображений и видео с помощью FFmpeg может показаться сложным, особенно при обработке большого объема файлов. Однако, следуя правильным шагам и используя предложенные команды, вы сможете легко добавить изображения к вашим клипам, не теряя времени на перекодирование. Если у вас возникнут дополнительные вопросы или потребуется помощь, не стесняйтесь задавать их сообществу.