Comment puis-je obtenir la résolution (largeur et hauteur) d'un fichier vidéo à partir d'une ligne de commande linux?

j'ai fouillé dans la documentation de MPlayer/mencoder et ffmpeg et je n'arrive pas à trouver quelque chose . Je ne suis pas particulièrement pointilleux quant au format de sortie car je peux utiliser une expression régulière pour le retirer, Je ne semble pas pouvoir obtenir les données en premier lieu.

36

9 réponses

MediaInfo a une version en ligne de commande et fournit les dimensions ainsi que tonnes d'autres informations.

11
répondu Joachim Sauer 2009-03-26 00:14:56

Utiliser ffprobe (une partie de FFmpeg toolkit)

exemple:

ffprobe -v quiet -print_format json -show_format -show_streams ~/Movies/big_buck_bunny_720p_5mb.mp4

sortie:

{
    "streams": [
        {
            "index": 0,
            "codec_name": "h264",
            "codec_long_name": "H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10",
            "profile": "Main",
            "codec_type": "video",
            "codec_time_base": "1/50",
            "codec_tag_string": "avc1",
            "codec_tag": "0x31637661",
            "width": 1280,
            "height": 720,
            "coded_width": 1280,
            "coded_height": 720,
            "has_b_frames": 0,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "16:9",
            "pix_fmt": "yuv420p",
            "level": 31,
            "chroma_location": "left",
            "refs": 1,
            "is_avc": "1",
            "nal_length_size": "4",
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "time_base": "1/12800",
            "start_pts": 0,
            "start_time": "0.000000",
            "duration_ts": 378368,
            "duration": "29.560000",
            "bit_rate": "1032960",
            "bits_per_raw_sample": "8",
            "nb_frames": "739",
            "disposition": {
                "default": 1,
                "dub": 0,
                "original": 0,
                "comment": 0,
                "lyrics": 0,
                "karaoke": 0,
                "forced": 0,
                "hearing_impaired": 0,
                "visual_impaired": 0,
                "clean_effects": 0,
                "attached_pic": 0
            },
            "tags": {
                "creation_time": "1970-01-01 00:00:00",
                "language": "und",
                "handler_name": "VideoHandler"
            }
        },
        {
            "index": 1,
            "codec_name": "aac",
            "codec_long_name": "AAC (Advanced Audio Coding)",
            "profile": "LC",
            "codec_type": "audio",
            "codec_time_base": "1/48000",
            "codec_tag_string": "mp4a",
            "codec_tag": "0x6134706d",
            "sample_fmt": "fltp",
            "sample_rate": "48000",
            "channels": 6,
            "channel_layout": "5.1",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/48000",
            "start_pts": 0,
            "start_time": "0.000000",
            "duration_ts": 1419264,
            "duration": "29.568000",
            "bit_rate": "383960",
            "max_bit_rate": "416704",
            "nb_frames": "1386",
            "disposition": {
                "default": 1,
                "dub": 0,
                "original": 0,
                "comment": 0,
                "lyrics": 0,
                "karaoke": 0,
                "forced": 0,
                "hearing_impaired": 0,
                "visual_impaired": 0,
                "clean_effects": 0,
                "attached_pic": 0
            },
            "tags": {
                "creation_time": "1970-01-01 00:00:00",
                "language": "und",
                "handler_name": "SoundHandler"
            }
        }
    ],
    "format": {
        "filename": "/Users/farsheed/Movies/big_buck_bunny_720p_5mb.mp4",
        "nb_streams": 2,
        "nb_programs": 0,
        "format_name": "mov,mp4,m4a,3gp,3g2,mj2",
        "format_long_name": "QuickTime / MOV",
        "start_time": "0.000000",
        "duration": "29.568000",
        "size": "5253880",
        "bit_rate": "1421504",
        "probe_score": 100,
        "tags": {
            "major_brand": "isom",
            "minor_version": "512",
            "compatible_brands": "isomiso2avc1mp41",
            "creation_time": "1970-01-01 00:00:00",
            "encoder": "Lavf53.24.2"
        }
    }
}

voir la documentation pour plus d'informations.

49
répondu Farsheed 2016-06-01 22:00:26

utiliser ffprobe :

ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of csv=s=x:p=0 input.mp4

exemple de sortie:

1280x720

Voir FFprobe Documentation et FFmpeg Wiki: FFprobe Conseils pour plus d'info.

22
répondu LordNeckbeard 2018-05-05 18:48:36

utilisant exiftool

exécuter la commande

exiftool VIDEOFILE

la sortie que vous obtenez est similaire à ceci:

ExifTool Version Number         : 9.76
File Name                       : gource2.mkv
Directory                       : .
File Size                       : 2010 MB
File Modification Date/Time     : 2015:01:07 14:16:22-06:00
File Access Date/Time           : 2015:01:07 14:16:22-06:00
File Inode Change Date/Time     : 2015:01:07 14:16:22-06:00
File Permissions                : rw-rw-r--
File Type                       : MKV
MIME Type                       : video/x-matroska
EBML Version                    : 1
EBML Read Version               : 1
Doc Type                        : matroska
Doc Type Version                : 4
Doc Type Read Version           : 2
Timecode Scale                  : 1 ms
Muxing App                      : libebml v1.3.0 + libmatroska v1.4.1
Writing App                     : mkvmerge v7.4.0 ('Circles') 64bit built on Dec 17 2014 11:31:10
Duration                        : 2:35:09
Date/Time Original              : 2015:01:07 20:14:22Z
Video Codec ID                  : V_MPEG4/ISO/AVC
Video Frame Rate                : 60
Track Language                  : und
Image Width                     : 1280
Image Height                    : 1024
Display Width                   : 1280
Display Height                  : 1024
Track Number                    : 2
Track Type                      : Audio
Audio Codec ID                  : A_DTS
Default Duration                : 10.666666 ms
Audio Sample Rate               : 48000
Audio Channels                  : 6
Image Size                      : 1280x1024

utilisant ffmpeg / ffprobe

exécuter la commande

ffprobe VIDEOFILE

alternativement:

ffmpeg -i VIDEOFILE

la sortie que vous obtenez est similaire à ceci:

ffprobe version 2.1.6 Copyright (c) 2007-2014 the FFmpeg developers
  built on Nov 29 2014 12:07:56 with gcc 4.8.3 (GCC) 20140911 (Red Hat 4.8.3-7)
  configuration: --prefix=/usr --bindir=/usr/bin --datadir=/usr/share/ffmpeg --incdir=/usr/include/ffmpeg --libdir=/usr/lib64 --mandir=/usr/share/man --arch=x86_64 --optflags='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic' --enable-bzlib --disable-crystalhd --enable-frei0r --enable-gnutls --enable-libass --enable-libcdio --enable-libcelt --enable-libdc1394 --disable-indev=jack --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-openal --enable-libopencv --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libv4l2 --enable-libvpx --enable-libx264 --enable-libxvid --enable-x11grab --enable-avfilter --enable-avresample --enable-postproc --enable-pthreads --disable-static --enable-shared --enable-gpl --disable-debug --disable-stripping --shlibdir=/usr/lib64 --enable-runtime-cpudetect
  libavutil      52. 48.101 / 52. 48.101
  libavcodec     55. 39.101 / 55. 39.101
  libavformat    55. 19.104 / 55. 19.104
  libavdevice    55.  5.100 / 55.  5.100
  libavfilter     3. 90.100 /  3. 90.100
  libavresample   1.  1.  0 /  1.  1.  0
  libswscale      2.  5.101 /  2.  5.101
  libswresample   0. 17.104 /  0. 17.104
  libpostproc    52.  3.100 / 52.  3.100
Input #0, matroska,webm, from 'gource2.mkv':
  Metadata:
    creation_time   : 2015-01-07 20:14:22
  Duration: 02:35:09.70, start: 0.000000, bitrate: 1811 kb/s
    Stream #0:0: Video: h264 (Constrained Baseline), yuv420p, 1280x1024, SAR 1:1 DAR 5:4, 60 fps, 60 tbr, 1k tbn, 120 tbc (default)
    Stream #0:1(eng): Audio: dts (DTS), 48000 Hz, 5.1(side), fltp, 1536 kb/s (default)

en Utilisant mplayer

exécuter la commande

mplayer -really-quiet -ao null -vo null -identify -frames 0 VIDEOFILE

la sortie que vous obtenez est similaire à ceci:

ID_VIDEO_ID=0
ID_AUDIO_ID=0
ID_AID_0_LANG=eng
ID_CLIP_INFO_NAME0=creation_time
ID_CLIP_INFO_VALUE0=2015-01-07 20:14:22
ID_CLIP_INFO_N=1
ID_FILENAME=gource2.mkv
ID_DEMUXER=lavfpref
ID_VIDEO_FORMAT=H264
ID_VIDEO_BITRATE=0
ID_VIDEO_WIDTH=1280
ID_VIDEO_HEIGHT=1024
ID_VIDEO_FPS=60.000
ID_VIDEO_ASPECT=0.0000
ID_AUDIO_FORMAT=8193
ID_AUDIO_BITRATE=1536000
ID_AUDIO_RATE=48000
ID_AUDIO_NCH=6
ID_START_TIME=0.00
ID_LENGTH=9309.70
ID_SEEKABLE=1
ID_CHAPTERS=0
ID_VIDEO_CODEC=ffh264
ID_AUDIO_BITRATE=1536000
ID_AUDIO_RATE=48000
ID_AUDIO_NCH=6
ID_AUDIO_CODEC=ffdca
ID_EXIT=EOF

à l'Aide de mediainfo

exécuter la commande

mediainfo VIDEOFILE

la sortie que vous obtenez est similaire à ceci:

General
Unique ID                                : 311795358270161665158539797930749663166 (0xEA919A09196F0CAEF4E1B4FEB72B17BE)
Complete name                            : gource2.mkv
Format                                   : Matroska
Format version                           : Version 4 / Version 2
File size                                : 1.96 GiB
Duration                                 : 2h 35mn
Overall bit rate                         : 1 811 Kbps
Encoded date                             : UTC 2015-01-07 20:14:22
Writing application                      : mkvmerge v7.4.0 ('Circles') 64bit built on Dec 17 2014 11:31:10
Writing library                          : libebml v1.3.0 + libmatroska v1.4.1

Video
ID                                       : 1
Format                                   : AVC
Format/Info                              : Advanced Video Codec
Format profile                           : Baseline@L4.2
Format settings, CABAC                   : No
Format settings, ReFrames                : 1 frame
Codec ID                                 : V_MPEG4/ISO/AVC
Bit rate                                 : 266 Kbps
Width                                    : 1 280 pixels
Height                                   : 1 024 pixels
Display aspect ratio                     : 5:4
Frame rate mode                          : Variable
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 8 bits
Scan type                                : Progressive
Writing library                          : x264 core 138 r2363 c628e3b
Encoding settings                        : cabac=0 / ref=1 / deblock=0:1:1 / analyse=0:0 / me=dia / subme=0 / psy=1 / psy_rd=0.40:0.00 / mixed_ref=0 / me_range=16 / chroma_me=1 / trellis=0 / 8x8dct=0 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=0 / threads=12 / lookahead_threads=2 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=0 / weightp=0 / keyint=250 / keyint_min=25 / scenecut=0 / intra_refresh=0 / rc=crf / mbtree=0 / crf=22.0 / qcomp=0.60 / qpmin=0 / qpmax=69 / qpstep=4 / ip_ratio=1.40 / aq=0
Default                                  : Yes
Forced                                   : No

Audio
ID                                       : 2
Format                                   : DTS
Format/Info                              : Digital Theater Systems
Mode                                     : 16
Format settings, Endianness              : Big
Codec ID                                 : A_DTS
Duration                                 : 2h 35mn
Bit rate mode                            : Constant
Bit rate                                 : 1 509 Kbps
Channel(s)                               : 6 channels
Channel positions                        : Front: L C R, Side: L R, LFE
Sampling rate                            : 48.0 KHz
Bit depth                                : 24 bits
Compression mode                         : Lossy
Stream size                              : 1.64 GiB (83%)
Language                                 : English
Default                                  : Yes
Forced                                   : No

temps "résumé de la 1519120920"
exiftool
    real    0m0.089s
    user    0m0.081s
    sys     0m0.008s
mplayer
    real    0m0.050s
    user    0m0.034s
    sys     0m0.017s
ffprobe/ffmpeg
    real    0m0.017s
    user    0m0.011s
    sys     0m0.007s
mediainfo
    real    0m0.029s
    user    0m0.025s
    sys     0m0.004s

YMMV, mais ffprobe est la plus rapide, suivie par mediainfo puis mplayer et enfin exiftool

ffprobe < mediainfo < mplayer < exiftool

20
répondu vossman77 2015-01-07 20:40:45

Try midentify.sh (TOOLS/midentify.sh dans l'arbre du code source de MPlayer).

Il va afficher des informations dans un parseable format:

$  ./midentify.sh /data/myvid.flv 
ID_VIDEO_ID=0
ID_AUDIO_ID=1
ID_FILENAME=/data/myvid.flv
ID_DEMUXER=lavfpref
ID_VIDEO_FORMAT=VP6F
ID_VIDEO_BITRATE=0
ID_VIDEO_WIDTH=640
ID_VIDEO_HEIGHT=480

[,,,]

5
répondu sleske 2009-03-26 00:06:37

pour retourner seulement la largeur et la hauteur mediainfo est un excellent outil.

mediainfo --Informer="Vidéo;%de la Largeur de%" Videofile && mediainfo --Informer="Vidéo;%Hauteur%" Videofile permettra de faire exactement cela, pas plus, pas moins, pour un vaste gamme de fichiers vidéo pris en charge.

il y a une longue liste de paramètres utiles Inform= que vous pouvez obtenir avec la commande mediainfo --Info-Parameters

si vous voulez la sortie dans le format standard WidthXHeight utiliser Width=$(mediainfo --Inform="Video;%Width%" Video.File)&& Height=$(mediainfo --Inform="Video;%Height%" Video.File)&&echo $Width"X"$Height

il y a un script bash ici que vous pouvez facilement modifier pour répondre à vos besoins.

Sources:

ajout D'une superposition utilisant FFMPEG avec un ré-encodage Minimal

http://manpages.ubuntu.com/manpages/xenial/man1/mediainfo.1.html

whiptail: comment rediriger la sortie vers la variable d'environnement?

Comment concaténer des variables de chaîne de caractères dans un Bash

5
répondu Elder Geek 2018-04-30 10:54:09

si vous êtes simplement intéressé par la résolution:

ffprobe -v error -of flat=s=_ -select_streams v:0 -show_entries stream=height,width video.mkv

il fonctionne aussi sur Windows . Ceci est en cours d'exécution sur mon PC pour construire un index de tous les fichiers:

find //Q1207/Film -size +10000k -print -a -exec ./ffprobe.exe -v error -of flat=s=_ -select_streams v:0 -show_entries stream=height,width \{\} \; > //Q1207/Film/index.txt
3
répondu ceving 2016-02-22 21:24:44

voici un "presque une doublure" que j'ai concocté autour de ffprobe dans ce but précis. Fonctionne assez bien pour moi à la fois sur Linux et MacOS.

#!/bin/bash

B='[[:blank:]]'
D='[[:digit:]]'
ffprobe "" 2>&1 \
    | grep 'Stream.*Video.*fps' \
    | sed "s/^.*$B\($D$D$D*x$D$D$D*\).*$//"
2
répondu ish-west 2017-04-20 14:10:25

Le bon vieux "fichier" utilitaire souvent obtenir les dimensions d'un fichier vidéo.

-1
répondu Andrew Medico 2009-03-26 00:08:00