Eu gravo meu desktop com o avconv (também conhecido como ffmpeg) e, em seguida, o dimensiono para 720p.
Eu recentemente adicionei ao meu script para que eles pudessem selecionar uma janela com xwininfo e ela gravaria aquela especificamente.
No entanto, se o formato de saída não for divisível por 2, o codificador ficará fora de controle e não receberei meu vídeo.
Existe uma maneira de corrigir isso dentro do ffmpeg, então eu não tenho que fazer um monte de matemática manual no bash para definir os valores da escala?
É possível ter o filtro de escala subtrair / adicionar um à largura / altura se eles forem desiguais? (redondo?)
É possível aplicar outro filtro após a escala original que poderia realizar isso? (Isso arredondaria vídeos com tamanho de entrada irregular e sem escala)
#!/bin/bash
avconv \
-f x11grab -r $fps -s $capturesize -i :0.0$offset \
-vcodec libx264 \
-vf scale=-1:720 \
-pre:v lossless_ultrafast \
-threads 4 \
-y $@
Algumas listas de discussão antigas sugerem uma função round()
que você pode usar no filtro, mas parece que não consigo acertar a sintaxe. Se funcionar, um filtro scale=round(iw,2):round(ih,2)
aplicado no final resolveria todos os meus problemas de uma só vez. iw
e ih
parecem não funcionar.