Você pode copiar os metadados existentes de um arquivo para outro sem precisar recodificar o vídeo usando o FFmpeg . Basicamente leva um segundo. Para fazer isso, vamos supor três arquivos:
-
in.mp4
- o arquivo original antes da conversão -
out.mp4
- o arquivo após a conversão do Handbrake -
fixed.mp4
- o arquivo com metadados "corrigidos"
O comando FFmpeg para copiar o registro de metadados completo para o novo arquivo seria:
ffmpeg -i in.mp4 -i out.mp4 -map 1 -map_metadata 0 -c copy fixed.mp4
Explicação da sintaxe:
Para dividi-lo, isso faz o seguinte:
- Pegue dois arquivos de entrada (
in.mp4
eout.mp4
), aos quais são atribuídos os IDs 0 e 1, respectivamente. - Mapeie somente os fluxos de vídeo / áudio / legenda do arquivo 1 para a saída (
-map 1
), portanto, pegamos os fluxos de bits que já foram convertidos - Mapear apenas os metadados do arquivo 0 para a saída (
-map_metadata 0
) - Use o codec de cópia (
-c copy
) para copiar todos os fluxos de bits em vez de recodificar o vídeo.
Depois disso, você pode obviamente renomear fixed.mp4
para out.mp4
.
Prova:
Como exemplo, aqui está parte do registro de metadados do meu arquivo original:
$ mediainfo in.mp4 | grep "Encoded date" | head -n 1
Encoded date : UTC 2012-01-08 11:16:19
Aqui está o arquivo após a conversão do Handbrake:
$ mediainfo out.mp4 | grep "Encoded date" | head -n 1
Encoded date : UTC 2012-12-24 11:39:35
Este é o arquivo final depois de mapear os metadados:
$ ffmpeg -i in.mp4 -i out.mp4 -map 1 -map_metadata 0 -c copy fixed.mp4
[…]
$ mediainfo fixed.mp4 | grep "Encoded date" | head -n 1
Encoded date : UTC 2012-01-08 11:16:19
Se você quer fazer tudo com o FFmpeg:
Na verdade, você não precisa usar o Handbrake se puder usar o FFmpeg, no qual o Handbrake confia. No caso mais simples, você pode fazer sua conversão assim:
ffmpeg -i in.mp4 -c:v libx264 -crf 23 -c:a libfdk_aac -vbr 4 -map_metadata 0 out.mp4
Isso converterá a entrada com o codificador x264 e o áudio FDK-AAC em um arquivo de saída, copiando os metadados originais. Para alterar a qualidade da saída, você pode:
- Altere o valor do CRF para vídeo. Lower significa melhor qualidade. 23 é o padrão, e qualquer coisa abaixo de 18 provavelmente será visualmente sem perdas.
- Altere o parâmetro VBR para áudio. Consulte o Guia de codificação do AAC para obter mais informações.
Leia o guia de codificação x264 no wiki do FFmpeg para saber mais e confira nosso superusuário entrada de blog sobre o FFmpeg para alguns guias e links gerais para respostas úteis.