2009-03-25 5 views
29

J'ai creusé à travers la documentation mplayer/mencoder et ffmpeg et je n'arrive pas à trouver quoi que ce soit. Je ne suis pas particulièrement pointilleux sur le format de sortie car je peux utiliser une expression régulière pour le retirer, je n'arrive tout simplement pas à obtenir les données en premier lieu. Essayez midentify.sh (TOOLS/midentify.sh dans l'arborescence de code source de MPlayer)Comment puis-je obtenir la résolution (largeur et hauteur) d'un fichier vidéo à partir d'une ligne de commande linux?

+0

http://askubuntu.com/questions/249828/command-to-see-media-file-info-in-terminal –

Répondre

10

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

+0

Ceci est utile. Pour une approche plus ciblée voir [ma réponse] (http://stackoverflow.com/a/43443097/3816360) :-) –

5

Il affiche des informations dans un format analysable:

$ ./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 

[,,,]

-1

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

+5

Je l'ai essayé sur quelques et il était fou peu fiable. Semblait comme il ne pouvait vraiment gérer les fichiers MPEG. –

37

utilisation ffprobe (partie de boîte à outils FFmpeg)

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.

+12

'ffmpeg -i video.mpg' est aussi une option. – Ben

+3

@Ben 'ffprobe' fait exactement la même chose sauf qu'il ne retourne pas un code d'erreur (et attendez-vous à fournir des options d'encodage) – laughingbovine

+0

Pas de largeur et de hauteur ici, non? – k7k0

18

En utilisant exiftool

exécutez la commande

exiftool VIDEOFILE 

La sortie que vous obtenez est semblable à 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 

En utilisant ffmpeg/ffprobe

exécutez la commande

ffprobe VIDEOFILE 

alternative:

ffmpeg -i VIDEOFILE 

La sortie que vous obtenez est semblable à 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écutez la commande

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

La sortie que vous obtenez est semblable à 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 

En utilisant mediainfo

exécutez la commande

mediainfo VIDEOFILE 

La sortie que vous obtenez est semblable à 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       : [email protected] 
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 

résumé du temps

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 le plus rapide, suivi par mediainfo puis mplayer et exiftool enfin

ffprobe < mediainfo < mplayer < exiftool 
3

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 travaille également sur Windows. Ceci est en cours d'exécution en ce moment sur mon PC pour créer 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 
4

Pour revenir seulement la largeur et la hauteur mediainfo est un excellent outil.

mediainfo --inform = "Vidéo;% Largeur%" Videofile & & mediainfo --inform = "Vidéo;% Taille%" Videofile fera exactement cela, pas plus, pas moins, pour une vast array of supported video files.

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

Si vous voulez que la sortie au format standard largeurxhauteur utiliser Width=$(mediainfo --Inform="Video;%Width%" Video.File)&& Height=$(mediainfo --Inform="Video;%Height%" Video.File)&&echo $Width"X"$Height

Sources:

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

whiptail: How to redirect output to environment variable?

How to concatenate string variables in Bash?

+0

Merci. Cette réponse m'a vraiment aidé. – Omid1989

1

Voici un "presque-one-liner" Je l'ai concocté autour ffprobe exactement cet effet. Fonctionne plutôt bien pour moi sur Linux et MacOS.

#!/bin/bash 

B='[[:blank:]]' 
D='[[:digit:]]' 
ffprobe "$1" 2>&1 \ 
    | grep 'Stream.*Video.*fps' \ 
    | sed "s/^.*$B\($D$D$D*x$D$D$D*\).*$/\1/" 
Questions connexes