1

Я пытаюсь наложить файл PNG с прозрачностью в видео MP4

исходное видео - 20 секунд, и я хочу наложить прозрачный png с 00:10 до 00:20 исходного видео, а затем добавить 00:10 - 00:14.

     0s                                10s      14s                       20s
video |---------------------------------+--------+-------------------------|
png   | . . . . . . . . . . . . . . . . +========+-------------------------|
                                        |        |                         |
                    start png fade-in _/         |                         |
                                                 |                         |
                                end png fade-in _/                         |
                                                     end of .png overlay _/

Я не могу создать эффект png fadein. Я пытался создать прозрачный мов с

ffmpeg -loop 1 -i file.png -frames:v 300 -vf 'fade=in:0:120' \
           -pix_fmt rgba -vcodec png  output.mov

и объединение 2 файлов с

../ffmpeg -y -i video.mp4 -i output.mov -filter_complex \
            "[0:v][1:v] overlay=170:150:enable='between(t,10,20)'" final.mp4

но финальное видео отображает mov в мгновение ока, не исчезая.

Есть что-то, чего мне не хватает?

Заранее спасибо,

1 ответ1

3

Вам не нужно создавать оверлей mov как отдельный шаг.

Сначала создайте оверлей как фильм следующим образом:

-loop 1 -i watermark.png

Затем используйте фильтр постепенного изменения, чтобы постепенно исчезать в течение 4 секунд (то есть 100 кадров):

замирание = в:0:100

А затем задержите его на 10 секунд, чтобы начать позже таким образом:

setpts = PTS-STARTPTS+10/ ТБ

Ваша команда становится:

ffmpeg -i video.mp4 -loop 1 -i watermark.png -filter_complex \  
"[1:v]fade=in:0:100[v1]; [0:v]setpts=PTS-STARTPTS[v0];  \  
[v1]setpts=PTS-STARTPTS+10/TB[v3];[v0][v3]overlay=eof_action=pass[out1]"  \  
-map [out1] <other parameters> overlaidoutput.mp4

Наложение будет продолжаться до конца. И, конечно же, вы можете использовать множество параметров тонкой настройки в разделе « другие параметры ».

ПРИМЕЧАНИЕ: я использовал 100 кадров в течение 4 секунд, потому что я использовал PAL 25 кадров в секунду. Вы можете изменить это на 120 кадров, если вы работаете в 30 кадрах в секунду.


Если вам нужно завершить наложение в определенный момент времени, вы также можете использовать параметр enable :

ffmpeg -i video.mp4 -loop 1 -i watermark.png -filter_complex \  
"[1:v]fade=in:0:100[v1]; [0:v]setpts=PTS-STARTPTS[v0];  \  
[v1]setpts=PTS-STARTPTS+10/TB[v3];  \  
[v0][v3]overlay=enable='between(t,10,12)':eof_action=pass[out1]"  \  
-map [out1] <other parameters> overlaidoutput.mp4  

Это заканчивает наложение на 12 секунд. Убедитесь, что вы используете ffmpeg ver 2 или выше.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .