Tengo un archivo WMV (v9 (WMV3), 960x720, 30.000030 fps, planar 4: 2: 0 YUV, producido por PowerPoint 2010) y necesito convertirlo a MPEG2, el único formato que mi televisor puede leer desde una unidad flash USB (También probé MP4 / h.264, AVI / XVID, nada más que MPEG2 funciona).
Me las he arreglado para el trabajo con simple
ffmpeg -i "in.wmv" -c:v mpeg2video "out.mpg"
pero la calidad del resultado es terrible (se introducen distorsiones visuales claramente visibles) y la reproducción no es uniforme (demasiado lenta en algunos momentos).
También he intentado
ffmpeg -i "in.wmv" -c:v mpeg2video -pix_fmt yuv420p -me_method epzs -threads 4 -r 30.000030 -g 45 -bf 2 -trellis 2 -cmp 2 -subcmp 2 -s 960x720 -b 2500k -bt 300k -async 1 -y "out.mpg"
(Encontré esto en algún lugar de Internet y lo modifiqué un poco; cambié la revelación, la frecuencia de actualización y el formato de salida (de VOB a MPG simple)), pero la calidad sigue siendo demasiado mala.
¿Qué parámetros debo usar para guardar la mayor calidad posible? La relación de compresión no importa en absoluto, incluso un aumento en el tamaño del archivo es aceptable.
Otra cosa que realmente necesito (he decidido no incluirlo en el título de la pregunta para evitar que sea demasiado específico, pero agradecería que se tenga en cuenta en las respuestas) es agregar silencio puro como una banda sonora: no hay sonido en el original pero el televisor se queja y me gustaría deshacerme de esta queja. He generado un archivo OGG Vorbis de silencio de la misma longitud (segunda precisión) usando Audacity pero no puedo fusionarlo con el video:
ffmpeg -i in.mpg -i silence.ogg -c:v copy -c:a libmp3lame out.mpg
e incluso desnudo
ffmpeg -i in.mpg -c:v copy -out.mpg
da errores de "desbordamiento de búfer" y "paquete demasiado grande". (in.mpg son los archivos producidos por el mismo binario FFMPEG y el mismo archivo WMV de origen utilizando los dos primeros comandos de la pregunta).
Estoy usando una compilación Zeranoe FFMPEG en Windows 7.
Philips 42PFL3606H/58
, estoy codificando a H.264 conffmpeg -i "in.wmv" -sws_flags lanczos+accurate_rnd -c:v libx264 -crf 20 -preset slow -profile:v baseline -level 3.0 -pix_fmt yuv420p -tune fastdecode -x264-params keyint=240:min-keyint=20 "out.mp4"
- el perfil es el más bajo que conozco y se utilizan aún más ajustes para hacer que la reproducción del archivo resultante sea una tarea más fácil.Respuestas:
El problema es que la tasa de bits predeterminada para el MPEG-2 es bastante baja (como con la mayoría de los otros codificadores de video en ffmpeg, el H.264 es una excepción). MPEG-2 tampoco es la mejor opción como códec en estos días.
Mejor calidad para MPEG-2
Tiene algunas opciones si desea seguir con MPEG-2:
Aumentar la tasa de bits. Ahora lo estás usando
-b:v 2500k
. Si se trata de video HD, no llegará lejos con solo 2.5 MBit / s. Necesita al menos el doble o incluso más para que el resultado se vea bien. Por ejemplo, use-b:v 6000k -target pal-dvd
.Para 720p, creo que aún debería usar una tasa de bits más alta. Recuerde que los DVD usan MPEG-2 y vienen en aproximadamente 4.7 GB por 2 horas de película, por lo que termina con alrededor de 5–8 MBit / s. MPEG-2 realmente no es muy eficiente en compresión y funciona mejor a velocidades de bit más altas.
Use una configuración de calidad específica. Cambio
-b:v …
a-qscale:v 2
. El número aquí varía de 1 a 31 y mayor significa menor calidad. No tiene sentido ir más allá de 4 o 5. Si no le importa la tasa de bits, comience con 2 y vea si eso funciona para usted.Jugar con la cantidad de cuadros B, el método de estimación de movimiento o el tamaño de GOP puede modificar un poco la calidad, pero no dará lugar a grandes cambios.
Audio silencioso
Se usa
-f lavfi -i aevalsrc=0
para generar una transmisión de audio silenciosa. Por ejemplo:Es posible que deba agregar
-target pal-dvd
al comando anterior para forzar un cierto tamaño de búfer.Elegí MP3 como códec. Los archivos MPEG no pueden contener audio que no sea audio MPEG Layer I y II, así como transmisiones PCM, por lo que usar un archivo Ogg Vorbis silencioso no funcionará a menos que también convierta la transmisión de audio (que no es lo que está haciendo cuando usa
-c:a copy
) .Usa un códec de video diferente
Me sorprende que un televisor que reproduce archivos de video lea MPEG-2 pero no otra cosa. Se debe admitir al menos el video MPEG-4 Parte II (eso es lo que se conoce como "DivX", un codificador MPEG-4 Parte II). Entonces podrías probar:
Es posible que su televisor también sea compatible con H.264, pero solo un cierto perfil. Intente usar el
baseline
perfil, por ejemplo:En el ejemplo anterior, he usado la opción CRF para establecer la calidad en lugar de
qscale
. Consulte la guía de codificación H.264 para más información.fuente
ffmpeg -i "in.wmv" -f lavfi -i aevalsrc=0 -shortest -c:v libxvid -qscale:v 2 -c:a libmp3lame "out.mp4"
): codifica alrededor de 100 cuadros y luego comienza a inundar la pantalla con errores como[mpeg @ 02f69ba0] buffer underflow i=0 bufi=235538 size=239761
y[mpeg @ 02f69ba0] packet too large, ignoring buffer limits to mux it
.-b:v
. Lo agregué a mi respuesta. Con respecto a la configuración del codificador: No puede hacer que cada cuadro sea un cuadro B. Además, necesita una estimación de movimiento: cuanto más exhaustivo sea el método, mejor será la compresión. Pero si se trata de un video dinámico, lo primero que querrá es aumentar significativamente la tasa de bits. La configuración de codificación realmente no tiene mucho impacto. En cuanto a su error, ¿está seguro de que este es el error del comando correcto? Un[mpeg]
error solo puede ocurrir si su archivo de salida es.mpg
, no cuando lo es.mp4
.ffmpeg -i "in.wmv" -f lavfi -i aevalsrc=0 -shortest -c:v mpeg2video -qscale:v 2 -c:a libmp3lame "out.mpg"
por supuesto.-target pal-dvd
resuelve el problema,-bufsize
no funciona (lo he intentado-b:v 7M -bufsize 7M -maxrate 7M
).Diría de inmediato que si el tamaño del archivo realmente no importa, simplemente experimente aumentando la tasa de bits.
Para el audio silencioso, es posible que desee usar ffmpeg, no sé lo suficiente sobre Audacity como para dar algún tipo de comentario. He usado esto antes.
Sin embargo, esto no funcionará para usted, ya que está utilizando el contenedor mpg, por lo que es posible que desee probarlo (contenedor mp3)
Parecía funcionar para mí.
fuente