Создание видео с 5 изображениями с эффектом fadeIn / out в ffmpeg

С 5 изображениями я должен создать видео 60 секунд в ffmpeg, каждое изображение должно отображаться в течение 15 секунд. Через 15 секунд первое изображение должно исчезнуть, и второе изображение должно исчезнуть, после того, как второе изображение должно исчезнуть, третье изображение должно исчезнуть в .etc. Прочтите, как я могу достичь этого, используя команды ffmpeg.

Погружение в черный

Пример затухания

Это не так тривиально, как вы, вероятно, ожидаете, но это определенно возможно. Пример, где каждое изображение отображается в течение 5 секунд, и каждый из них имеет затухание, которое длится 1 секунду.

ffmpeg \ -loop 1 -t 5 -i input0.png \ -loop 1 -t 5 -i input1.png \ -loop 1 -t 5 -i input2.png \ -loop 1 -t 5 -i input3.png \ -loop 1 -t 5 -i input4.png \ -filter_complex \ "[0:v]fade=t=out:st=4:d=1[v0]; \ [1:v]fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[v1]; \ [2:v]fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[v2]; \ [3:v]fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[v3]; \ [4:v]fade=t=in:st=0:d=1,fade=t=out:st=4:d=1[v4]; \ [v0][v1][v2][v3][v4]concat=n=5:v=1:a=0,format=yuv420p[v]" -map "[v]" out.mp4 

Используемые опции и фильтры:

  • -t чтобы установить продолжительность в секундах каждого входа.

  • fade исчезают и исчезают. d – длительность затухания. Когда он начинается.

  • concat для объединения (или объединения) каждого изображения.

  • format для вывода схемы субсэмплирования цветности, которая совместима с игроками, не поддерживающими FFmpeg, при кодировании с помощью libx264 (по умолчанию для выхода MP4, если он поддерживается вашей сборкой).

Crossfade

Пример кроссфейда

Использование ffmpeg

Необработанный пример с использованием фильтра blend . Crossfade устанавливается на 0,5 секунды.

 ffmpeg \ -loop 1 -t 1 -i 001.png \ -loop 1 -t 1 -i 002.png \ -loop 1 -t 1 -i 003.png \ -loop 1 -t 1 -i 004.png \ -loop 1 -t 1 -i 005.png \ -filter_complex \ "[1:v][0:v]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b1v]; \ [2:v][1:v]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b2v]; \ [3:v][2:v]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b3v]; \ [4:v][3:v]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b4v]; \ [0:v][b1v][1:v][b2v][2:v][b3v][3:v][b4v][4:v]concat=n=9:v=1:a=0,format=yuv420p[v]" -map "[v]" out.mp4 
  • Вероятно, вы можете устранить «прокладки» изображения, используя более подходящее выражение в blend .

Использование melt

Использование melt из MLT Multimedia Framework может быть проще для этой задачи:

 melt -verbose \ -profile atsc_720p_25 \ 001.png out=50 \ 002.png out=75 -mix 25 -mixer luma \ 003.png out=75 -mix 25 -mixer luma \ 004.png out=75 -mix 25 -mixer luma \ 005.png out=75 -mix 25 -mixer luma \ -consumer avformat:output.mp4 vcodec=libx264 an=1 
  • Используйте профиль, который соответствует вашим входным файлам. Вы можете перечислить профили с профилями melt -query profiles и получить информацию о конкретном профиле, таком как melt -query "profile=atsc_720p_25" .

  • out устанавливает продолжительность каждого изображения. Значение находится в кадрах. В этом примере используется профиль, который устанавливает частоту кадров 25, поэтому 25 кадров равны 1 секунде.

  • mix устанавливает длительность выцветания. Значение находится в кадрах.

  • mixer устанавливает тип смеси.

  • Для получения дополнительной информации см. Документацию MLT и документацию о расплавлении .

Я написал общий сценарий bash, который берет путь к папке изображений и выводит видео с кроссфейдом с ffmpeg:

https://gist.github.com/anguyen8/d0630b6aef6c1cd79b9a1341e88a573e

Скрипт по существу смотрит на изображения в папке и выводит команду, похожую на ответ от @LordNeckbeard выше, и выполняет эту команду. Этот скрипт помогает, когда у вас много изображений в папке и вы не хотите вручную вводить команду с депрессией.

  • Ffmpeg: Ошибка входа в трубу
  • Преобразование изображений в видео с использованием FFMPEG в Windows
  • Преобразование ffmpeg в MP4 не работает
  • Последовательность изображений для видеоstreamа?
  • Файл MP4 игнорирует настройки субтитров в VLC
  • Ffmpeg удалить части без движения
  • Youtube не нравится некоторые видеоролики
  • Как удалить несколько сегментов из видео, сохраняя звук, используя FFmpeg?
  • Какую команду FFmpeg я использую для перехода через FLV в MP4?
  • Ffmpeg приостанавливает видео каждые 10 секунд в течение 3 секунд
  • Как использовать эффект медленного движения в определенный интервал времени с помощью ffmpeg
  • Interesting Posts

    Как открыть pdf-файл в Windows Phone 8?

    Как OSX должен работать без мыши?

    Что означает «возможное преобразование с потерями» и как его исправить?

    Невозможно создать логический диск, все диски являются динамическими

    Построить архив Zip, специальные случаи

    как получить сообщение при получении уведомления «kCTMessageReceivedNotification» на IOS5

    Как определить, есть ли у меня порт USB3 в моем ноутбуке?

    «Наблюдаемое поведение» и свобода компилятора для исключения / преобразования элементов кода c ++

    Прозрачные изображения с помощью C # WinForms

    Отображение выбранной раскладки клавиатуры в области уведомлений панели задач Windows 7

    Демо-версия локальной редакции и jqGrid 4.4.1

    Android Studio не развертывает изменения в приложении

    Код отступов в Sublime text 2?

    Как сделать пакетный файл завершенным после возникновения ошибки?

    Ключ продукта Windows 7 блокируется сервером активации

    Давайте будем гением компьютера.