Tenho usado este comando há alguns anos para produzir arquivos .ogg (ou qualquer outro formato) a partir de uma série de arquivos .svg no Linux:
ffmpeg -y -r 1.2 -i %06d.svg -qscale:v 10 path.ogg
Funcionou perfeitamente até agora, quando produziu um vídeo com resolução de 100x100, em vez da resolução de 1920x1080 dos arquivos de entrada.
Se eu forçar a resolução de saída para 1920x1080 usando a -s
opção, o vídeo resultante é uma versão ampliada da saída de vídeo 100x100 que eu obtenho sem a -s
opção. Se eu converter os arquivos svg para png usando inkscape
tudo está bem, mas eu gostaria de evitar tornar meu fluxo de trabalho mais complexo.
Aqui você pode encontrar alguns dos arquivos .svg.
Alguma ideia?
Parece que há um bug em versões mais recentes (como 7.1) do FFmpeg (ou talvez na librsvg).
Podemos forçar a resolução de saída usando argumentos
-width
and-height
e :-keep_ar 0
ffmpeg -y -width 1920 -height 1080 -keep_ar 0 -r 1.2 -i %06d.svg -qscale:v 10 path.ogg
Caso queiramos obter a resolução do arquivo SVG, podemos executar:
exiftool 000001.svg
e obter:View Box: 0 0 1920 1080
.(Observe que a execução
ffprobe 000001.svg
mostra100x100
, então não podemos usar o FFprobe).Nota: Usando uma versão mais antiga do FFmpeg (como 4.2.7), o comando original está funcionando bem, e o FFprobe mostra 1920x1080.