Yritin tehdä videon muokkausta ja koodausta. Minulla on niin kutsuttu SD-video, jonka oletettavasti pitäisi olla 4:3
-suhteessa. Mutta 640x480
-kohdan sijaan se on 720x480
. Mielenkiintoista on, että kun pelaan sitä mediasoittimella, näen 640x480
– sitä ei toisteta nimellä 720x480
!
Mitä tapahtuu ?! Kuinka se voisi olla mahdollista?
Vastaa
525/60 digitoitu SD-video Rec. 601 on todellakin 720 pikseliä leveä, 480 pikseliä korkea, sisältäen joitain aukkoja sivuilla. Digitaalinen ekvivalentti 625/50 on 720×576. Molemmissa tapauksissa kehyksen kuvasuhde on 4: 3, tämä tarkoittaa yksinkertaisesti sitä, että pikselit eivät ole neliönmuotoisia. Katso https://en.wikipedia.org/wiki/D-1_(Sony)
Jotta asia olisi monimutkaisempi, vain kehyksen osajoukossa on 4 : 3 osuutta. Uskon, että vain 704×480 (mallille 525/60) ja 704×576 (mallille 625/50) on 4: 3-mittasuhteet. Katso keskustelu täältä: https://lurkertech.com/lg/video-systems/
Joten 480 pikseliä ovat suhteessa 10/11, 576 pikseliä ovat 59/54 suhteessa. Katso myös täältä: https://en.wikipedia.org/wiki/Pixel_aspect_ratio Ja älä unohda, että sekä 480- että 576-riviset muodot voivat olla laajakuvanäyttö (16: 9), mutta silti sama määrä pikseleitä riviä kohden! Lisäksi numeroiden, kuten 59/54, kanssa ei ole helppoa työskennellä. Kaikki tämä aiheutti sen, että 576-rivimuodossa pikselimuotoiseksi kuvasuhteeksi on valittu 12/11 4: 3-kuvasuhteelle ja 16/11 16: 9-kuvasuhteelle.
Neliöpikseleistä tuli normi alkaen VGA-videosovittimesta uskon, ja sitten HD-ominaisuuksista 720-linjaiseen ja 1080-linjaiseen videoon. Muuten, on joitain HD-formaatteja, jotka tallentavat 1440×1080 tai 960×720, mutta niiden kuvasuhde on 16: 9, mutta niillä on myös neliömäisiä pikseleitä. Neliön muotoiset pikselit ovat suhteellisen viimeaikaista kehitystä, eikä niitä pitäisi odottaa automaattisesti.
Kommentit
Vastaa
On olemassa kaksi erilaista asiaa:
- Kehysten todellinen leveys ja korkeus (pikseleinä) – katso seuraavan kuvan vihreä osa.
- Näytetty leveys ja korkeus (toiston aikana) – katso saman kuvan sininen osa.
Ongelma syntyi vanhassa huonoina päivinä, jolloin laitteiden tarkkuus (kuvassa olevien pikselien määrä) oli hyvin pieni, mutta vaadittu leveyden ja korkeuden suhde toiston aikana oli 4: 3.
Ratkaisu ( noina päivinä) oli keksintö ei-neliöpikseleistä.
Oletetaan yksinkertaisuuden vuoksi (teoreettisesti) hyvin pienet mitat:
- vaaditaan: 4 x 3 pikseliä (i. e. 12 pikseliä) / kehys.
- todellinen mahdollinen (hyväksyttävään hintaan): 3 x 3 (eli 9 pikseliä).
Ratkaisu oli ei-neliön pikseliä pikselin kuvasuhde ( PAR ) 4: 3 , kuten tässä:
Joten pikselien kuvasuhde ( PAR ) on jokaisen yksittäisen pikselin koon suhde:
Jokainen sininen Kuvamme pikseleissä on PAR 4: 3, ja jokaisella oranssilla ja jokaisella vihreällä on PAR 1: 1.
Nyt koko (sininen) kuvamme näytetään oikein, kuten halusimme – e. g. kuten 12 cm x 9 cm – joten sen Näytön kuvasuhde ( DAR ) on 12: 9 tai 4: 3.
Siitä huolimatta se tallennetaan 3 x 3 pikselinä – joten Tallennussuhteen suhde ( SAR ) on 3 kuvapistettä: 3 kuvapistettä tai 1: 1.
Vihje:
- pikselien kuvasuhde ( PAR ) on mikrometriä: mikrometriä
- näytön kuvasuhde ( DAR ) on senttimetriä: senttimetriä
- tallennuksen kuvasuhde ( SAR ) on pikseliä: pikseliä
Näin ollen suhde nämä 3 arvoa ovat
DAR = SAR × PAR
Tärkeä huomautus:
Joskus on PAR (Pixel Aspect Ratio) kutsutaan Kuvasuhde näytteeksi – kuten kohdassa FFmpeg . Ilmeisesti sen lyhenne on silloin SAR , mikä on hyvin hämmentävää, koska – kuten näimme – se on myös lyhenne tallennuksen kuvasuhteesta.
Pääongelma:
Nykyään kaikilla laitteilla on pikselien kuvasuhde 1: 1 (neliöpikselit) ja monet mediasoittimet, pääasiassa pienille laitteille (matkapuhelimet, tabletit), luottavat siihen ja jättävät täysin huomiotta kansioon DAR videovirrat.
Joten saatat kohdata tilanteen, kun sama video (tehty kaikista lähteistä) toistetaan oikein työpöydällä tai kannettavalla tietokoneella, mutta väärin (kavennettuna) älypuhelimellasi. Tai jopa muu mediasoitin samalla tietokoneella tai laitteella.
Esimerkissämme kehykset saattavat näkyä väärin neliönä (katso yllä olevan kuvan vihreää osaa).
Tämän ongelman ratkaisu FFmpegissä:
- muuttaa ongelmallisen videon kokoa ja sitten
- s ja sen SAR yhdeksi ja
- DAR -arvolla on todennäköisesti oikea arvo, mutta voit asettaa sen varmasti.
(epärealistisessa) esimerkissämme voi käyttää filtergraph
-vf scale=4:3,setsar=1,setdar=w/h
jossa w
on (juuri skaalattu) kehyksiä pikseleinä, h
on heidän korkeutensa. FFmpeg korvaa sopivat arvot automaattisesti.
Tuloksena on yllä olevan kuvan oranssi osa.
Tässä tapauksessa videossasi on (tiedoistasi)
- DAR 4: 3 (640: 480),
- SAR (tallennuksen kuvasuhde) 720: 480 = 3: 2 ja – näin ollen –
- PAR = DAR / SAR = 8: 9. (FFmpeg-terminologiassa se on SAR – kuvasuhteen näyte).
Joten Välttääksesi ongelmia mediasoittimien kanssa, jotka jättävät DAR -arvon huomiotta (ja toistat sen suhteessa 720: 480, voit harkita muunna se komennolla
ffmpeg -i your_input_file -vf -scale=640:480,setsar=1 -c:a copy your_output_file
Ongelmia kuvissa, joissa ei ole neliön pikseliä:
Kuvien kanssa tilanne on vieläkin pahempi:
Lähes kaikki kuvankatselijat / muokkaajat ja Internet-selaimet yksinkertaisesti sivuuttavat kuvat SAR ja DAR olettaen, että kaikki kuvilla ympäri maailmaa on SAR 1: 1.
Kunnianarvoinen poikkeus on (mielenkiintoista ja yllättävän kyllä) Microsoft Windows Photo Viewer , joka näyttää kaikki kuvat vastaavasti ctly.
Saatat olla vakuuttunut siitä e. g. -pikselihappotestin avulla – kaikki siellä olevat 9 kuvaa tulisi näyttää oikein selaimessasi, mutta – todennäköisesti – ne eivät ole t.
Kommentit
- hyvin kuvattu. Kiitos! Molemmat ovat oikeita. Kun päivitysten määrä kasvaa, päivitetään paras vastaus.
FFmpeg
: n kanssa joissakin kokeissa (nähdäksesi, onko molemmilla samat kohtauksen leikkaukset). Joten koska toisto on sama, pitäisikö minun olettaa, ettäffmpeg
, 640×480 ja 720×480 ovat identtiset ?!