Încercam să fac niște editare și codificare video. Am un așa-numit videoclip SD care se presupune că ar trebui să aibă un raport de aspect 4:3
. Dar în loc de 640x480
, este 720x480
. Interesant este faptul că atunci când îl joc cu un media player, ceea ce văd este 640x480
– nu este redat ca 720x480
!
Ce se întâmplă ?! Cum ar putea fi posibil?
Răspuns
Video SD digitalizat 525/60 conform Rec. 601 are într-adevăr o lățime de 720 de pixeli, o înălțime de 480 de pixeli, inclusiv unele goluri laterale. Echivalentul digital al 625/50 este 720×576. În ambele cazuri, raportul aspectului cadrului este 4: 3, aceasta înseamnă pur și simplu că pixelii nu sunt pătrate. A se vedea https://en.wikipedia.org/wiki/D-1_(Sony)
Pentru a face lucrurile mai complexe, doar un subset al cadrului are 4 : 3 proporții. Cred că doar 704×480 (pentru 525/60) și 704×576 (pentru 625/50) au proporții 4: 3. Vedeți discuția aici: https://lurkertech.com/lg/video-systems/
Deci, 480 pixeli au o proporție de 10/11, 576 pixeli au o proporție de 59/54. Vedeți și aici: https://en.wikipedia.org/wiki/Pixel_aspect_ratio Și nu uitați că atât formatele de 480 de linii, cât și cele de 576 de linii pot fi, de asemenea, ecran lat (16: 9) având totuși același număr de pixeli pe linie! În plus, numere precum 59/54 nu sunt ușor de lucrat. Toate acestea au determinat faptul că pentru formatul de 576 de linii raportul de aspect al pixelilor a fost ales ca 12/11 pentru raportul de aspect al ecranului 4: 3 și ca 16/11 pentru 16: 9.
Pixelii pătrati au devenit normă începând de la adaptorul video VGA, cred, și apoi de la specificațiile HD pentru video 720-line și 1080-line. Apropo, există câteva formate HD care înregistrează 1440×1080 sau 960×720, având totuși un raport de aspect de cadru 16: 9, au și pixeli care nu sunt pătrate. Pixelii pătrati sunt o dezvoltare relativ recentă și nu trebuie așteptați automat.
Comentarii
Răspuns
Există 2 lucruri diferite:
- Lățimea și înălțimea reală a cadrelor (în pixeli) – consultați partea verde a imaginii următoare.
- Lățimea și înălțimea afișate (în timpul redării) – consultați partea albastră a aceleiași imagini.
Problema a apărut în vechime zile proaste, când rezoluția dispozitivelor (numărul de pixeli din imagine) a fost foarte mică, dar raportul necesar pentru lățime și înălțime pentru redare a fost de 4: 3.
Soluția (în acele zile) a fost invenția pixelilor care nu sunt pătrate.
Din motive de simplitate, să presupunem (teoretic) dimensiuni foarte mici:
- necesar: 4 x 3 pixeli (i. e. 12 pixeli) pe cadru.
- real posibil (pentru prețul acceptabil): 3 x 3 (adică 9 pixeli).
Soluția a reprezentat pixeli non-pătrati cu raportul de aspect al pixelilor ( PAR ) 4: 3 , ca aici:
Deci raportul de aspect al pixelilor ( PAR ) este raportul dintre dimensiunile fiecărui pixel individual:
Fiecare albastru pixeli din imaginea noastră au PAR 4: 3 și fiecare portocaliu și fiecare verde are PAR 1: 1.
Acum întreaga noastră imagine (albastră) este afișată corect, așa cum am dorit – e. g. ca 12 cm x 9 cm – deci Afișarea raportului de aspect ( DAR ) este 12: 9 sau 4: 3.
În pofida acestui fapt, este salvat ca 3 x 3 pixeli – deci Storage Aspect Ratio ( SAR ) are 3 pixeli: 3 pixeli sau 1: 1.
Sugestie:
- raportul de aspect al pixelilor ( PAR ) este micrometri: micrometri
- afișează raportul de aspect ( DAR ) este centimetri: centimetri
- raportul aspectului stocării ( SAR ) este pixeli: pixeli
În consecință, relația dintre aceste 3 valori sunt
DAR = SAR × PAR
Nota importantă:
Uneori este PAR (Pixel Aspect Ratio) numit Sample Aspect Ratio – ca în FFmpeg . În mod neîntemeiat, abrevierea pentru aceasta este atunci SAR , ceea ce este foarte confuz, deoarece – după cum am văzut – este și abreviere pentru raportul de aspect de stocare.
Problema principală:
În prezent, toate dispozitivele au un raport de aspect pixel 1: 1 (pixeli pătrati) și multe playere media, în special pentru dispozitive mici (telefoane mobile, tablete), se bazează pe acesta, ignorând pe deplin valoarea DAR fluxuri video.
Așadar, puteți întâlni situația în care același videoclip (realizat din toate sursele) este redat corect pe computerul dvs. desktop sau laptop, dar incorect (restrâns) în telefonul smartphone. Sau chiar pe alt player media de pe același computer sau dispozitiv.
În exemplul nostru, cadrele pot fi afișate greșit ca un pătrat (consultați partea verde a imaginii de mai sus).
Soluția acestei probleme în FFmpeg:
- redimensionează videoclipul problematic, apoi
- și SAR a acestuia la 1 și
- DAR are foarte probabil valoarea corectă, dar o puteți seta pentru a fi sigur.
În exemplul nostru (ireal) poate folosi filtergraph
-vf scale=4:3,setsar=1,setdar=w/h
unde w
este cu cadre (doar scalate) în pixeli, h
este înălțimea lor. FFmpeg înlocuiește automat valorile corespunzătoare.
Rezultatul va fi partea portocalie a imaginii de mai sus.
În cazul dvs., videoclipul dvs. are (din informațiile dvs.)
- DAR 4: 3 (640: 480),
- SAR (raport de aspect de stocare) 720: 480 = 3: 2 și – în consecință –
- PAR = DAR / SAR = 8: 9. (În terminologia FFmpeg este SAR – Sample Aspect Ratio).
Deci pentru a evita problemele cu playere media ignorând valoarea DAR (și redarea acesteia în proporția 720: 480, vă recomandăm să convertiți-l cu comanda
ffmpeg -i your_input_file -vf -scale=640:480,setsar=1 -c:a copy your_output_file
Probleme cu imagini cu pixeli care nu sunt pătrate:
În cazul imaginilor, situația este chiar mai gravă:
Aproape toți vizualizatorii / editorii de imagini și browserele de internet ignoră pur și simplu imaginile SAR și DAR , presupunând că toate imaginile din întreaga lume au SAR 1: 1.
Onorabila excepție este (interesant și în mod surprinzător) Microsoft Windows Photo Viewer, care afișează toate imaginile cu adevărat.
S-ar putea să vă convingeți despre asta e. g. de Testul acidului pe raportul aspectului pixelului – toate cele 9 imagini de acolo ar trebui să fie afișate corect în browserul dvs., dar – foarte probabil – nu sunt „t.
Comentarii
- bine descrise. Vă mulțumim! Ambele sunt corecte. Odată ce numărul de up-uri crește, se va actualiza cel mai bun răspuns.
FFmpeg
pentru unele experimente (pentru a vedea dacă cele două au aceleași lungimi tăiate de scenă). Deci, din moment ce redarea este aceeași, ar trebui să presupun dinffmpeg
, 640×480 și 720×480 sunt identice ?!