2016-05-10 2 views
-1

У меня есть следующая команда ffmpeg-cli, которая не дает описанного эффекта в документации. Может быть, это ошибка, или у меня что-то не так с командой.Наложение альфа-изображений на видео с помощью ffmpeg

ffmpeg \ 
    -y \ 
    -i small.mp4 \ 
    -i monkey/monkey_%04d.png \ 
    -filter_complex "[0:v][1:v]overlay=enable='between(t,1,5)'[out1]" \ 
    -map '[out1]' \ 
    output.mp4 

Я ожидаю, что это наложение потока # 1 на вершине # 0 между секундами 1 и 5.

Вы можете загрузить тестовый архив по этой ссылке:

В него включены активы для тестового случая.

Билд Я попытался с:

  • FFmpeg-3.0.2-64bit-статическими (доступно онлайн)
+0

Ваша последовательность изображений составляет 21 фрейм, а с ffmpeg, в которой используется частота кадров 25, поток изображения заканчивается до начала наложения. Как быстро должны идти изображения и должны ли они зацикливаться? – Mulvya

+0

Это тестовый пример, поэтому им не нужно зацикливаться, и хорошо, если закончить раньше, чем указано в опции enable. Несмотря на это, выходное видео не имеет какой-либо оверлейной последовательности, с которой я сейчас сталкиваюсь. –

ответ

3

FFmpeg является процессор повременной т.е. выравнивает пакеты, метки времени, так вам необходимо выровнять начало последовательности изображений с началом наложения.

ffmpeg \ 
    -y \ 
    -i small.mp4 \ 
    -i monkey/monkey_%04d.png \ 
    -filter_complex "[1:v]setpts=PTS-STARTPTS+(1/TB)[1v]; \ 
    [0:v][1v]overlay=enable='between(t,1,5)'[out1]" \ 
    -map '[out1]' \ 
    output.mp4 
+0

Вау, спасибо. Не могли бы вы немного уточнить фильтр, который вы использовали для дальнейшего уточнения? –

+1

Несомненно. setpts генерирует новые метки времени. Выражение говорит, чтобы взять текущую относительную метку времени «PTS-STARTPTS» и добавить к ней 1 секунду. «TB» - это единица времени, то есть интервал тика, который является наименьшим единицей измерения времени для видеопотока, поэтому «3/TB» будет представлять собой интервал в 3 секунды. – Mulvya

+0

О, и можно ли указать точные номера кадров, а не секунды, как временные метки (или хотя бы миллисекундную точность)? Поскольку у меня есть номера кадров, чтобы наложить последовательность изображений, а не секунды (хотя я мог бы легко сменить их на миллисекунды, если это необходимо). –

Смежные вопросы