Inspección técnica de calidad

Los ficheros que contienen audio o vídeo digital se caracterizan por una serie de propiedades que nos informan sobre las cualidades con las que han sido creados, bien como producto de la digitalización de una fuente de datos analógicos 1, de una captura realizada con un dispositivo apropiado (verbigracia, un móvil) o de una extracción desde un soporte de almacenamiento digital (por ejemplo, al ripear una película en DVD).

cineLa calidad de un flujo de datos multimedia viene determinada por unos parámetros que poseen valores que nos sirven como indicador del nivel de excelencia del vídeo o audio que transporta dicho flujo. Algunos de los parámetros más comunes en un audio son la tasa de bits (y su tipo), la frecuencia de muestreo, el número de canales o el modo de comprensión, entre otros. Y en los vídeos, los parámetros más significativos son la tasa de bits, la proporción de aspecto, la frecuencia de fotogramas por segundo o la resolución de imagen, y algunos más.

Si disponemos de una buena videoteca o audioteca, y deseamos conocer la calidad de imagen de una película o de algún vídeo que hayamos grabado con nuestra cámara, o la calidad de sonido de alguna canción o del podcast que nos hemos descargado,cinta audio sin tener que recurrir a las habituales aplicaciones de escritorio, entonces lo mejor es abrir el terminal y utilizar algunas de las utilidades que GNU/Linux pone a nuestra disposición para extraer los datos asociados a esos parámetros de calidad, u otra información relevante (formato, codificador , duración, etc.). Alguna de esas utilidades sirven para evaluar ficheros que contienen vídeo y audio, mientras que otras solo pueden evaluar audio.

Voy a hacer un repaso por algunas de las más populares.

  • soxi : forma parte del paquete sox (el cual habrá que instalar), la navaja suiza de programas de procesamiento de sonido. Esta utilidad muestra la información contenida en la cabecera de un archivo de sonido (no funciona con los de vídeo). Es capaz de reconocer la mayoría de los formatos existentes. Ejemplo:
    $ soxi 1_Adagio.mp3
    Input File : '1_Adagio.mp3'
    Channels : 2
    Sample Rate : 48000
    Precision : 16-bit
    Duration : 00:03:18.34 = 9520272 samples ~ 14875.4 CDDA sectors
    File Size : 7.93M
    Bit Rate : 320k
    Sample Encoding: MPEG audio (layer I, II or III)
    Comments :
    Title=Adagio
    Artist=Beethoven
    Album=Fantasia para piano, coros y orquesta en Do menor Opus 80
    Tracknumber=1
    Genre=Other
    
  • file : es un comando del sistema que permite determinar el tipo de fichero de audio que se le pasa como argumento y el valor de unos pocos parámetros de sonido. Ejemplo:
    $ file 3_Adagio.ma.non.troppo.ogg
    3_Adagio.ma.non.troppo.ogg: Ogg data, Vorbis audio, stereo, 48000 Hz, ~320000 bps, created by: Xiph.Org libVorbis I
    

    Si se aplica sobre un fichero de vídeo no aporta ninguna información.

  • mplayer : además de reproducir vídeo y audio, mplayer puede servir para mostrar información del fichero que estén reproduciendo, solo es necesario ejecutarlo con la opción adecuada. Un ejemplo de uso con un vídeo:
    $ mplayer -identify DHyM_4x09.mp4
    
    MPlayer 1.2.1 (Debian), built with gcc-5.3.1 (C) 2000-2016 MPlayer Team
    ID_VIDEO_ID=0
    [lavf] stream 0: video (h264), -vid 0
    ID_AUDIO_ID=0
    [lavf] stream 1: audio (aac), -aid 0, -alang und
    VIDEO: [H264] 720x404 24bpp 25.000 fps 480.1 kbps (58.6 kbyte/s)
    Clip info:
    major_brand: isom
    ID_CLIP_INFO_NAME0=major_brand
    ID_CLIP_INFO_VALUE0=isom
    minor_version: 1
    ID_CLIP_INFO_NAME1=minor_version
    ID_CLIP_INFO_VALUE1=1
    compatible_brands: isomavc1
    ID_CLIP_INFO_NAME2=compatible_brands
    ID_CLIP_INFO_VALUE2=isomavc1
    creation_time: 2015-06-03 00:25:51
    ID_CLIP_INFO_NAME3=creation_time
    ID_CLIP_INFO_VALUE3=2015-06-03 00:25:51
    ID_CLIP_INFO_N=4
    Load subtitles in ./
    ID_FILENAME=DHyM_4x09.mp4
    ID_DEMUXER=lavfpref
    ID_VIDEO_FORMAT=H264
    ID_VIDEO_BITRATE=480104
    ID_VIDEO_WIDTH=720
    ID_VIDEO_HEIGHT=404
    ID_VIDEO_FPS=25.000
    ID_VIDEO_ASPECT=0.0000
    ID_AUDIO_FORMAT=MP4A
    ID_AUDIO_BITRATE=64672
    ID_AUDIO_RATE=44100
    ID_AUDIO_NCH=2
    ID_START_TIME=0.00
    ID_LENGTH=1241.11
    ID_SEEKABLE=1
    ID_CHAPTERS=0
    Failed to open VDPAU backend libvdpau_va_gl.so: cannot open shared object file: No such file or directory
    [vdpau] Error when calling vdp_device_create_x11: 1
    ==========================================================================
    Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
    libavcodec version 56.60.100 (external)
    Selected video codec: [ffh264] vfm: ffmpeg (FFmpeg H.264)
    ==========================================================================
    ID_VIDEO_CODEC=ffh264
    ==========================================================================
    Opening audio decoder: [ffmpeg] FFmpeg/libavcodec audio decoders
    AUDIO: 44100 Hz, 2 ch, floatle, 64.7 kbit/2.29% (ratio: 8084->352800)
    ID_AUDIO_BITRATE=64672
    ID_AUDIO_RATE=44100
    ID_AUDIO_NCH=2
    Selected audio codec: [ffaac] afm: ffmpeg (FFmpeg AAC (MPEG-2/MPEG-4 Audio))
    ==========================================================================
    AO: [pulse] 44100Hz 2ch floatle (4 bytes per sample)
    ID_AUDIO_CODEC=ffaac
    Starting playback...
    Movie-Aspect is 1.78:1 - prescaling to correct movie aspect.
    ID_VIDEO_ASPECT=1.7772
    VO: [xv] 720x404 => 720x406 Planar YV12
    A: 7.9 V: 7.9 A-V: 0.000 ct: -0.040 0/ 0 9% 2% 0.9% 0 0
    

    Como se puede ver, devuelve más información que las utilidades anteriores. El único inconveniente es que, tras ejecutarse, comienza a reproducir el fichero especificado como argumento, haciéndose necesario detenerla, bien pulsando Ctrl-c si es un audio, o cerrando la ventana si es un vídeo.

    Mplayer info

    Extraer datos multimedia con ‘Mplayer’


    Evidentemente, será necesario haber instalado el paquete mplayer.
  • exiftool : es una utilidad que sirve para leer y/o escribir meta-información de una amplia variedad de ficheros, incluyendo ficheros multimedia. Soporta muchos formatos de metadatos diferentes. He aquí un ejemplo aplicado a un fichero de vídeo:
    $ exiftool DHyM_4x09.mp4
    
    ExifTool Version Number         : 10.10
    File Name                       : DHyM_4x09.mp4
    File Size                       : 81 MB
    File Permissions                : rw-r--r--
    File Type                       : MP4
    File Type Extension             : mp4
    MIME Type                       : video/mp4
    Major Brand                     : MP4  Base Media v1
    Minor Version                   : 0.0.1
    Compatible Brands               : isom, avc1
    Duration                        : 0:20:41
    Preferred Rate                  : 1
    Preferred Volume                : 100.00%
    Track ID                        : 1
    Track Duration                  : 0:20:39
    Image Width                     : 718
    Image Height                    : 404
    Compressor ID                   : avc1
    Source Image Width              : 720
    Source Image Height             : 404
    X Resolution                    : 72
    Y Resolution                    : 72
    Bit Depth                       : 24
    Buffer Size                     : 54848
    Max Bitrate                     : 1450616
    Average Bitrate                 : 480104
    Video Frame Rate                : 25
    Media Time Scale                : 22050
    Media Duration                  : 0:20:41
    Media Language Code             : und
    Handler Type                    : Audio Track
    Handler Description             : GPAC ISO Audio Handler
    Balance                         : 0
    Audio Format                    : mp4a
    Audio Channels                  : 2
    Audio Bits Per Sample           : 16
    Audio Sample Rate               : 22050
    Movie Data Size                 : 84430922
    Movie Data Offset               : 525434
    Avg Bitrate                     : 544 kbps
    Image Size                      : 718x404
    Megapixels                      : 0.290
    

    Otro ejemplo, aplicado a un archivo de sonido:

    $ exiftool 3_Adagio.ma.non.troppo.ogg
    ExifTool Version Number         : 10.10
    File Name                       : 3_Adagio.ma.non.troppo.ogg
    File Size                       : 5.1 MB
    File Permissions                : rw-r--r--
    File Type                       : OGG
    File Type Extension             : ogg
    MIME Type                       : audio/x-ogg
    Vorbis Version                  : 0
    Audio Channels                  : 2
    Sample Rate                     : 48000
    Maximum Bitrate                 : 4.29 Gbps
    Nominal Bitrate                 : 320 kbps
    Minimum Bitrate                 : 4.29 Gbps
    Vendor                          : Xiph.Org libVorbis I 20150105
    Title                           : Adagio.ma.non.troppo
    Artist                          : Beethoven
    Album                           : Fantasia para piano, coros y orquesta en Do menor Opus 80
    Genre                           : Other
    Track Number                    : 3
    Duration                        : 0:02:13 (approx
    

    Para utilizarlo es preciso instalar el paquete libimage-exiftool-perl.

  • avconv, ffmpeg o avprobe: estas tres utilidades producen idénticos resultados, ya que forman parte de dos proyectos distintos (ffmpeg y libav) con un origen común 2 que comparten las mismas librerías. La única diferencia es que avconv y ffmpeg se ejecutan con la opción -i, mientras que avprobe no la necesita. Pongo un ejemplo aplicado a un vídeo haciendo uso de avprobe:

    $ avprobe DHyM_4x09.mp4
    ffprobe version 2.8.11-0ubuntu0.16.04.1 Copyright (c) 2007-2017 the FFmpeg developers
    built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.4) 20160609
    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'DHyM_4x09.mp4':
    Metadata:
    major_brand : isom
    minor_version : 1
    compatible_brands: isomavc1
    creation_time : 2015-06-03 00:25:51
    Duration: 00:20:41.11, start: 0.000000, bitrate: 547 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 720x404 [SAR 404:405 DAR 16:9], 480 kb/s, SAR 359:360 DAR 359:202, 25 fps, 25 tbr, 25k tbn, 50 tbc (default)
    Metadata:
    creation_time : 2015-06-03 00:25:51
    handler_name : /var/www/cgi-bin/uploads/01/01033/s92ibg9l4dlv.h264 - Imported with GPAC 0.4.6-DEV (internal rev. 8)
    Stream #0:1(und): Audio: aac (HE-AAC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 64 kb/s (default)
    Metadata:
    creation_time : 2015-06-03 00:25:51
    handler_name : GPAC ISO Audio Handler
    

    Y otro aplicado a un audio:

    $ avprobe 3_Adagio.ma.non.troppo.ogg
    ffprobe version 2.8.11-0ubuntu0.16.04.1 Copyright (c) 2007-2017 the FFmpeg developers
    built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.4) 20160609
    Input #0, ogg, from '3_Adagio.ma.non.troppo.ogg':
    Duration: 00:02:40.83, start: 0.000000, bitrate: 264 kb/s
    Stream #0:0: Audio: vorbis, 48000 Hz, stereo, fltp, 320 kb/s
    Metadata:
    TITLE : Adagio.ma.non.troppo
    ARTIST : Beethoven
    ALBUM : Fantasia para piano, coros y orquesta en Do menor Opus 80
    GENRE : Other
    track : 3
    

    Es necesario instalar el paquete ffmpeg o libav-tools, según queramos utilizar ffmpeg o avprobe/avconv.

  • mediainfo : la utilidad de línea de comandos que ofrece, seguramente, la información más completa sobre las características de cualquier fichero multimedia. Vamos a verlo con un video:
    $ mediainfo DHyM_4x09.mp4
    
    General
    Complete name : DHyM_4x09.mp4
    Format : MPEG-4
    Format profile : Base Media
    Codec ID : isom (isom/avc1)
    File size : 81.0 MiB
    Duration : 20mn 41s
    Overall bit rate mode : Variable
    Overall bit rate : 548 Kbps
    
    Video
    ID : 1
    Format : AVC
    Format/Info : Advanced Video Codec
    Format profile : High@L3
    Format settings, CABAC : Yes
    Format settings, ReFrames : 5 frames
    Codec ID : avc1
    Codec ID/Info : Advanced Video Coding
    Duration : 20mn 39s
    Bit rate : 480 Kbps
    Maximum bit rate : 1 451 Kbps
    Width : 720 pixels
    Height : 404 pixels
    Display aspect ratio : 16:9
    Original display aspect ratio : 16:9
    Frame rate mode : Constant
    Frame rate : 25.000 fps
    Color space : YUV
    Chroma subsampling : 4:2:0
    Bit depth : 8 bits
    Scan type : Progressive
    Bits/(Pixel*Frame) : 0.066
    Stream size : 71.0 MiB (88%)
    Title : /var/www/cgi-bin/uploads/01/01033/s92ibg9l4dlv.h264 - Imported with GPAC 0.4.6-DEV (internal rev. 8)
    Writing library : x264 core 118
    
    Audio
    ID : 2
    Format : AAC
    Format/Info : Advanced Audio Codec
    Format profile : HE-AAC / LC
    Codec ID : 40
    Duration : 20mn 41s
    Bit rate mode : Variable
    Bit rate : 64.7 Kbps
    Maximum bit rate : 91.0 Kbps
    Channel(s) : 2 channels
    Channel positions : Front: L R
    Sampling rate : 44.1 KHz / 22.05 KHz
    Frame rate : 21.533 fps (1024 spf)
    Compression mode : Lossy
    Stream size : 9.57 MiB (12%)
    

    Si eres de los que prefiere trabajar con gestores gráficos de ficheros, entonces puedes optar por la versión GUI de esta utilidad, que muestra en una ventana la misma información en diversos formatos.

    Mediainfo GUI

    Interfaz gráfica de Mediainfo


    Se pueden probar ambas versiones instalando los paquetes mediainfo y mediainfo-gui.

Y eso es todo. Un día de estos explicaré como modificar estos parámetros de calidad, tanto para ficheros de audio como de vídeo.

 


  1. Por ejemplo, como cuando se digitaliza la música procedente de un tocadiscos de vinilo con salida USB
  2. LibAV es un proyecto bifurcado de ffmpeg como producto de diversas desavenencias surgidas en 2011 dentro de la comunidad de desarrolladores de este último proyecto. Durante años, ffmpeg fue sustituido por libav en Debian y sus distribuciones derivadas, creando confusión entre sus usuarios por la creencia de que ffmpeg iba a ser abandonado y por ciertas coincidencias de nomenclatura. Hasta que, en 2015, Debian (y sus derivadas) anunció su decisión de volver a ffmpeg por cuestiones técnicas que evidencian una notable superioridad de ffmpeg sobre libav (soporta más codificadores y contenedores). Tras este anuncio se está poniendo en entredicho la continuidad del proyecto libav y se ha sugerido una posible fusión entre ambos proyectos. 
Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s