O problema é que a taxa de bits padrão para o MPEG-2 é bastante baixa (como na maioria dos outros codificadores de vídeo no ffmpeg, o H.264 é uma exceção). O MPEG-2 também não é a melhor escolha como codec atualmente.
Melhor qualidade para MPEG-2
Você tem algumas opções para usar o MPEG-2:
-
Aumente a taxa de bits. Agora você está usando
-b:v 2500k
. Se for um vídeo HD, você não irá longe com apenas 2,5 MBit / s. Você precisa pelo menos dobrar isso ou até mais para fazer o resultado parecer bom. Por exemplo, use-b:v 6000k -target pal-dvd
.Para 720p, acho que você ainda deve usar uma taxa de bits maior. Lembre-se que os DVDs usam MPEG-2 e chegam a cerca de 4,7 GB por 2 horas de filme, então você acaba com cerca de 5 a 8 MBit / s. O MPEG-2 não é muito eficiente em termos de compactação e funciona melhor em taxas de bits mais altas.
-
Use uma configuração de qualidade específica. Altere
-b:v …
para-qscale:v 2
. O número aqui varia de 1 a 31 e maior significa menor qualidade. Não faz sentido ir além de 4 ou 5. Se você não se importa com a taxa de bits, comece com 2 e veja se isso funciona para você.
Brincar com o número de quadros B, o método de estimativa de movimento ou o tamanho do GOP podem ajustar um pouco a qualidade, mas não resultam em grandes alterações.
Áudio silencioso
Use -f lavfi -i aevalsrc=0
para gerar um fluxo de áudio silencioso. Por exemplo:
ffmpeg -i "in.wmv" -f lavfi -i aevalsrc=0 -shortest -c:v mpeg2video -qscale:v 2 -c:a libmp3lame "out.mpg"
Você pode precisar adicionar -target pal-dvd
ao comando acima para forçar um determinado tamanho de buffer.
Eu escolhi o MP3 como codec. Os arquivos MPEG não podem conter áudio diferente do MPEG Layer I e II, assim como streams PCM, portanto, usar um arquivo Ogg Vorbis silencioso não funcionará, a menos que você converta o fluxo de áudio (que não é o que você está fazendo quando usa-c:a copy
).
Use um codec de vídeo diferente
Estou surpreso que uma TV que reproduz arquivos de vídeo leia MPEG-2, mas não qualquer outra coisa. Pelo menos vídeo MPEG-4 Parte II deve ser suportado (é o que você sabe como "DivX" - um Codificador MPEG-4 Parte II). Então você poderia tentar:
ffmpeg -i "in.wmv" -f lavfi -i aevalsrc=0 -shortest -c:v libxvid -qscale:v 2 -c:a libmp3lame "out.mp4"
Sua TV também pode realmente suportar H.264, mas apenas um determinado perfil. Tente usar o perfil baseline
, por exemplo:
ffmpeg -i "in.wmv" -f lavfi -i aevalsrc=0 -shortest -c:v libx264 -profile:v baseline -crf 23 -c:a aac -strict experimental "out.mp4"
No exemplo acima, usei a opção CRF para definir a qualidade em vez de qscale
. Consulte o guia de codificação H.264 para saber mais.