Conversión de FLV a MP4 usando FFMPEG y preservando la calidad

26

Estoy tratando de usar ffmpeg para convertir mis archivos flv a mp4 para reproducirlos en dispositivos iOS, pero el video convertido tiene una calidad mucho peor que la original.

Aquí está el comando que uso:

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

Realmente agradecería si alguien pudiera proporcionarme la mejor configuración para la conversión de flv a mp4.


fuente

Respuestas:

42

Dependiendo de los códecs utilizados en su FLV, puede salirse con la suya simplemente envolviéndolo en un contenedor mp4. Necesitarás video H.264o audio. Puede encontrar información sobre su archivo fuente conMPEG4 simple profileAACffmpeg -i input.flv

No estoy seguro de si simplemente tener H.264 / MPEG4 Simple + AAC es lo suficientemente bueno o si hay opciones específicas para los códecs que son compatibles. Es bastante fácil probar:

Intenta usar

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

-copytses copy timestampsque ayudará a la sincronización de audio.

Si eso no funciona, intente forzar los códecs de audio y video. Esto volverá a codificar el archivo:

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

Para mejorar la calidad del video, puede usar un valor CRF más bajo, por ejemplo, cualquier cosa hasta 18. Para obtener un archivo más pequeño, use un CRF más alto, pero tenga en cuenta que esto degradará la calidad.

Para mejorar la calidad del audio, use un valor de mayor calidad. Para FAAC, 100es el valor predeterminado.


Aquí hay un par de pensamientos sobre el comando ffmpeg sugerido en la pregunta.

-arse refiere a la frecuencia de muestreo de audio. Recomiendo no jugar con esto hasta que comprenda mejor las cosas. Si desea jugar con codificación de audio, ajuste la tasa de bits (por ejemplo, -b:a 128k) y deje que el codificador elija qué hacer en función de eso.

Si terminas yendo por este camino ...

La calidad del CD es de muestreo de 44100Hz; El video típico utiliza 48000Hz.

Puede observar que 22050 en el ejemplo de la pregunta original es la mitad de la frecuencia de muestreo de calidad de CD. Si está convirtiendo material de CD, esta es una buena opción. Si está comenzando con una fuente de 48KHz (que probablemente sea; nuevamente, esto es mucho más común que 44100 en archivos de video) en su lugar usaría 24Khz. Probablemente no importará mucho, pero puede sonar un poco mejor y usar un poco menos de CPU para hacer la conversión.

Dan Pritts
fuente
releyendo mi respuesta ... Además de la línea de comando que di arriba, puedes copiar solo video o solo audio, y volver a codificar el otro. por ejemplo ... "ffmpeg -i input.foo -vcodec copy -acodec libfaac -ab 128k -copyts output.mp4" esto copiará el flujo de video y volverá a codificar el audio en AAC. libfaac no tiene una gran calidad pero funciona.
Dan Pritts
Con respecto al comando que obliga a los códecs de audio / video: a partir de septiembre de 2019, descubrí que se ffmpeginterrumpió el soporte paralibaac . Esta pregunta sugiere usar ffmpegel codificador AAC nativo a través de -c:a aac o el códec Fraunhofer FDK AAC vía -c:a libfdk_aac (que requiere compilación ffmpegcon soporte para libfdk_aac).
aresnick