4: 3-video har 720×480 upplösning

Jag försökte göra lite videoredigering och kodning. Jag har en så kallad SD-video som förmodligen borde vara i 4:3 bildförhållande. Men istället för 640x480 är det 720x480. Intressant är att när jag spelar det med en mediaspelare är det 640x480 – det spelas inte som 720x480!

Vad händer ?! Hur kan det vara möjligt?

Svar

525/60 digitaliserad SD-video enligt Rec. 601 är verkligen 720 pixlar brett, 480 pixlar högt, inklusive en del blankning på sidorna. Digital motsvarande 625/50 är 720×576. I båda fallen är bildformatet 4: 3, det betyder helt enkelt att pixlarna inte är fyrkantiga. Se https://en.wikipedia.org/wiki/D-1_(Sony)

För att göra saken mer komplex har bara en delmängd av ramen 4 : 3 proportioner. Jag tror att endast 704×480 (för 525/60) och 704×576 (för 625/50) har proportionerna 4: 3. Se diskussion här: https://lurkertech.com/lg/video-systems/

Så 480 pixlar är 10/11 i proportion, 576 pixlar är 59/54 i proportion. Se även här: https://en.wikipedia.org/wiki/Pixel_aspect_ratio Och glöm inte att både 480-rads- och 576-radsformat också kan vara widescreen (16: 9) men har samma antal pixlar per rad! Dessutom är siffror som 59/54 inte lätta att arbeta med. Allt detta orsakade att för 576-radsformat har bildförhållandet pixel valts till 12/11 för bildförhållandet 4: 3 och som 16/11 för 16: 9.

Fyrkantiga pixlar blev normen från VGA-videoadapter tror jag, och sedan från HD-specifikationer för 720-linjers och 1080-linjers video. Förresten, det finns vissa HD-format som spelar in 1440×1080 eller 960×720, men ändå har bildförhållandet 16: 9, de har också icke-kvadratiska pixlar. Fyrkantiga pixlar har utvecklats relativt nyligen och bör inte förväntas automatiskt.

Kommentarer

  • Tack för beskrivningen. Jag ' spelar med FFmpeg för några experiment (för att se om de två har samma scenklippade längder). Eftersom uppspelningen är densamma, ska jag anta att från ffmpeg, 640×480 och 720×480 är identiska ?!
  • ffmpeg, (inte ffplay) omskalar aldrig videor till bildförhållandet på skärmen, så filter och kodare fungerar bara på rasterdata, vilket är 720×480, i ditt fall.
  • icke kvadratiska pixlar skulle förmodligen kräva att du återprover videon, den värsta typen av omkodning känd för mänskligheten för att fixa den.

Svar

Det finns två olika saker:

  • den verkliga bredden och höjden på ramar (i pixlar) – se den gröna delen av den följande bilden.
  • Den visade bredden och höjden (under uppspelningen) – se den blå delen av samma bild.

Problemet uppstod i gamla dåliga dagar då enheternas upplösning (antal pixlar i bilden) var mycket låg, men det erforderliga förhållandet mellan bredd och höjd för uppspelningen var 4: 3.

Lösningen (i de dagar) var uppfinningen av icke-kvadratiska pixlar.


För enkelhets skull antar vi (teoretiskt) mycket låga dimensioner:

  • krävs: 4 x 3 pixlar (i. e. 12 pixlar) per bildruta.
  • verkligt möjligt (till acceptabelt pris): 3 x 3 (dvs. 9 pixlar).

Lösningen var icke-kvadratiska pixlar med pixel-bildförhållandet ( PAR ) 4: 3 , som här:

ange bildbeskrivning här

Så bildformat ( PAR ) är förhållandet mellan storlekarna för varje enskild pixel:

Varje blå pixlar i vår bild har PAR 4: 3, och varje orange och varje grön har PAR 1: 1.

Nu visas hela vår (blå) bild korrekt, som vi ville – e. g. som 12 cm x 9 cm – så dess Visa bildkvot ( DAR ) är 12: 9 , eller 4: 3.

Trots det sparas den som 3 x 3 pixlar – så Lagringsformat ( SAR ) är 3 pixlar: 3 pixlar, eller 1: 1.

Tips:

  • bildformat ( PAR ) är mikrometer: mikrometer
  • bildformat ( DAR ) är centimeter: centimeter
  • bildförhållande för lagring ( SAR ) är pixlar: pixlar

Följaktligen är förhållandet mellan dessa 3 värden är

                          DAR = SAR × PAR

Den viktiga anmärkningen:

Ibland är PAR (Pixel-bildkvot) kallas Exempel på bildförhållande som i FFmpeg . Oförfött är förkortningen för den då SAR , vilket är mycket förvirrande, för – som vi såg – det är också förkortning för Storage Aspect ratio.


Huvudproblemet:

Numera har alla enheter pixelformat 1: 1 (kvadratpixlar) och många mediaspelare, huvudsakligen för små enheter (mobiltelefoner, surfplattor), litar på det och ignorerar helt DAR som lagras i videoströmmar.

Så du kan stöta på situationen när samma video (gjord av alla källor) spelas upp korrekt på din stationära eller bärbara dator, men felaktigt (förminskas) i din smartphone. Eller till och med på annan mediaspelare på samma dator eller enhet.

I vårt exempel kan ramarna visas felaktigt som en kvadrat (se den gröna delen av bilden ovan).


Lösningen på detta problem i FFmpeg:

  • ändra storlek på den problematiska videon och sedan
  • s et SAR till 1, och
  • DAR har mycket troligt rätt värde, men du kan ställa in det för att vara säker.

I vårt (orealistiska) exempel du kan använda filterbilden

-vf scale=4:3,setsar=1,setdar=w/h 

där w är den med (just skalade) ramar i pixlar, h är deras höjd. FFmpeg ersätter lämpliga värden automatiskt.

Resultatet blir den orange delen av bilden ovan.


I ditt fall har din video (från din info)

  • DAR 4: 3 (640: 480),
  • SAR (Storage Aspect Ratio) 720: 480 = 3: 2, och – följaktligen –
  • PAR = DAR / SAR = 8: 9. (I FFmpeg-terminologin är det SAR – Exempel på bildförhållande).

Så för att undvika problem med mediaspelare som ignorerar värdet DAR

ffmpeg -i your_input_file -vf -scale=640:480,setsar=1 -c:a copy your_output_file 

Problem med bilder med icke-kvadratiska pixlar:

Med bilder är situationen ännu värre:

Nästan alla bildvisare / redigerare och webbläsare ignorerar helt enkelt bilder SAR och DAR , antar att alla bilder över hela världen har SAR 1: 1.

Det ärade undantaget är (intressant och överraskande nog) Microsoft Windows Photo Viewer, som visar alla bilder ctly.

Du kan bli övertygad om det e. g. av Pixel Aspect Ratio Acid Test – alla 9 bilderna där ska visas korrekt i din webbläsare, men – mycket troligt – de är inte t.

Kommentarer

  • väl beskrivna. Tack! Båda är korrekta. När antalet ups blir högre kommer det bästa svaret att uppdateras.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *