Newsgroup: it.comp.software.divx
Titolo: risoluzione e dimensione

Salve a tutti,
ho convertito un dvd in divx con xmpeg: la prima volta ho mantenuto intatta
la risoluzione ritagliando solo le bande nere (720x308); la seconda volta ho
ridimensionato il film (560x236).
Risultato ottenuto: due file di 825 Mb, STESSE DIMENSIONI!!!!
Ovviamente non ho modificato i settagi dei codec audio/video tra le due
codifiche (audio mp3 128 kB, 44000 kHz; video divx 5 bitrate 1000). L'unica
differenza è che nel film con risoluzione minore sono aumentati i keyframe.
Allora mi chiedo e vi chiedo: si può ridurre la dimensione di un film
cambiando solo la risoluzione? come si può decidere il numero di keyframe
presenti sul film? Ho sbagliato qualche passaggio?
Attendo suggerimenti.

 Risultato ottenuto: due file di 825 Mb, STESSE DIMENSIONI!!!!
La dimensione del file finale dipende solo ed esclusivamente da durata e
bitrate. Non salla dimensione del quadro.
-- 
Saluti, Kap - ICQ 19857429 - ¥'s Fan #01 - 
www.lordkap.it
 - VCC
Da ogni verità nasce speranza. - Carlo Betocchi

 bitrate. Non salla dimensione del quadro.
Eppure la dimensioni delle immagini (gif, jpg, ecc.) dipende dalla
dimensione del quadro!
com'è possibile che non ci sia differenza nel gestire 720x308=221760 pixel
oppure 560x236=132160 pixel?


 oppure 560x236=132160 pixel?
forse quello che non ti e' chiaro e' che un codec tipo divx permette
di scegliere un bitrate, e tale scelta ti determina la qualita' del
filmato ottenuto e la sua dimensione in bytes (proprio come faresti
salvando un'immagine in jpeg)

 dimensione del quadro!
Con il video non si devono fare queste considerazioni. Io per
ricostruire quel quadro nel tempo posso metterci un certo bitrate invece
di un altro. Ricapitolando: se ho un file di 700 MB e dura 120 minuti,
per calcolare il bitrate devo fare un paio di operazioni:
- (700 MB)*1024*1024*8 = numero di bit = 
5872025600
 b
- (120 minuti)*60 = numero di secondi = 7200 s
=> bitrate = numero di bit / secondi = 815559,1 b/s = 815,56 kb/s
Se il quadro è 720x576 verrà reso molto male, se il quadro è di 576x432
andrà meglio, se il quadro è più piccolo meglio ancora.
-- 
Saluti, Kap - ICQ 19857429 - ¥'s Fan #01 - 
www.lordkap.it
 - VCC
Il vantaggio di essere celibe è che quando si vede una bella ragazza
non ci si deve rattristare di averne una brutta a casa. - Paul Léautaud

 salvando un'immagine in jpeg)
Ho scelto il bitrate: 1000, in entrambi i casi; nei due processi di codifica
non ho cambiato i settaggi dell'encoder (divix pro) ma solo la risoluzione

 andrà meglio, se il quadro è più piccolo meglio ancora.
Ma io non ho cambiato il bitrate nelle due codifiche, ho usato 1000 (divix
pro) in entrambi i casi, e non ho cambiato nessun altro settaggio, né audio
né video. La differenza tra i due filmati è che uno ha 4973 keyframe
(720x308) e l'altro 5139 (560x236), una differenza di 346 keyframe. Non
capisco perchè senza che io abbia cambiato i settaggi video l'encoder mi
abbia codificato il film in maniera così diversa


 Ma io non ho cambiato il bitrate nelle due codifiche,
Scusa, ma cosa c'è di non chiaro nella frase: la dimensione del file
video dipende solamente dal bitrate e dalla durata?
Se un filmato dura 60 minuti e metti 1000 kbps di bitrate, ti verrà
fuori per forza di cose di 3600*1000000 = 3600000000 bit. = 429,15 MB
circa. Qualsiasi dimensione del quadro tu scelga.
-- 
Saluti, Kap - ICQ 19857429 - ¥'s Fan #01 - 
www.lordkap.it
 - VCC
Alcuni possono vivere secondo i loro ideali più alti non andando mai più
in alto di un seminterrato. - Theodore Roosevelt


E' proprio questo che mi sembra strano, un fotogramma a 720x*** pesa come
uno a 560x***?
Inoltre come ho già detto il filmato a 560x*** contiene circa 360 keyframe
in più, io non credo che questo non influisca sulla dimensione finale, anzi
probabilmente quello che ho guadagnato dalla riduzione della risoluzione
l'ho perso con l'aumento dei keyframe (ma, come ripeto, non ho cambiato i
settaggi dell'encoder, né video né audio). Mi chiedevo se c'era un modo per
avere nel filmato a 560x*** il numero di keyframe del filmato a 720x***,
sono convinto che la dimensione finale sarebbe inferiore.


 sono convinto che la dimensione finale sarebbe inferiore.
vuoi ottenere una dimensione finale inferiore?
imposta un bitrate piu' basso! sono 4 giorni che te lo diciamo! :-)
se all'inizio avevi impostato un bitrate di 1000 kbps per un filmato
720x***, adesso che ridimensioni a 560x*** abbassa in proporzione anche
il bitrate (in proporzione all'area del frame, cioe' il numero dei
pixel che compongono il frame; in tal modo lascerai costante il
parametro bpp "bits per pixel").
abbassando il bitrate otterrai un file piu' piccolo.

 imposta un bitrate piu' basso! sono 4 giorni che te lo diciamo! :-)
questo l'avevo capito anzi, già lo sapevo, ma nessuno ha saputo spiegarmi
perchè ad una risoluzione minore non corrisponde una dimensione minore come
avviene per le immagini


 avviene per le immagini
come no?
ok, te lo rispiego facendo qualche esempio.
a una risoluzione minore non corrisponde una dimensione minore neanche
per le immagini!
eccoti una dimostrazione:
ho qui una bella immagine di origine fotografica che si chiama
Cliff1024.ppm, e' in formato ppm (RGB24) non compresso, la sua
risoluzione e' 1024x768 e la sua dimensione e' 2,359,312 bytes.
adesso la ridimensiono a 800x600 e la salvo come Cliff800.ppm; tale
file e' grande 1,440,015 bytes.
fin qui hai ragione: l'immagine piu' piccola occupa meno spazio.
adesso pero' codifichiamo le due immagini in un formato compresso
lossy, cioe' il jpeg; diamo questi due comandi:
cjpeg -q 90 Cliff800.ppm > Cliff800.jpg
cjpeg -q 73 Cliff1024.ppm > Cliff1024.jpg
battendo questi due comandi, otteniamo due immagini jpeg; la prima,
Cliff800.jpg, ha una risoluzione 800x600 ed e' grande 86,783 bytes,
mentre la seconda, Cliff1024.jpg, ha una risoluzione 1024x768 ed e'
grande 85,274 bytes, cioe' occupa meno spazio dell'altra!
perche' accade questo?
perche', anche se ho diminuito la risoluzione da 1024x768 a 800x600,
quando sono andato a salvare, ho impostato una qualita' (90)
superiore a quella impostata per salvare l'immagine con maggiore
risoluzione (73).
con il tuo esempio dei divx, accade una cosa analoga: tu abbassi
la risoluzione, ma siccome lasci lo stesso bitrate medio, il
valore bpp (il numero medio di bits per pixel) aumenta, ed e'
questo che gioca lo stesso ruolo del parametro -q nell'esempio
delle immagini che ho fatto sopra! se vuoi ottenere una dimensione
inferiore, devi mantenere costante il parametro di qualita', che
in questo caso e' bpp (come gia' ti avevo spiegato nel post
precedente) e per fare cio' devi abbassare il bitrate!
se non ti e' chiaro nemmeno adesso, mi arrendo :-)

 > perchč ad una risoluzione minore non corrisponde una dimensione minore


 Grazie per il tempo dedicatomi.
di nulla, perche' il Ng serve per l'appunto a discutere questioni
come queste.
credevo che tu non avessi chiaro che un'immagine jpeg puo' essere
salvata a diverse qualita' (e quindi ottenendo diverse dimensioni),
altrimenti, invece di fare quell'esempio, ti avrei subito riportato
questa formula da un testo che trovai:
         $videobitrate * 1000
$bpp = -----------------------
       $width * $height * $fps
( bpp = (videobitrate * 1000) / (width * height * fps) )
questo parametro e' il numero medio di bits che viene impiegato per
ogni singolo pixel del filmato (fps e' il framerate, width x height
e' la risoluzione);
come vedi c'e' un legame di proporzionalita' diretta tra bitrate e
bpp, ma l'effettivo parametro di qualita' e' quest'ultimo.
dalla formula si vede bene che, se abbassi solo la risoluzione, il
denominatore diminuisce e il bpp aumenta; quindi, se vuoi mantenere
lo stesso livello di qualita', quando abbassi la risoluzione devi
abbassare nella stessa proporzione anche il bitrate; in tal modo
otterrai un file finale di dimensioni inferiori (della stessa
proporzione), che era quello che desideravi.
nel caso di codifica mpeg4, il bpp e' solitamente compreso tra
0.1 e 0.4... nella maggior parte dei casi, per un film ottenuto
da dvd, un buon risultato lo si ha con valori di bpp intorno a
0.25.
comunque, dipende dal tipo di filmato (nella guida di "AndyPanix"
ai parametri del codec XviD vengono fatti esempi significativi).
ciao