Primeiro eu só quero dizer um pouco mais sobre o meu título, não estou me referindo ao fato de que o upscaling não adiciona dados (como frequentemente perguntado quando upscaling) - mas algo diferente.
Exemplo
Eu tenho o vídeo bruto A1 (854x480)
Eu codifico A1 a B1 ignorando escala - mantendo, portanto, mesmo 854x480.
ffmpeg -i C:\A1.mkv -preset veryslow -crf 24 C:\B1.mkv
Eu reproduzo este vídeo em um player e o aprimoro aumentando a janela do player, o vídeo agora é 1092x614, salvo uma captura de tela do frame 88.
Eu agora codifico A1 para C1, especificando a escala 1092x614 (assim como a imagem que temos)
ffmpeg -i C:\A1.mkv -preset veryslow -crf 24 -filter_complex scale=1092:614 C:\C1.mkv
Salvei uma captura de tela do quadro 88 em C1 em seu tamanho original - 1092x614
Como estou usando um Raw Original para ambas as codificações, presumi que as duas capturas de tela ficariam as mesmas - mas não, a codificação upscaled C1 tem uma qualidade muito inferior comparada à codificação upscaled manual B1.
Eu pensei que quando eu upscale manualmente com o meu player e vejo a imagem, o ffmpeg faz o mesmo com a codificação - portanto ele veria a mesma imagem que eu vejo e construiria a codificação baseada nisso, mas como se fosse o mecanismo de renderização O uso do ffmpeg é diferente / não é tão bom.
Existe uma maneira de contornar este problema?
Podemos conseguir semelhante por uma técnica diferente? Tal como editar os metadados do Original Raw A1 e definir a Largura: Altura - fazendo com que qualquer jogador abra o vídeo nesse tamanho inconscientemente aumentando-o na reprodução.
Meu caso de uso para isso é que estou tentando simular dimensões reconhecidas na maioria dos hosts de vídeo principais - qualquer vídeo abaixo de um limite não será codificado pelo host com determinadas configurações.