Eu estava tentando fazer algumas edições e codificação de vídeo. Tenho um vídeo SD chamado que supostamente deveria estar na proporção de 4:3
. Mas em vez de 640x480
, é 720x480
. Curiosamente, quando eu jogo com um reprodutor de mídia, o que vejo é 640x480
– não é tocado como 720x480
!
O que está acontecendo ?! Como isso poderia ser possível?
Resposta
525/60 vídeo SD digitalizado de acordo com a Gravação 601 realmente tem 720 pixels de largura, 480 pixels de altura, incluindo algumas manchas nas laterais. O equivalente digital de 625/50 é 720×576. Em ambos os casos, a proporção do quadro é 4: 3, o que significa simplesmente que os pixels não são quadrados. Veja https://en.wikipedia.org/wiki/D-1_(Sony)
Para tornar as coisas mais complexas, apenas um subconjunto da moldura tem 4 : 3 proporções. Eu acredito, apenas o 704×480 (para 525/60) e 704×576 (para 625/50) tem proporções de 4: 3. Veja a discussão aqui: https://lurkertech.com/lg/video-systems/
Então, 480 pixels são 10/11 em proporção, 576 pixels são 59/54 em proporção. Veja também aqui: https://en.wikipedia.org/wiki/Pixel_aspect_ratio E não se esqueça, que os formatos de 480 linhas e 576 linhas também podem ser widescreen (16: 9) ainda com o mesmo número de pixels por linha! Além disso, números como 59/54 não são fáceis de trabalhar. Tudo isso fez com que, para o formato de 576 linhas, a proporção do pixel fosse escolhida como 12/11 para a proporção da tela 4: 3 e como 16/11 para 16: 9.
Os pixels quadrados se tornaram a norma começando pelo adaptador de vídeo VGA, creio eu, e depois pelas especificações HD para vídeo de 720 linhas e 1080 linhas. A propósito, existem alguns formatos HD que gravam 1440×1080 ou 960×720, embora tenham proporção de quadro 16: 9, eles também têm pixels não quadrados. Pixels quadrados são de desenvolvimento relativamente recente e não devem ser esperados automaticamente.
Comentários
Resposta
Existem 2 coisas diferentes:
- A largura e altura real dos quadros (em pixels) – veja a parte verde da imagem a seguir.
- A exibida largura e altura (durante a reprodução) – veja a parte azul da mesma imagem.
O problema surgiu no passado dias ruins, quando a resolução dos dispositivos (número de pixels na imagem) era muito baixa, mas a proporção necessária entre largura e altura para a reprodução era de 4: 3.
A solução (em naqueles dias) foi a invenção de pixels não quadrados.
Por uma questão de simplicidade, suponhamos (teoricamente) dimensões muito baixas:
- necessário: 4 x 3 pixels (i. e. 12 pixels) por quadro.
- real possível (pelo preço aceitável): 3 x 3 (ou seja, 9 pixels).
A solução era pixels não quadrados com a proporção de pixel ( PAR ) 4: 3 , como aqui:
Portanto, a proporção do pixel ( PAR ) é a proporção dos tamanhos de cada um pixel individual:
Cada azul pixels em nossa imagem tem PAR 4: 3, e cada laranja e cada verde tem PAR 1: 1.
Agora a nossa imagem inteira (azul) é exibida corretamente, como queríamos – e. g. como 12 cm x 9 cm – então sua Proporção de exibição ( DAR ) é 12: 9 ou 4: 3.
Apesar disso, ele é salvo como 3 x 3 pixels – portanto, a Storage Aspect Ratio ( SAR ) é 3 pixels: 3 pixels ou 1: 1.
Dica:
- a proporção do pixel ( PAR ) é micrômetros: micrômetros
- proporção de exibição ( DAR ) é centímetros: centímetros
- proporção de armazenamento ( SAR ) é pixels: pixels
Consequentemente, a relação entre esses 3 valores são
DAR = SAR × PAR
A observação importante:
Às vezes é PAR (Proporção de pixel) chamado Proporção de amostra – como em FFmpeg . Infelizmente, a abreviatura para isso é SAR , o que é muito confuso, porque – como vimos – é também o abreviatura de Storage Aspect Ratio.
O principal problema:
Hoje em dia, todos os dispositivos têm proporção de aspecto de pixel 1: 1 (pixels quadrados) e muitos players de mídia, principalmente para pequenos dispositivos (telefones celulares, tablets), dependem dele, ignorando totalmente o valor DAR armazenado em streams de vídeo.
Portanto, você pode se deparar com a situação em que o mesmo vídeo (feito de todas as fontes) é reproduzido corretamente em seu computador ou laptop, mas incorretamente (reduzido) em seu smartphone. Ou mesmo no outro reprodutor de mídia no mesmo computador ou dispositivo.
Em nosso exemplo, os quadros podem ser exibidos incorretamente como um quadrado (veja a parte verde da imagem acima).
A solução deste problema no FFmpeg:
- redimensione o vídeo problemático, então
- s et o SAR dele para 1, e
- o DAR muito provavelmente tem o valor correto, mas você pode defini-lo com certeza.
Em nosso exemplo (irreal), você pode usar o gráfico de filtro
-vf scale=4:3,setsar=1,setdar=w/h
onde w
é o com (apenas dimensionado) quadros em pixels, h
é a altura deles. O FFmpeg substitui os valores apropriados automaticamente.
O resultado será a parte laranja da imagem acima.
No seu caso, seu vídeo foi (de suas informações)
- DAR 4: 3 (640: 480),
- SAR (Proporção de armazenamento) 720: 480 = 3: 2 e – conseqüentemente –
- PAR = DAR / SAR = 8: 9. (Na terminologia FFmpeg, é SAR – Proporção de amostra de amostra).
Então para evitar problemas com media players ignorando o valor DAR (e reproduzi-lo na proporção 720: 480, você pode considerar converta-o com o comando
ffmpeg -i your_input_file -vf -scale=640:480,setsar=1 -c:a copy your_output_file
Problemas com imagens com pixels não quadrados:
Com as imagens, a situação é ainda pior:
Quase todos os visualizadores / editores de imagens e navegadores da Internet simplesmente ignoram as imagens SAR e DAR , supondo que todos fotos em todo o mundo têm SAR 1: 1.
A exceção honrosa é (curiosamente e surpreendentemente) Microsoft Windows Photo Viewer, que exibe todas as imagens ctly.
Você pode se convencer disso e. g. pelo Teste de ácido de proporção de pixel – todas as 9 imagens devem ser exibidas corretamente em seu navegador, mas – muito provavelmente – não são.
Comentários
- bem descritos. Obrigado! Ambos estão corretos. Assim que o número de ups aumentar, será atualizada a melhor resposta.
FFmpeg
para alguns experimentos (para ver se os dois têm o mesmo comprimento de corte de cena). Portanto, uma vez que a reprodução é a mesma, devo supor queffmpeg
os 640×480 e 720×480 são idênticos ?!