Conversione di FLV in MP4 mediante FFMPEG e mantenimento della qualità


26

Sto cercando di usare ffmpeg per convertire i miei file flv in mp4 per riprodurli su dispositivi iOS, ma il video convertito ha una qualità molto peggiore di quello originale.

Ecco il comando che uso:

ffmpeg -i input.flv -ar 22050 output.mp4

Gradirei davvero se qualcuno potesse fornirmi le migliori impostazioni per la conversione da flv a mp4.

ffmpeg  flv  mp4 

Risposte:


42

A seconda dei codec utilizzati nel tuo FLV potresti essere in grado di cavartela semplicemente avvolgendola in un contenitore mp4. Ti serviranno H.264o MPEG4 simple profilevideo e AACaudio. Puoi trovare alcune informazioni sul tuo file sorgente conffmpeg -i input.flv

Non sono sicuro se avere semplicemente H.264 / MPEG4 Simple + AAC sia abbastanza buono o se ci sono opzioni specifiche per i codec supportati. È abbastanza facile testare:

Prova a usare

ffmpeg -i input.flv -c copy -copyts output.mp4

-copytsè copy timestampsche aiuterà la sincronizzazione audio.

Se il problema persiste, prova a forzare i codec audio e video. Questo ricodificherà il file:

ffmpeg -i input.flv -c:v libx264 -crf 23 -c:a libfaac -q:a 100 output.mp4

Per migliorare la qualità del video, è possibile utilizzare un valore CRF inferiore, ad es. Qualsiasi cosa fino a 18. Per ottenere un file più piccolo, utilizzare un CRF più elevato, ma si noti che ciò peggiorerà la qualità.

Per migliorare la qualità audio, utilizzare un valore di qualità superiore. Per FAAC, 100è l'impostazione predefinita.


Ecco un paio di pensieri sul comando ffmpeg suggerito nella domanda.

-arsi riferisce alla frequenza di campionamento audio. Consiglierei di non scherzare con questo fino a quando non capirai meglio le cose. Se vuoi giocare con la codifica audio, regola il bitrate (ad es. -b:a 128k) E lascia che l'encoder scelga cosa fare in base a quello.

Se finisci per andare su questa strada ...

La qualità del CD è di campionamento a 44100Hz; il video tipico utilizza 48000Hz.

Si può notare che 22050 nell'esempio della domanda originale è 1/2 della frequenza di campionamento della qualità cd. se stai convertendo materiale CD in modo discendente, questa è una buona scelta. Se stai iniziando con una sorgente a 48 KHz (cosa che probabilmente sei; di nuovo, questo è molto più comune di 44100 nei file video), invece, utilizzerei 24 KHz. Probabilmente non importa molto, ma può sembrare un po 'meglio e usare un po' meno CPU per fare la conversione.


rileggere la mia risposta ... Oltre alla riga di comando che ho dato sopra, è possibile copiare solo video o solo audio e ricodificare l'altro. ad esempio ... "ffmpeg -i input.foo -vcodec copy -acodec libfaac -ab 128k -copyts output.mp4" questo copierà il flusso video e ricodificherà l'audio in AAC. libfaac non ha una grande qualità ma funziona.
Dan Pritts

Per quanto riguarda il comando di forzare codec audio / video: a partire da settembre 2019, ho scoperto che il ffmpegsupporto perlibaac . Questa domanda suggerisce di utilizzare ffmpegil codificatore AAC nativo tramite -c:a aac o il codec Fraunhofer FDK AAC via -c:a libfdk_aac (che richiede la compilazione ffmpegcon il supporto per libfdk_aac).
Aresnick,
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.