Estou fazendo um vídeo a partir de uma única imagem usando ffmpeg e desenho um texto na parte superior do vídeo.
Como posso drawtext
sobrepor o tamanho do vídeo dimensionado em vez da escala da imagem?
No momento, quando adiciono um texto, o X e o Y começam no canto superior esquerdo da imagem, e não no vídeo dimensionado em si. A imagem tem dimensões menores que a escala do vídeo, então preciso desenhar o texto independentemente do tamanho da imagem. Se o texto sair da escala da imagem, ele será cortado, embora a borda preta não preenchida do vídeo dimensionado restante ainda esteja lá.
Este é o comando que estou usando.
ffmpeg -loop 1 -r 1 -i image.jpg -b:v 1M -vf "scale=320:240, drawtext=fontfile=/usr/share/fonts/truetype/dejavu/DejaVuSerif-Bold.ttf: text='Test Text': x=200: y=100: fontsize=30: [email protected]: box=1: [email protected]" -t 20 output.mp4
Responder1
Se a imagem for a única fonte de vídeo, então o vídeoé apenasa imagem e "sobreposição do canto superior esquerdo do vídeo"significa o mesmo que"sobreposição do canto superior esquerdo da imagem". Então você está fazendo isso corretamente.
A borda preta que você mencionou énãoparte do vídeo. É inserido poralgunsreprodutores de mídia ao abrir vídeos muito estreitos porque o painel de controle do reprodutor de mídia é mais largo que o vídeo. Por exemplo, o reprodutor de mídia VLC possui controles/barra de menu bastante amplos e preenche o vídeo com bordas grandes. Mas o Windows Media Player não exibe nenhuma borda preta, pois seus controles cabem na largura do vídeo 320p.
Responder2
Funcionou com o comando abaixo:
ffmpeg -loop 1 -i image.jpg -r 29.970 -c:v libx264 -t 15 -pix_fmt yuv420p -profile:v high -level 4.2 -vf "scale=1920:1080, drawtext = text='Resumes in %{eif\:15-t\:d}': x=200: y=100: fontsize=30: [email protected]: box=1: [email protected]" out.mp4