Come ottenere la migliore qualità durante la conversione da mp4 ad avi con ffmpeg?


11

Quando lo uso, la qualità non sembra male.

ffmpeg -same_quant -i video.mp4 video.avi

Nella ffmpegdocumentazione è scritto: "Nota che questa NON È STESSA QUALITÀ. Non utilizzare questa opzione se non sai di averne bisogno."

Ottengo con -same_quantla migliore qualità o esiste un'opzione che offre la stessa qualità dell'input ed è più consigliata?


A seconda dei codec utilizzati (alcuni codec non sono compatibili con alcuni contenitori), è sempre possibile semplicemente copiare gli stream ( -codec copy). Questo è il modo migliore per evitare cambiamenti di qualità, poiché non stai ricodificando i flussi, ma semplicemente riconfezionandoli in un contenitore diverso.
njsg,

Quando provo questo ottengo: Unknown decoder 'copy'.
sid_com,

3
Sembra che -codec copydebba andare dopo -i video.mp4 - puoi provare ffmpeg -i video.mp4 -codec copy video.avi? ( -same_quantfunziona anche qui, ma non farà nulla, poiché questo copia solo i flussi)
njsg

Per quanto riguarda il posizionamento delle opzioni della riga di comando di ffmpeg, consultare la documentazione di ffmpeg - 2 Descrizione : Ecco un estratto: Come regola generale, le opzioni vengono applicate al file specificato successivo . Pertanto, l'ordine è importante, ...
Peter

Grazie! Ora con -codec copyil posto giusto è funziona.
sid_com,

Risposte:


14

(adattato dai commenti sopra)

A seconda dei codec utilizzati (alcuni codec non sono compatibili con alcuni contenitori), è sempre possibile semplicemente copiare gli stream ( -codec copy). Questo è il modo migliore per evitare cambiamenti di qualità, poiché non stai ricodificando i flussi, ma semplicemente riconfezionandoli in un contenitore diverso.

Quando si tratta di file audio / video, è importante tenere presente che i contenitori sono per lo più indipendenti dai codec utilizzati. È comune vedere persone che si riferiscono a file come "video AVI" o "video MP4", ma questi sono contenitori e ci dicono poco sul fatto che un lettore sarà in grado di riprodurre i flussi, come, a parte le limitazioni tecniche (ad esempio, AVI potrebbe avere problemi con h264 e Ogg Vorbis ), è possibile utilizzare qualsiasi codec.

-same_quantsembra essere un modo per dire a ffmpeg di provare a ottenere una qualità simile, ma non appena ricodificherai il video (almeno con i codec con perdita), non avrai modo di ottenere la stessa qualità. Se sei interessato alla qualità, una buona regola empirica è quella di evitare la ricodifica dei flussi quando possibile.

Quindi, per copiare i flussi con ffmpeg, dovresti:

ffmpeg -i video.mp4 -codec copy video.avi

( Come accennato da @ Peter.O , l'ordine delle opzioni è importante, quindi è lì che -codec copydevi andare. Potresti comunque continuare -same_quant, ma non avrà alcun effetto poiché non stai ricodificando i flussi.)


La tua soluzione funziona per me. Vedo che avconvora è raccomandato al posto di ffmpeged in effetti è quello che ho usato.
Faheem Mitha,

3

Sotto FreeBSD 8. 2, ho provato -codec copy ma ho anche decodificato il messaggio sconosciuto. Dopo tentativi ed errori ho trovato quello che funziona sotto FreeBSD:

ffmpeg -i video.mp4 -vcodec copy video.avi
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.