Proporção correta sem recodificar o arquivo de vídeo

8

Eu tenho um fluxo de vídeo com as seguintes propriedades:

Stream #0:0: Video: mpeg4 (Advanced Simple Profile) (XVID / 0x44495658), yuv420p, 720x416 [SAR 1:1 DAR 45:26], 1908 kb/s, 25 fps, 25 tbr, 25 tbn, 25 tbc

Quando eu o executo no VLC, eu tenho que pressionar "A" para alterar a proporção para "4: 3" para fazer o vídeo mostrar com a proporção correta.

Olhando para os fatos do vídeo, o erro é que a) o vídeo real foi estendido incorretamente nos dados de pixel, ou b) há simplesmente algum valor de metadados que foi definido incorretamente?

Se for o primeiro, sei que posso recodificar o vídeo e alterar a largura e a altura. Mas se o último, o comando ffmpeg para eu correr para corrigir os metadados sem re-codificar o vídeo em si?

    
por forthrin 30.04.2015 / 08:24

2 respostas

22

Existe uma diferença entre a razão de aspecto da amostra (SAR) e a razão de aspecto da exibição (DAR). Se você quiser alterar o vídeo para exibir em 4: 3, será necessário alterar os pixels reais na imagem (dimensionando os pixels e alterando o SAR) ou definindo um sinalizador de metadados no nível do contêiner que diz ao externo media players para esticar a imagem para o seu DAR desejado.

Você não poderá dimensionar os pixels e alterar o SAR sem aplicar um filtro de vídeo. Se você escolher esse método, será necessário transcodificar o arquivo, pois não é possível "transmitir" o fluxo de vídeo durante a aplicação de um filtro de vídeo.

Para dimensionar a imagem e alterar o SAR (durante a transcodificação), tente:

ffmpeg -i <INPUT_FILE> -vf scale=720:540 -c:v <Video_Codec> <OUTPUT_FILE>

Por outro lado, se você quiser apenas alterar o sinalizador de metadados e ajustar o DAR, será possível transmitir o vídeo. Para fazer isso, tente:

ffmpeg -i [INPUT] -aspect 720:540 -c copy [OUPTPUT]

    
por 30.04.2015 / 20:00
2

O ffmpeg não pode alterar os parâmetros de um fluxo de vídeo sem recodificar, o MP4Box (parte do gpac ) e o mkvmerge pode. No caso de um fluxo de vídeo e uma proporção real / correta de 4: 3, você pode tentar:

MP4Box -par 1=3:4 VideoFile.mp4

    "-par" : PixelAspectRatio (adjusts DAR + SAR with respect to the video resolution)
    "1"=   : stream number
    "3:4"  : aspect ratio (lower number 1st!)
    Changes are directly applied to "VideoFile.mp4", no copy

Para verificar antes e depois: ffmpeg -i VideoFile.mp4

    
por 01.02.2018 / 01:12

Tags