
Tenho vários vídeos gravados com meu telefone e eles são bastante grandes devido à sua duração (por exemplo, um vídeo de 3 minutos em 1920x1080 tem mais de 400 MB).
Presumo que seja porque o telefone favorece a duração e a qualidade da bateria em vez do espaço de armazenamento, então pensei que poderia executá-los no Avidemux para recodificá-los e reduzir seu tamanho, sem comprometer muito sua qualidade. Sei que alguma degradação é inevitável. Mas como há muito espaço para compressão, acho que deveria ser possível evitar muitosperceptíveldegradação.
Os vídeos são codificados em H264/AAC em um contêiner MP4. Posso simplesmente copiar o áudio diretamente no Avidemux. Mas como deduzir alguns valores aproximados para o codificador H264 manter a qualidade do vídeo? Não creio que o formato H264 guarde informações sobre seus parâmetros de entrada. É possível escolher um nível de qualidade que aumente totalmente o tamanho do arquivo sem nenhum ganho, e também é possível escolher um nível de qualidade que torne o vídeo péssimo; existe alguma maneira de analisar a entrada para descobrir um "ponto ideal" onde o tamanho do vídeo é reduzido sem afetar muito a qualidade?
Percebo que há algum grau de subjetividade nesta questão; o que seriaEUconsidera degradação “perceptível”? No entanto, dado que os codificadores de vídeo são tradicionalmente parametrizados por qualidades perceptivas, é possível chegar a um intervalo aproximado para alguns parâmetros básicos?
Responder1
Existem várias ferramentas de linha de comando ou GUI que mostram alguns dos parâmetros de codificação simplificados de um vídeo H264, por exemplo. ffmpeg
ou mediainfo
:
$ mediainfo myvideo.mp4
[... look for the "Video" section ...]
Format profile : High@L4
Bit rate : 17.0 Mbps
$ ffprobe -show_streams myvideo.mp4
[... look for a [STREAM] header followed by codec_type=video ...]
profile=High
level=40
bit_rate=16996359
Observe os parâmetros profile
e level
(in ffmpeg
). Não se preocupe com a taxa de bits, ela realmente não diz nada que o tamanho do arquivo não diga. EUpensarque a saída de level
in ffmpeg
é 10× o valor real (ou seja, 40
significa nível 4, 41
significa 4,1, etc).
Avidemux permite que você use configurações simplificadas, onde você pode defini-las e deixar as configurações mais refinadas nos padrões do Avidemux.
Achei que estas são as configurações correspondentes:
- Usar configuração avançadaestá desmarcado.
- Perfilé alto.
- Nível IDCé 4.
Usando um modo mais lentoPredefinidovalor aumentará a qualidade dentro desses parâmetros (até certo ponto).
Você também pode usar a codificação de duas passagens para reduzir ainda mais o tamanho do arquivo. Não conheço uma boa maneira de prever um tamanho de arquivo razoável, mas uma boa taxa de bits média de duas passagens para 1920x1080 é algo entre 6-8Mbps. Não segmente o tamanho do arquivo originalou taxa de bits: você acabará com um arquivo do mesmo tamanho.
No meu caso, simplesmente fazer uma codificação de passagem única no nível de qualidade 20 (padrão do Avidemux) reduziu pela metade o tamanho do arquivo, e a comparação usando Bino e Kinovea não mostrou diferença (para mim), mesmo em quadros desfocados por movimento ou de alto contraste. Fazer a codificação de duas passagens a 7 Mbps (que é o resultado da codificação de passagem única) reduziu esse número para 40%.