Adicionar imagem ao vídeo com ffmepg

7

Quero estender o uso básico da marca d'água e colocá-lo no vídeo. Que significa. Tenho entrada de vídeo 720x480 e imagem 720x20. Na saída, eu quero ter vídeo 720x500, onde o aspecto do vídeo é preservado e posicionado na parte superior e a imagem é adicionada na parte inferior.

entrada de vídeo

|--------------------------|
|                          |
|                          |
|                          |
|          720*480         |
|                          |
|                          |
|                          |
|--------------------------|

imagem de entrada

|--------------------------|
|          720x20          |
|--------------------------|

saída de vídeo

|--------------------------|
|                          |
|                          |
|                          |
|          720*480         |
|                          |
|                          |
|                          |
|--------------------------|
|          720x20          |
|--------------------------|

obrigado

Schovi
fonte
Você pode enviar uma imagem para ver o que precisa?
p2or
@poor - em outras palavras, ele está dizendo que deseja anexar a imagem na parte inferior do vídeo. Portanto, a saída deve ser o vídeo original inteiro com a imagem abaixo. (A borda superior da imagem estaria diretamente próxima à borda inferior do vídeo.)
AJ Henderson
11
Eu adicionei um pouco de visualização :)
Schovi

Respostas:

5

Eu acho que provavelmente é mais fácil combinar (empilhar) uma imagem de plano de fundo em tamanho integral (720x500px) com o seu vídeo em ffmpeg, em vez de adicionar o rodapé de 20px ao vídeo. Você pode simplesmente usar o overlay filterpara isso:

ffmpeg \
    -loop 1 -i 720x500.jpg \
    -i 720x480.mp4 \
    -filter_complex overlay=0:0 \
    -t 0:01.48 \ 
    out.m4v

Nota: Neste exemplo, você deve definir a duração do seu vídeo de saída manualmente com o -tparâmetro


Se você não quiser especificar a duração, poderá usar o shortestsinalizador no filtro se usar -loop 1como @LordNeckbeard mencionado nos comentários abaixo:

ffmpeg \
    -loop 1 -i 720x500.jpg \
    -i 720x480.mp4 \
    -filter_complex "overlay=0:0:shortest=1" \
    out.m4v
p2or
fonte
11
Se você usar -loop 1, poderá definir shortest=1no filtro de sobreposição, como em overlay=0:0:shortest=1.
Llogan
@LordNeckbeard Obrigado por suas idéias! Eu atualizei minha resposta.
P2ou
5

Use o filtro vstack :

hstack

ffmpeg -i video.mp4 -i image.png -filter_complex vstack output.mp4

Se a imagem não tiver a mesma largura que o vídeo, redimensione-a com o filtro de escala :

ffmpeg -i video.mp4 -i image.png -filter_complex "[1:v]scale=320:-1[bottom];[0:v][bottom]vstack" output.mp4
llogan
fonte