Como converter rapidamente mp4 para webm usando ffmpeg?

15

Desculpe perturbá-lo, mas estou em uma espécie de problema. Eu tenho que converter arquivos 76 mp4 para webm com o propósito de um site que usa vídeos em HTML5. Estou falando de 10 Gb de arquivos mp4 ... Eu sei que posso simplesmente pedir ao ffmpeg para fazer isso usando:

ffmpeg -i input_file.mp4 output_file.webm

Claro que vou fazer de forma recursiva:

find ./ -name '*.mp4' -exec bash -c 'ffmpeg -i "$0" "${0%%.mp4}.webm"' {} \;

Eu até tentei algo que encontrei em algum lugar na internet:

ffmpeg -i input_file.mp4 -cpu-used 4 -threads 8 output_file.webm

Mas a coisa é que não vai demorar menos de uma semana !!! O que estou fazendo de errado? Existe alguma maneira possível de acelerar isso? Se eu converter para ogg vou ganhar em velocidade? Por favor ajude !!!

    
por pr.nizar 21.03.2013 / 00:46

2 respostas

10

Transcodificação de vídeo leva tempo. Também é preciso muito mais conhecimento sobre os parâmetros de codificação; É improvável que os padrões do ffmpeg sejam adequados para você e podem nem mesmo criar um arquivo de saída utilizável.

Aqui está um começo:

link

Essas configurações serão codificadas para uma determinada taxa de bits média (taxa de bits de vídeo de 3900kbit), portanto, haverá picos na taxa de bits.

O MP4 e o WebM usam codecs de vídeo diferentes, portanto não há atalho; o vídeo deve ser transcodificado.

A velocidade de codificação, é claro, irá variar imensamente, dependendo das configurações de tamanho de quadro, taxa de quadros e qualidade. Para uma codificação 720p, você pode esperar codificar aproximadamente 1: 1 (isto é, 10 horas de vídeo em 10 horas) em uma CPU dos últimos dois anos. Se você fizer a codificação ABR de duas passagens, como no exemplo dado no link, quase o dobro disso.

    
por thomasrutter 21.03.2013 / 00:56
7

Dobre isso ou meio corte isso? Então é um beco sem saída .. Eu não vou estar jogando com taxas de bits, eu nunca sei o que esperar de qualidade ou tamanho .. Eu acho que vou ficar com este e fazer o cliente esperar até que a conversão acabe ..

find ./ -name '*.mp4' -exec bash -c 'ffmpeg -i "$0" -vcodec libvpx -acodec libvorbis -cpu-used 5 -threads 8 "${0%%.mp4}.webm"' {} \;

Estou postando para futuros usuários, na verdade ganhei em velocidade, mas meu processador está funcionando como o inferno: 60 a 80% em cada núcleo! Agora eu acho que levará menos tempo: 3 dias ao invés de 6 ou 7 .. Eu espero que isso não acabe com isso ... ^ _ ^

Obrigado mesmo assim, cara!

Edit: Removido o switch -sameq após comentários de LordNeckbeard e neon_overload -sameq não significa a mesma" qualidade "

    
por pr.nizar 21.03.2013 / 09:54