[RISOLTO]x264 e sorgente interlacciata

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
rik70
Iper Master
Iper Master
Messaggi: 2489
Iscritto il: gio 10 mar 2011, 9:21
Slackware: 15.0
Kernel: 5.15.x-generic
Desktop: Sway
Distribuzione: Arch Linux

[RISOLTO]x264 e sorgente interlacciata

Messaggio da rik70 »

Salve di nuovo a tutti.

Per puro esercizio di stile, sto provando a convertire alcuni frammenti di dvd in h264-720p. So che non è il massimo della vita per quel che riguarda la qualità, ma devo dire che con alcuni il risultato non è malaccio.

Alla fine mi sono imbattuto in un dvd a 25 fps interlacciato, e qui casca l'asino (io): che fare? Ho provato a deinterlacciarlo coi filtri yadif e kerndeint, ma la perdita è "mostruosa". In pratica si notano in maniera "drammatica" i "postumi" del deinterlacciamento. Leggo in rete che per preservare la qualità bisognerebbe codificarlo interlacciato, ma sinceramente non so come si fa e c'ho capito poco e nulla.

Qualcuno che ha buone dritte?

Per la codifica utilizzo x264, ffmpeg/ffmbc, mplayer e mkvtoolinix.

Grazie in anticipo come sempre.

Ciao
Ultima modifica di rik70 il sab 4 mag 2013, 9:19, modificato 1 volta in totale.

Avatar utente
ponce
Iper Master
Iper Master
Messaggi: 3022
Iscritto il: mer 5 mar 2008, 16:45
Nome Cognome: Matteo Bernardini
Slackware: slackware64-current
Kernel: 6.6.16
Desktop: lxde
Località: Pisa
Contatta:

Re: x264 e sorgente interlacciata

Messaggio da ponce »

io per deinterlacciare i dvd utilizzo -vf yadif=2:0:0 con ffmpeg ma devo dire di non riscontrare perdita di qualita'.

puo' darsi che quella sia dovuta all'upscaling (che andrebbe evitato), convertendo una sorgente da 576p (la risoluzione dei dvd) a 720p...

rik70
Iper Master
Iper Master
Messaggi: 2489
Iscritto il: gio 10 mar 2011, 9:21
Slackware: 15.0
Kernel: 5.15.x-generic
Desktop: Sway
Distribuzione: Arch Linux

Re: x264 e sorgente interlacciata

Messaggio da rik70 »

ponce ha scritto:io per deinterlacciare i dvd utilizzo -vf yadif=2:0:0 con ffmpeg ma devo dire di non riscontrare perdita di qualita'...
Ciao,

grazie proverò :)

P.s.
In effetti - se non ho capito male - codificarlo interlacciato presuppone che poi l'hardware o il software che lo decodifica faccia l'inverso.

Sto testando il tutto su un decoder HD DTT.

Vabbè, provo il tuo "trucco" e faccio sapere.

Grazie

ilmich
Master
Master
Messaggi: 1645
Iscritto il: lun 16 lug 2007, 17:39
Slackware: 15.0 64bit
Kernel: 5.15.27
Desktop: kde
Località: Roma

Re: x264 e sorgente interlacciata

Messaggio da ilmich »

mi sono imbattuto in un problema simile.
a parte che l'upscaling nn te lo consiglio nemmeo io a prescindere perchè la qualità è abbastanza scarsa(tipicamente perdi in nitidezza), forse il problema dipende da come ordini i filtri.
io uso mplayer in pipe col binario x264 e ho notato che se applico una qualsiasi forma di scaling prima del deinterlacciamento viene una porcheria, se invece deinterlaccio con yadif=0(o yadif=2 come suggeriva ponce) eppoi effettuo lo scaling il risultato è molto buono.
#LiveSimple and #ProgramThings
https://github.com/ilmich
http://ilmich6502.it/

Avatar utente
ponce
Iper Master
Iper Master
Messaggi: 3022
Iscritto il: mer 5 mar 2008, 16:45
Nome Cognome: Matteo Bernardini
Slackware: slackware64-current
Kernel: 6.6.16
Desktop: lxde
Località: Pisa
Contatta:

Re: x264 e sorgente interlacciata

Messaggio da ponce »

questo e' un comando di esempio che ho usato per fare un rip qualche tempo fa dove encodo un titolo di dvd in flash (h264/aac e altre opzioni abbastanza basiche) e faccio un leggero resize

Codice: Seleziona tutto

ffmpeg -i /data/scratch/title.vob -vf yadif=2:0:0 -async 44100 -f flv -s 864:480 -aspect 9:5 -codec:a libfaac -ar 44100 -ab 192k -codec:v libx264 -preset slower -b 1400k rippato.flv

rik70
Iper Master
Iper Master
Messaggi: 2489
Iscritto il: gio 10 mar 2011, 9:21
Slackware: 15.0
Kernel: 5.15.x-generic
Desktop: Sway
Distribuzione: Arch Linux

Re: x264 e sorgente interlacciata

Messaggio da rik70 »

Ok, ho fatto un pò di prove con yadif:

@miklos
hai ragione, l'upscaling fa perdere parecchio in nitidezza, forse è meglio non salire troppo. Lasciando la risoluzione originale le cose vanno molto meglio. Anche perché di suo il decoder digitale fa l'upscaling a 1080i su porta hdmi, il che aggiunge ulteriore disturbo. Per la sequenza filtri: sì, anch'io uso mettere yadif o kerndeint prima dello scaling della risoluzione.

@ponce
Ok, proverò anch'io a fermarmi prima dei 720p, vediamo se migliora. Vedo però che tu usi dei settaggi più votati alla qualità. Io utilizzo diciamo così impostazioni per una codifica + veloce visto l'hw che ho a disposizione. Poi tu usi '-s XxY' per lo scaling, mentre io utilizzo i filtri video 'scale' e all'occorrenza 'crop' e 'pad'. Ancora: per il bitrate io utilizzo -crf. Non so però se sbaglio qualcosa.

Vabbè ....posto il comando:

Codice: Seleziona tutto

mplayer dvd://1 -chapter 2-2 -dumpstream -dumpfile >(ffmpeg-git -i - -vf yadif=mode=2:parity=-1:deint=1,scale=1280:720:flags=0x200 -aspect 1.78 -vcodec libx264 -preset ultrafast -profile:v main -tune film -x264opts crf=23:bframes=2:subme=1:me=dia:trellis=1 -acodec libfaac -ac 2 -ab 224k -v 0 -y x264-720p.mkv ) -really-quiet 
La versione di ffmpeg è una git recente. Da notare lo scaling fatto coi filtri video, dove 'scale' è seguito da 'flags=0x200' che imposta il filtro Lanczos, equivalente a -sws 9 di mpayer/mencoder.

Comunque con yadif impostato in quel modo il risultato è buono, almeno alla risoluzione originale (720x576). Proverò poi scalando a 480p.

ilmich
Master
Master
Messaggi: 1645
Iscritto il: lun 16 lug 2007, 17:39
Slackware: 15.0 64bit
Kernel: 5.15.27
Desktop: kde
Località: Roma

Re: x264 e sorgente interlacciata

Messaggio da ilmich »

utilizzando il crf 23 con quella risoluzione il risultato è molto scarso.. dovresi usare almeno il 20 o ancora meglio il 18(se non ancora piu' basso).
per quanto riguarda le considerazioni se sia meglio una codifica a 'qualità' costante come il crf o una tecnica a bitrate fisso(magari a piu' passaggi) credo che la differenza piu' importante sia che con usando il bitrate fisso hai maggiore controllo sulla dimensione finale del file.

comunque guardando i tuoi settaggi(codifica veloce e qualità di conseguenza) non so quanto ti convenga a sto punto usare meglio un xvid piuttosto che l'x264.. che comunque è piu' "leggero" e potresti paradossalmente ottenere risultati migliori(ribadisco.. visti i preset che usi tu)

altro suggerimento è l'utilizzo del filtro hq3dn (io ne uso uno molto 'leggero' hq3dn=2:1:2:2) che rende piu' morbida l'immagine (riducendone il disturbo) con una conseguente migliore compressibilità.

altro piccolo suggerimento è quello di nn effettuare alcuno scaling. i dvd PAL tipicamente hanno una risoluzione di 720x576 che poi il player riscala in modo da avere l'aspetto corretto (per i 16:9 1024x576).
se comprimi senza fare lo scaling lavori su un'immagine piu' "piccola"

comunque la codifica audio/video è un mondo abbastanza vasto e di consigli/opinioni ne troverai a bizzeffe... devi fare diverse prove fino ad ottenere il risultato desiderato :D
#LiveSimple and #ProgramThings
https://github.com/ilmich
http://ilmich6502.it/

rik70
Iper Master
Iper Master
Messaggi: 2489
Iscritto il: gio 10 mar 2011, 9:21
Slackware: 15.0
Kernel: 5.15.x-generic
Desktop: Sway
Distribuzione: Arch Linux

Re: x264 e sorgente interlacciata

Messaggio da rik70 »

@miklos
Grazie.

Allora, ho ottenuto ottimi risultati in questo modo:

crf 20 ==> in questo modo, come dicevi, aumenta considerevolmente il bitrate video e la qualità finale non ne risente - è molto vicina all'originale.

Per la risoluzione:
scale=848:480:flags=0x200 -aspect 1.766

yadif è impostato così:
yadif=mode=1:parity=-1:deint=1 ==> dovrebbe essere equivalente a ' yadif=1:-1:1 '

Con mode=1 viene generato in uscita un fotogramma per ogni campo, portando il framerate da 25 a 50fps, senza nessuna perdita di sincronia audio video. Il deinterlacciamento (deint=1) viene applicato solo sui fotogrammi segnati come interlacciati. il parity=-1 rileva in automatico il tipo di interlacciamento del video in ingresso, ripiegando se fallisce su tff.

Ora non so se tutto questo rientri negli standard, però il raddoppio del framerate porta benefici tangibili: scompare quella sensazione visiva di perdita di fluidità dovuta al deinterlacciamento - o almeno su schermo lcd. La qualità è buona se non di più, e puntando su preset meno veloci - come medium o slower - non si percepiscono grosse differenze.

Notavo che molti filmati americani sul web sono a 60fps - nascar.com ad esempio - segno forse che anche loro fanno una cosa del genere quando codificano.

Ah dimenticavo: il decoder DTT si beve il tutto senza problemi.

Proverò poi col 720p.

A voi l'ardua sentenza.

Avatar utente
414N
Iper Master
Iper Master
Messaggi: 2922
Iscritto il: mer 13 feb 2008, 16:19
Slackware: 15.0
Kernel: 5.15.19
Desktop: KDE5
Località: Bulagna
Contatta:

Re: x264 e sorgente interlacciata

Messaggio da 414N »

My 2 cents:
  • evita qualsiasi riscalatura verso l'alto durante la codifica. Questo è poco sensato con qualsiasi codec video (che non sia vettoriale), in quanto l'immagine viene ingrandita tramite un'interpolazione (leggasi: i pixel mancanti vengono inventati di sana pianta prendendo spunto dai vicini).
  • io sono solito ricodificare le mie registrazioni dal digitale terrestre (formato MPEG2 molto simile a quello dei DVD) usando crf > 20 (tipicamente 24/25), yadif per il deinterlacciamento e un qualche filtro di denoise se serve (occhio che hqdn3d di mplayer è molto "forte" anche quando usato con media intensità, a mio avviso)

rik70
Iper Master
Iper Master
Messaggi: 2489
Iscritto il: gio 10 mar 2011, 9:21
Slackware: 15.0
Kernel: 5.15.x-generic
Desktop: Sway
Distribuzione: Arch Linux

Re: x264 e sorgente interlacciata

Messaggio da rik70 »

Uhau, va anche il 720p. Anche se sono bit sprecati: 480p va + che bene.

Comunque i risultati migliori li ottengo con -profile High e -preset medium. In questo caso il crf imposta il bitrate a valori molto + bassi rispetto all' ultrafast che usavo prima, senza però perdere in qualità.

Però è il parametro subme=6 che fa la differenza. Viene impostato a questo valore a partire dal preset fast. Ponce utilizza addirittura il preset slower, che setta 'subme' a 9 !!! Valori del genere per il mio hw sono proibitivi. Ma questo lo sapevo già 8)

Ok, metto risolto allora.

P.s.
Per i sottotitoli su .mkv come vi regolate? Subrip?

Ciao e grazie ancora.

rik70
Iper Master
Iper Master
Messaggi: 2489
Iscritto il: gio 10 mar 2011, 9:21
Slackware: 15.0
Kernel: 5.15.x-generic
Desktop: Sway
Distribuzione: Arch Linux

Re: [RISOLTO]x264 e sorgente interlacciata

Messaggio da rik70 »

@414N

Grazie, terrò a mente.

ilmich
Master
Master
Messaggi: 1645
Iscritto il: lun 16 lug 2007, 17:39
Slackware: 15.0 64bit
Kernel: 5.15.27
Desktop: kde
Località: Roma

Re: [RISOLTO]x264 e sorgente interlacciata

Messaggio da ilmich »

riuppo questo post per avere eventuali suggerimenti su un 'problema' che ho riscontrato deinterlacciando con yadif delle sorgenti interlacciate.
in pratica sporadicamente in alcune sequenze (non per forza di cose con movimenti rapidi dei soggetti) viene un fastidioso effetto 'slow motion' non inteso pero' come video che scatta causa player, sembra proprio che alcuni frame vengano duplicati, e altri rimossi per tenere il sincronismo audio.

ho risolto usando al posto di yadif il filtro pp=ci.

ho letto da qualche parte che lo si puo' anteporre a yadif per ottenere risultati pressocchè perfetti, ma a me sta cosa nn mi convince troppo.

voi che ne pensate?!?!??!?
#LiveSimple and #ProgramThings
https://github.com/ilmich
http://ilmich6502.it/

Rispondi