usa ffmpeg para transformar mp4 en el mismo archivo avi de alta calidad?

28

Me gustaría usar ffmpeg para transformar un archivo de video mp4 en avi pero con la misma calidad, incluso si ocupa más espacio. Si simplemente hago:

ffmpeg -i file.mp4 file.mp4.avi

El archivo avi resultante es de muy baja calidad y pixelado. ¿Cómo puedo hacer esta transformación manteniendo la calidad de video y audio?

719016
fuente
3
Puede usar el -sameqinterruptor, que colocará el mismo códec de video (suponiendo H264) en el contenedor AVI. Si su reproductor no admite H264 en AVI, entonces necesita transcodificar el mejor formato de video posible (H264) a un formato mediocre, lo cual no es bueno. Luego asigna una tasa de bits de video más alta XVID (digamos 2000 Kb / s). El audio no importa tanto en mi humilde opinión, pero es mejor convertirlo a MP3 que AC3
zetah

Respuestas:

16

Siempre pierde un poco de calidad cada vez que transcodifica de un códec a otro, video o audio, pero tal vez pueda evitarlo si solo desea cambiar del tipo de contenedor MP4 a un contenedor AVI. codec:copypuede ser útil si no tiene una razón para transcodificar (y debería ser más rápido).

Si debe transcodificar porque necesita usar un códec de video en particular, espero que pueda usar la sugerencia anterior de zetah en su comentario y usar el -sameqinterruptor. Alternativamente, es posible que desee utilizar la qscaleopción para establecer la calidad manualmente. Cuanto menor sea el número, mejor será la calidad, pero más espacio ocupará su archivo.

La última vez que transcodifiqué el video que usé qscale=8.0, pero te sugiero que experimentes para encontrar el óptimo que coincida con la calidad de tu entrada.

Marty Jay menciona amablemente que sameq significa el mismo cuantificador que en la entrada, lo que puede no resultar en la misma calidad. El artículo que cita menciona el uso de la conversión de múltiples pasos, que es una buena manera de lograr una mejor compresión sin sacrificar la calidad.

John S Gruber
fuente
Gracias por los consejos, intentaré -sameqver cómo va.
719016
8
-sameq NO significa la misma calidad; ffmpeg.org/trac/ffmpeg/wiki/…
3
Parece que se recomienda usar la -qscale 0opción
user989762
Bastante viejo, pero recibí esta advertencia tratando de hacer esto hoy:Option 'sameq' was removed. If you are looking for an option to preserve the quality (which is not what -sameq was for), use -qscale 0 or an equivalent quality factor option.
Dave Lugg
10

Mi solución:

ffmpeg -i filename.mp4 -vcodec copy -acodec copy filename.avi

¡¡Disfrutar!!

kuba
fuente
2
Tenga en cuenta que la incorporación de transmisiones AVC en contenedores AVI requiere un truco que sea compatible con muchos reproductores de video impulsados ​​por la comunidad (por ejemplo, VLC, MPlayer, cualquier cosa FFmpeg / Libav o GStreamer, Media Player Classic) pero no por muchos reproductores comerciales (por ejemplo, Windows Media Player y QuickTime / iTunes no lo admiten).
David Foerster
4

Aquí está mi 2 pasos (Perfil simple avanzado) que uso de vez en cuando.

pase 1:

ffmpeg -i file.mp4 -vcodec mpeg4 -vtag XVID -b 990k -bf 2 -g 300 -s 640x360 -pass 1 -an -threads 0 -f rawvideo -y /dev/null

pase 2:

ffmpeg -i file.mp4 -vcodec mpeg4 -vtag XVID -b 990k -bf 2 -g 300 -s 640x360 -acodec libmp3lame -ab 128k -ar 48000 -ac 2 -pass 2 -threads 0 -f avi file.avi
Duffydack
fuente
¡Eso es genial, me produjo un avi muy pequeño con muy buena calidad!
jpo38