2009-03-25 7 views
29

Ich habe durch die MPlayer/Mencoder und ffmpeg Dokumentation gegraben und ich kann nicht irgendetwas kommen. Ich bin nicht besonders wählerisch in Bezug auf das Ausgabeformat, da ich einen regulären Ausdruck verwenden kann, um es herauszuziehen, ich kann einfach nicht scheinen, die Daten an erster Stelle zu bekommen.Wie kann ich die Auflösung (Breite und Höhe) für eine Videodatei von einer Linux-Befehlszeile erhalten?

+0

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

Antwort

10

MediaInfo hat eine Befehlszeilenversion und bietet die Abmessungen zusammen mit Tonnen von anderen Informationen.

+0

Dies ist nützlich. Für einen gezielteren Ansatz siehe [meine Antwort] (http://stackoverflow.com/a/43443097/3816360) :-) –

5

Versuchen Sie midentify.sh (TOOLS/midentify.sh im Quellcode-Baum von MPlayer).

Es wird Informationen in einem Format parseable zeigen:

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

Die gute alte "Datei" Dienstprogramm wird oft die Dimensionen einer Videodatei erhalten.

+5

Ich versuchte es auf ein paar und es war verrückt unzuverlässig. Es schien, als könnte es nur mit mpeg-Dateien umgehen. –

37

Verwenden ffprobe (Teil von FFmpeg-Toolkit)

Beispiel:

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

Ausgang:

{ 
    "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" 
     } 
    } 
} 

Siehe Dokumentation für weitere Informationen.

+12

'ffmpeg -i video.mpg' ist auch eine Option. – Ben

+3

@Ben 'ffprobe' macht die gleiche genaue Sache, außer es gibt keinen Fehlercode zurück (und erwarten Sie, Kodierungsoptionen zur Verfügung zu stellen) – laughingbovine

+0

Keine Breite und Höhe hier, Recht? – k7k0

18

Mit exiftool

führen Sie den Befehl

exiftool VIDEOFILE 

Die Ausgabe, die Sie erhalten, ist ähnlich wie diese:

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 

Mit ffmpeg/ffprobe

den Befehl

ffprobe VIDEOFILE 

alternativ:

ffmpeg -i VIDEOFILE 

Die Ausgabe, die Sie erhalten, ist ähnlich, dies zu:

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) 

mplayer Mit

den Befehl

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

Der Ausgang Sie ist erhalten ähnlich wie dies : Mit

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 

Mediainfo

führen Sie den Befehl

mediainfo VIDEOFILE 

Der Ausgang Sie diese ähnliche erhalten ist:

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 

Zeit Zusammenfassung

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, aber ffprobe ist die schnellste, gefolgt von mediainfo dann MPlayer und exiftool schließlich

ffprobe < mediainfo < mplayer < exiftool 
3

Wenn Sie nur Interesse an der Auflösung sind:

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

Es funktioniert auch auf Windows. Dies läuft jetzt auf meinem PC einen Index aller Dateien zu erstellen:

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

nur die Breite zurückzukehren und Höhe mediainfo ist ein ausgezeichnetes Werkzeug.

Mediainfo --Inform = "Video;% Breite%" Videodatei & & Mediainfo --Inform = "Video;% Height%" Videodatei wird genau das tun, nicht mehr, nicht weniger, für eine vast array of supported video files.

Es gibt eine lange Liste von nützlichen Inform= Parameter, die Sie mit dem Befehl erhalten mediainfo --Info-Parameters

Wenn Sie die Ausgabe im Standard WidthXHeight Format verwenden möchten Width=$(mediainfo --Inform="Video;%Width%" Video.File)&& Height=$(mediainfo --Inform="Video;%Height%" Video.File)&&echo $Width"X"$Height

Quellen:

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

Danke. Diese Antwort hat mir sehr geholfen. – Omid1989

1

Hier ist ein "fast-one-liner" ich um ffprobe zusammengebraut haben für genau diesen Zweck. Funktioniert ziemlich gut für mich sowohl auf Linux als auch auf 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/" 
Verwandte Themen