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 o executo no VLC, tenho que pressionar "A" para alterar a proporção para "4: 3" para fazer o vídeo ser exibido com a proporção correta.
Analisando os fatos do vídeo, o erro é que: a) o vídeo real foi estendido incorretamente nos dados do 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 for o último, qual comando ffmpeg devo executar para corrigir os metadados sem recodificar o vídeo em si?
-c copy
e escalar ao mesmo tempo; no entanto, você pode usar-aspect
para alterar a proporção no nível do contêiner (mas não no nível do fluxo).-aspect
funciona para reproduçãoffplay
, mas não no WMP ou MPC-HC. Ele adiciona um item SAR / DAR adicional àStream #…
linha de informações,FFmpeg/probe/play
mas não parece ser a solução para a reprodução geral. Esticar o vídeo com a janela parece ser a solução mais fácil para a reprodução de MPC-HC.A resposta de Delgado está correta de que o MP4Box pode fazer isso, mas a
-par
opção não funciona da maneira descrita. Com um-out
parâmetro (para não perturbar seu arquivo original):Ao usar
-par stream-number=width:height
, você define a proporção de pixel - ou seja, o resultado da divisão da proporção do dispositivo pela proporção de armazenamento. (Equivalentemente, você está descrevendo a proporção de um pixel de origem.) Por exemplo, suponha que você tenha uma fonte de DVD com 720 × 480 e a proporção de exibição correta seja 4: 3. Para este caso, você precisa:porque (4/3) / (720/480) = 8/9.
Se a fonte representar pixels SD NTSC verdadeiros (nesse caso, apenas os 704 × 480 pixels centrais devem mapear para uma tela 4 × 3, com 8 pixels overscan nos dois lados), o comando correto seria:
porque (4/3) / (704/480) = 10/11 - exatamente a proporção do pixel de referência para o vídeo NTSC de definição padrão.
Para o caso apresentado na pergunta, se é realmente 4: 3, isso fornece uma proporção de pixel muito estranha: (4/3) / (720/416) = 104/135. Tem 720 de largura, o que sugere uma fonte de DVD; é um vídeo de 25 qps, sugerindo PAL, mas o PAR funciona com menos de 1, sugerindo NTSC. Poderia ser 4: 5, suponho (muito próximo a 104: 135), mas não sei de nada que produza essa proporção de pixel; talvez tente primeiro e tente 3: 4 se ainda parecer um pouco esticado demais na horizontal. Se você tem certeza de que são exatamente 4: 3, é claro, basta usar 104: 135.
fonte
O ffmpeg não pode alterar os parâmetros de um fluxo de vídeo sem recodificar, MP4Box (parte do gpac ) e mkvmerge. No caso de um fluxo de vídeo e uma proporção real / correta de 4: 3, você pode tentar:
Para verificar antes e depois:
ffmpeg -i VideoFile.mp4
fonte
Alterar o SAR sem reencodar também trabalha com
ffmpeg
on.mp4
usando oh264_metadata
como Gyan apontou aqui :fonte