Saltar al contenido

Obteniendo la dimensión / resolución / ancho x alto del video de ffmpeg

Solución:

Usar ffprobe

Ejemplo 1: con claves / nombres de variables

ffprobe -v error -show_entries stream=width,height -of default=noprint_wrappers=1 input.mp4
width=1280
height=720

Ejemplo 2: solo ancho x alto

ffprobe -v error -show_entries stream=width,height -of csv=p=0:s=x input.m4v
1280x720

Ejemplo 3: JSON

ffprobe -v error -select_streams v -show_entries stream=width,height -of json input.mkv 
{
    "programs": [

    ],
    "streams": [
        {
            "width": 1280,
            "height": 720
        }
    ]
}

Ejemplo 4: JSON Compact

ffprobe -v error -select_streams v -show_entries stream=width,height -of json=compact=1 input.mkv 
{
    "programs": [

    ],
    "streams": [
        { "width": 1280, "height": 720 }
    ]
}

Ejemplo 5: XML

ffprobe -v error -select_streams v -show_entries stream=width,height -of xml input.mkv 
<?xml version="1.0" encoding="UTF-8"?>
<ffprobe>
    <programs>
    </programs>

    <streams>
        <stream width="1280" height="720"/>
    </streams>
</ffprobe>

Qué hacen las opciones:

  • -v error Realice una salida silenciosa, pero permita que se muestren los errores. Excluye la información de salida FFmpeg genérica habitual, incluida la versión, la configuración y los detalles de entrada.

  • -show_entries stream=width,height Solo muestra el width y height información de flujo.

  • -of La opción elige el formato de salida (predeterminado, compacto, csv, plano, ini, json, xml). Consulte FFprobe Documentation: Writers para obtener una descripción de cada formato y ver opciones de formato adicionales.

  • -select_streams v:0 Esto se puede agregar en caso de que su entrada contenga múltiples transmisiones de video. v:0 seleccionará solo el primer flujo de video. De lo contrario, obtendrás tantos width y height salidas ya que hay secuencias de video. -select_streams v se puede usar para mostrar información de todas las transmisiones de video y evitar el audio vacío stream info en salida JSON y XML.

  • Consulte la documentación de FFprobe y FFmpeg Wiki: FFprobe Tips para obtener más información.

Eche un vistazo a mediainfo. Maneja la mayoría de los formatos que existen.

Si está buscando una forma de analizar la salida de ffmpeg, use la expresión regular d+xd+

Ejemplo usando perl:

$ ./ffmpeg -i test020.3gp 2>&1 | perl -lane 'print $1 if /(d+xd+)/'
176x120

Ejemplo usando python (no perfecto):

$ ./ffmpeg -i /nfshome/enilfre/pub/test020.3gp 2>&1 | python -c "import sys,re;[sys.stdout.write(str(re.findall(r'(d+xd+)', line))) for line in sys.stdin]"

[][][][][][][][][][][][][][][][][][][][‘176×120’][][][]

Las frases de Python no son tan pegadizas como las de Perl 🙂

De la sugerencia de Fredrik anterior, así es como lo hice usando MediaInfo (http://mediainfo.sourceforge.net/en):

>>> p1 = subprocess.Popen(['mediainfo', '--Inform=Video;%Width%x%Height%',         
    '/Users/david/Desktop/10stest720p.mov'],stdout=PIPE)
>>> dimensions=p1.communicate()[0].strip('n')
>>> dimensions
'1280x688'
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *