ffmpeg / avconv força a saída escalonada para ser divisível por 2

9

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.

    
por J V 25.03.2013 / 11:12

3 respostas

7

Depois de muita experimentação, parece que o filtro a seguir foi aplicado depois que outros filtros de escala arredondam a largura e a altura para 2.

scale=trunc(in_w/2)*2:trunc(in_h/2)*2

É basicamente uma coisa dividida, redonda e múltipla, eu simplesmente não tenho a sintaxe correta.

    
por 25.03.2013 / 11:45
9

Como a divisão por 2 ocorre em números ímpares às vezes, deve ser:

-vf scale="trunc(oh*a/2)*2:720"

Isso realiza o que se deseja com a sintaxe -1:720 (manter a proporção original)

    
por 15.11.2013 / 05:53
6

Na verdade, o filtro pode lidar com isso diretamente. Você precisa passar apenas -2 em vez de -1 para o filtro: por exemplo, -vf scale="- 2: 720"

Fiquei surpreso ao descobrir isso em um relatório de bug de 3 anos atrás .

    
por 02.07.2014 / 22:34

Tags