Tengo una secuencia de video con las siguientes propiedades:
Stream #0:0: Video: mpeg4 (Advanced Simple Profile) (XVID / 0x44495658), yuv420p, 720x416 [SAR 1:1 DAR 45:26], 1908 kb/s, 25 fps, 25 tbr, 25 tbn, 25 tbc
Cuando lo ejecuto en VLC, tengo que presionar "A" para cambiar la relación de aspecto a "4: 3" para que el video se muestre con la relación de aspecto correcta.
Mirando los hechos del video, ¿el error es que a) el video real se ha estirado incorrectamente en los datos de píxeles, o b) simplemente hay algún valor de metadatos que se ha configurado incorrectamente?
Si es lo primero, sé que puedo volver a codificar el video y cambiar el ancho y la altura. Pero si es esto último, ¿qué comando ffmpeg ejecuto para corregir los metadatos sin volver a codificar el video?
-c copy
y escalar al mismo tiempo; sin embargo, puede usar-aspect
para cambiar la relación de aspecto a nivel de contenedor (pero no el nivel de transmisión).-aspect
funciona para la reproducciónffplay
, pero no en WMP o MPC-HC. Agrega un elemento SAR / DAR adicional a laStream #…
línea de informaciónFFmpeg/probe/play
pero no parece ser una solución para la reproducción general. Estirar el video con la ventana parece ser la solución más fácil para la reproducción de MPC-HC.La respuesta de Delgado es correcta: MP4Box puede hacer esto, pero la
-par
opción no funciona como se describe. Con un-out
parámetro (para no perturbar su archivo original):Cuando usa
-par stream-number=width:height
, define la relación de aspecto de píxeles, es decir, el resultado de dividir la relación de aspecto del dispositivo por la relación de aspecto de almacenamiento. (De manera equivalente, está describiendo la relación de aspecto de un píxel de origen). Por ejemplo, suponga que tiene una fuente de DVD de 720 × 480, y la relación de aspecto de visualización correcta es 4: 3. Para este caso, necesitas:porque (4/3) / (720/480) = 8/9.
Si la fuente representa verdaderos píxeles SD NTSC (en cuyo caso solo se supone que los 704 × 480 píxeles centrales se asignan a una pantalla de 4 × 3, con sobreescaneo de 8 píxeles a cada lado), el comando correcto sería:
porque (4/3) / (704/480) = 10/11: exactamente la relación de aspecto de píxeles de referencia para video NTSC de definición estándar.
Para el caso dado en la pregunta, si realmente es 4: 3, eso da una relación de aspecto de píxeles muy extraña: (4/3) / (720/416) = 104/135. Tiene 720 de ancho, lo que sugiere una fuente de DVD; es un video de 25 fps, que sugiere PAL, pero el PAR funciona a menos de 1, lo que sugiere NTSC. Podría ser 4: 5, supongo (muy cerca de 104: 135), pero no sé nada que produzca esa relación de aspecto de píxeles; tal vez intente eso primero, y luego intente 3: 4 si todavía parece demasiado estirado horizontalmente. Si está seguro de que es exactamente 4: 3, por supuesto, solo use 104: 135.
fuente
ffmpeg no puede cambiar los parámetros de una transmisión de video sin volver a codificar, MP4Box (parte de gpac ) y mkvmerge sí. En el caso de una transmisión de video y una relación de aspecto real / correcta de 4: 3, puede probar:
Para verificar antes y después:
ffmpeg -i VideoFile.mp4
fuente
Cambiar el SAR sin volver a codificar también funciona
ffmpeg
al.mp4
usar elh264_metadata
como Gyan señaló aquí :fuente