Redimensiona vídeos com diferentes larguras para uma proporção de preservação de altura fixa com ffmpeg

17

Gostaria de converter muitos arquivos de vídeo em vídeo em flash para o site de nossa empresa. Eu tenho uma exigência de que todos os vídeos devem estar no formato 360p, então o tamanho deles seria Nx360.

O FFMpeg usa o argumento -s para especificar a resolução de destino como W x H . Não sei o W idth, pois depende da proporção do arquivo de origem. Se a origem for 640x480, o destino será 480 x 360. Se a fonte for 848x480, o destino será 636x360.

Existe uma maneira de fazer isso com alguma mudança de ffmpeg? Que preservará a proporção e eu apenas especificarei a altura do vídeo alvo?

Eu poderia resolvê-lo facilmente criando um programa que iniciará o ffprobe para obter o tamanho do vídeo de origem, calcular a proporção e, em seguida, calcular uma nova largura.

    
por Axarydax 19.10.2010 / 15:07

3 respostas

15

Você pode tentar adicionar este filtro de vídeo:

-vf "scale=-1:360" 

-1 neste caso significa variável / desconhecido, portanto, esse filtro redimensiona o vídeo para preservar a proporção da entrada, mantendo 360 como a altura.

Para mim, isso alcançou o mesmo resultado que você está procurando.

    
por 01.02.2011 / 10:51
6

Ainda não há pontos suficientes para comentar sobre uma resposta existente, mas isso está seguindo a resposta do user65600 e indo mais longe quando codecs específicos exigem uma largura / altura que é divisível por 2 (por exemplo, libx264)

Quando você usa -1 (variável / desconhecido), ele pode retornar um número ímpar. Para garantir um # ainda, você tem que usar algo como trunc(ow/a/2)*2 , que calculará automaticamente o mais próximo # enquanto preserva a proporção.

-vf "scale=trunc(ow/a/2)*2:360"

Fonte: link

    
por 18.05.2013 / 10:31
3

-vf "scale=trunc(ow/a/2)*2:360" não funciona devido a erro de "auto-referência".

Em vez disso, os seguintes trabalhos:

-vf "scale=-1:360, scale=trunc(iw/2)*2:360"

A auto-referência é assim evitada por dois escalonamentos consecutivos, e o arredondamento é feito no segundo passo. Fofo, não é? :)

    
por 25.10.2013 / 07:43

Tags