Estou usando ffmpeg
para sobrepor uma imagem em um filme. O requisito é girar a imagem em um ângulo arbitrário. Usando filter_complex
, posso sobrepor a imagem girada agora. No entanto, a área de saída da imagem é preenchida em preto e não transparente. Eu verifiquei odocumentos, diz que pode especificar a cor de preenchimento, de acordo comesse, mas não consegui fazê-lo. Alguma ideia?
Copio minha linha de comando aqui:
./ffmpeg -i mersyvideo.mp4 -i avatar.jpg -filter_complex "[1:v] rotate=-30*PI/180:c=black@'0x00':ow=rotw(iw):oh=roth(ih) [rotate];[0:v][rotate] overlay=40:10" -codec:a copy output/overlayavatar.mp4
Responder1
Para preencher as áreas não cobertas com transparente, utilize a opção c=none
:
ffmpeg \
-i mersyvideo.mp4 \
-i avatar.jpg \
-filter_complex "
[1:v]rotate=-30*PI/180:c=none:ow=rotw(iw):oh=roth(ih)[rotate];
[0:v][rotate]overlay=40:10
" \
-codec:a copy \
output/overlayavatar.mp4
Veja orotate
ajuda do filtro:
fillcolor
,c
Defina a cor usada para preencher a área de saída não coberta pela imagem girada. Para a sintaxe geral desta opção, verifique a seção (ffmpeg-utils)"Color" no manual do ffmpeg-utils. Se o valor especial "nenhum" for selecionado, nenhum fundo será impresso (útil, por exemplo, se o fundo nunca for mostrado).
O valor padrão é "preto".