AviSynth: Como redimensionar o vídeo para 480, mantendo a proporção

2

Como posso redimensionar um vídeo para 480 pixels de altura no AviSynth, mantendo a proporção? Suponha, para simplificar, redimensionar Bilinear.

Eu tentei:

source = DirectShowSource("TheClip.avi")
resized = BilinearResize(source, target_height=480)
return resized

Mas isso dá o erro

Script error: Invalid arguments to function "BilinearResize"

Nota : A razão pela qual eu não forneço um width é que não sei a largura. O script está sendo usado por um servidor de mídia , que now força o uso de AviSynth para realizar o redimensionamento . Eu não sei o tamanho de qualquer vídeo que alguém possa escolher para jogar - mas eu sei que preciso redimensionar para x480.

Presumo que o AviSynth possa fazer algo como:

resized=BilinearResize(source, source.width*480/source.height, 480)

mas isso também falha:

Resize: YUY2 destination width must be even

eu poderia continuar, tentando encontrar um caminho para AddBorders ou Crop , para fazer a largura mod4, mod8 ou mod16 . Ou eu poderia perguntar aqui e talvez já exista uma maneira de executar o dimensionamento de preservação de aspecto.

    
por Ian Boyd 28.08.2011 / 20:06

1 resposta

3

Estou um pouco enferrujado com o script avisynth, mas acho que isso deve funcionar para obter a largura, com base em uma altura de destino de 480 e um valor de módulo dado ... Eu não pude testá-lo como eu don ' t tem avisynth instalado ...

 srceH = source.height
 srceW = source.width
    AR = (float(srceW) / float(srceH))
 targH = 480
 targW = int(float(targH) * AR)
 coMod = 4   # The codec modulo requirement 
 targW = ((targW / coMod) * coMod)
    
por 11.10.2011 / 20:08