FFmpeg: devo ridimensionare il video prima della codifica


0

Attualmente sto codificando la mia raccolta di dvd per comodità.

Prima di codificare questo particolare titolo del DVD, ho realizzato alcuni campioni e quando li ho riprodotti in TV ho notato che i video con l'upscaling (con ffmpeg) sembrano migliori del VOB originale (con l'upscaling dalla TV).

Suppongo sia perché il lettore multimediale della TV applica un ridimensionamento meno efficiente rispetto al filtro di scala di ffmpeg.

Non so se sarà sempre così, quindi ho deciso di mantenere la scala originale per ora.

Forse in futuro finirò per ridimensionare il video codificato (x264, mp4), sto perdendo qualità facendo questo? Devo applicare il filtro di scala durante la codifica del VOB in MP4 o il ridimensionamento di MP4 darà la stessa qualità?

Mentre guardavo i campioni non ho visto alcuna differenza, ma forse mi manca qualcosa dal momento che confrontare i video è molto difficile.


Quali sono le tue impostazioni di codifica?
Gyan,

Sto utilizzando il preset veryslow con due passaggi: ffmpeg -i input.vob -vcodec libx264 -pass 2 -preset veryslow -threads 0 -b:v 900k -acodec copy out.mp4 . Per ridimensionare con ffmpeg, utilizzo -vf "scale=-1:720, crop=1280:720"quando la fonte non è 16: 9, come nel caso.
iznav,

Eviterei di ridimensionare il video codificato. Il tuo bitrate è sul lato inferiore per contenuti a 720p.
Gyan,

@Mulvya Supose Lo aumento a qualcosa come 3000k, finché mi attengo a un intervallo soddisfacente, va bene ridimensionare dopo la codifica?
iznav,

Risposte:


0

Forse in futuro finirò per ridimensionare il video codificato (x264, mp4), sto perdendo qualità facendo questo?

Il ridimensionamento è un'operazione distruttiva che modifica il flusso di bit del video. Quando applichi un filtro di ridimensionamento, non hai altra scelta che ricodificare il tuo video. Durante la ricodifica, puoi ovviamente comprimere il tuo video senza perdita di qualità per mantenerne la qualità, ma in genere utilizzerai un codificatore con perdita (come x264 o x265) per risparmiare spazio e per garantire la compatibilità con diversi dispositivi di riproduzione (non tutte le TV gestiranno senza perdita di dati) video).

Se decidi di ridimensionare in seguito, comprimerai sostanzialmente due volte un video già compresso, ovvero:

  1. VOB originale (già codificato per adattarsi al DVD)
  2. Codifica con libx264
  3. Ridimensiona e ricodifica con libx264

Quindi è necessario assicurarsi che l'output del passaggio due sia abbastanza buono per "sopravvivere" a un altro passaggio di compressione in seguito.

Devo applicare il filtro di scala durante la codifica del VOB in MP4 o il ridimensionamento di MP4 darà la stessa qualità?

Hai due opzioni:

  1. Ridimensiona i tuoi video mentre li ricodificherai dai VOB originali. Ciò farà risparmiare tempo ed eviterai un altro passaggio di codifica. Assicurarsi che per la codifica a due passaggi, si scelga un bitrate corretto per l'output. Ad esempio, quando si esegue il ridimensionamento a 1080p o 720p, scegliere bitrate rispettivamente tra 8 e 10 MBit / so 3–5 MBit / s, rispettivamente.

  2. Ridimensiona i tuoi video in seguito. Qui, potresti perdere qualità a causa della perdita di generazione , poiché stai codificando due volte. Se questo è il tuo piano, assicurati che - almeno per il primo passo di codifica - scegli un bitrate abbastanza alto o un fattore di qualità costante abbastanza basso per l'output. Ad esempio, il tuo primo processo di codifica (non scalato) (da VOB a MP4) potrebbe utilizzare un'impostazione one-pass con-crf 16 . Ciò garantisce un risultato quasi privo di perdite visive.


Nel secondo scenario non ricodificare il video, ma piuttosto copiare i flussi durante l'applicazione del filtro di ridimensionamento. Anche se non ridimensiono il video sorgente, se devo guardare questo video su qualsiasi dispositivo che supporti una risoluzione più elevata, verrà ridimensionato. Usando qualcosa di simile ffmpeg -i source -c copy -vf scale=-1:720 out.mp4sto solo assicurandomi che il filtro di scala utilizzato sia quello di ffmpeg, giusto?
iznav,

Non è possibile copiare il flusso video e ridimensionare contemporaneamente. Come ho scritto sopra, il ridimensionamento è un'operazione distruttiva che richiede la modifica del bitstream. Il tuo comando non è valido e dovresti visualizzare un messaggio di errore: "Scala 'Filtergraph' = -1: 720 'è stata definita per il flusso di output video 0: 0 ma è stata selezionata la copia del codec. Filtro e streamcopy non possono essere usati insieme."
slhck
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.