Alterando o codec enquanto mantém o bitrate com ffmpeg

0

Então, eu tenho um monte de arquivos .mp4 e preciso alterar os codecs de áudio e vídeo para poder reproduzi-los no meu dispositivo.

O codec de vídeo é atualmente h264 e eu preciso do mpeg4. O codec de áudio é aac e eu preciso de mp3.

Estou tentando convertê-los por meio desse comando ffmpeg:

ffmpeg -y -i input -s:v 800x480 -c:v mpeg4 -c:a mp3 output

Funciona bem, exceto pela qualidade porque o ffmpeg está usando uma taxa de bits muito baixa.

Minha pergunta agora é se eu preciso especificar uma qualidade / bitrate ou se é possível dizer ao ffmpeg para usar a taxa de bits original de alguma forma.

-vcodec copy não é uma opção porque o codec de vídeo permanece o mesmo.

    
por GreenSmurf 27.07.2017 / 15:08

1 resposta

2

It works fine, except for the quality because ffmpeg is using a very low bitrate.

Os padrões para mpeg4 não são bem escolhidos, então a taxa de bits de destino é bem baixa. Especifique seu próprio alvo com -b:v 2M (dependendo da sua resolução) ou melhor ainda, use qualidade constante com -q:v 5 (como sugerido por Mulvya nos comentários). Neste último caso, valores mais baixos significam melhor qualidade.

My question now is if I need to specify a quality/bitrate or if it is possible to tell ffmpeg to use the original bitrate somehow.

Não - não faria sentido fazer isso. Se você estiver indo de um codec para outro, eles podem ser menos ou mais eficientes. Cada codec oferece qualidade diferente em diferentes taxas de bits - por exemplo, o H.264 é muito mais eficiente do que o MPEG-4 Part II. O H.265 é 30–50% mais eficiente que o H.264, etc. O mesmo vale para os codificadores reais que implementam os codecs: o x264 é mais eficiente que o codificador H.264 de referência, etc.

Portanto, a taxa de bits original pode não funcionar bem. E mesmo mantendo o mesmo codec, se você compactar novamente, talvez queira usar uma taxa de bits ainda maior para evitar a perda de geração .

    
por 27.07.2017 / 21:49