Comment récupérer les informations de fichier vidéo à partir de la ligne de commande sous Linux?

81

J'aimerais voir en ligne de commande toutes les informations relatives à un fichier vidéo donné, y compris la longueur, la qualité, le débit, la résolution, les formats audio et vidéo, le nombre et la langue des flux audio et des sous-titres, etc. le plus, le meilleur.

Pour le moment, je dois utiliser l'onglet "information" de VLC car même le gestionnaire de fichiers de Dolphin ne m'aide pas avec ceci: il ne me montre que certaines de ces informations et seulement pour certains formats (c'est .mkv-à- dire que cela ne semble pas pris en charge de cette façon. ).

Sekhemty
la source
2
Qu'en est-il de mediainfo ?
Endoro
5
Jetez un coup d'oeil mkvinfoet ffprobeaussi.
Slhck
Merci à toi aussi comme avant, veuillez répondre afin que je puisse voter correctement sur votre proposition
Sekhemty
1
Mkvinfo est correct, mais uniquement pour les vidéos MKV:mkvinfo -v -v video.mkv
Endoro,

Réponses:

100

Essayez mediainfo . Sur le type de ligne de commande mediainfo input.mkv. Pour plus d'informations vidéo détaillées mediainfo --fullscan input.mkv.

Exemple de sortie:

Général
ID unique: 239093944660469735839645243666869007606 (0xB3DFD199E22F0E7CBAE1FE52206834F6)
Nom complet: input.mkv
Format: Matroska
Version du format: Version 2
Taille du fichier: 39.6 MiB
Durée: 20s 288ms
Mode de débit global: Variable
Débit binaire global: 16,4 Mbps
Nom du film: Mon meilleur film
Date encodée: UTC 2012-11-10 16:42:02
Application d'écriture: mkvmerge v5.8.0 ('No Sleep / Pillow') construit le 2 sept. 2012 15:37:04
Bibliothèque d'écriture: libebml v1.2.3 + libmatroska v1.3.0
Produzent: ??? ???????
Merci à: Bruce Davey
Interprète principal: Rudy Youngblood
Remixé par: © ????

Vidéo
ID: 1
Format: AVC
Format / Info: Codec vidéo avancé
Profil de format: Élevé@L4.0
MultiView_Count: 2
Paramètres de format, CABAC: Oui
Paramètres de format, ReFrames: 2 cadres
Paramètres de format, GOP: M = 2, N = 13
Mode multiplexage: suppression d'en-tête
ID du codec: V_MPEG4 / ISO / AVC
Durée: 20s 280ms
Mode débit: Variable
Débit binaire: 15,8 Mbps
Débit maximum: 16,0 Mbps
Largeur: 1 920 pixels
Hauteur: 1 080 pixels
Format d'affichage: 16: 9
Mode de cadence: constant
Fréquence d'image: 25.000 fps
Espace colorimétrique: YUV
Sous-échantillonnage de chroma: 4: 2: 0
Profondeur de bits: 8 bits
Type de numérisation: Entrelacé
Ordre de numérisation: Top Field First
Bits / (Pixel * Frame): 0.304
Taille du flux: 38,2 Mio (96%)
Titre: Sony Hardware Video H.264 Encoder
Langue: français
Par défaut: oui
Forcé: Non

l'audio
ID: 2
Format: AC-3
Format / Info: Codage audio 3
Extension de mode: CM (main complète)
Paramètres de format, Endianness: Big
Mode multiplexage: suppression d'en-tête
ID du codec: A_AC3
Durée: 20s 288ms
Mode débit binaire: constant
Débit binaire: 256 Kbps
Canal (s): 2 canaux
Positions des canaux: Avant: LR
Taux d'échantillonnage: 48,0 KHz
Profondeur de bits: 16 bits
Mode de compression: Lossy
Retard par rapport à la vidéo: -80ms
Taille du flux: 634 Ko (2%)
Titre: Sony Hardware Audio AC3 Encoder
Langue: russe
Par défaut: oui
Forcé: Non

Texte
ID: 3
Format: PGS
Mode multiplexage: zlib
ID du codec: S_HDMV / PGS
Codec ID / Info: le même format de sous-titre que celui utilisé sur les BD / HD-DVD
Titre: Sony Hardware PGS Encoder
Langue: français
Par défaut: oui
Forcé: Non
Endoro
la source
C'est bien, mais je veux juste obtenir seulement la durée en ligne de commande
Merci
2
oui, je l'ai trouvé. Je devrais le faire comme ça; 'mediaInfo --Output = Video;% Duration% filename.mp4'
Günay Gültekin le
22

Vous pouvez utiliser mplayer:

mplayer -vo null -ao null -frames 0 -identify videofile.mp4

Sortie:

MPlayer 1.1-4.2.1 (C) 2000-2012 MPlayer Team
Can't init Apple Remote.

Playing vid.mp4.
libavformat version 54.6.101 (internal)
libavformat file format detected.
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]  480x360  24bpp  29.970 fps  700.7 kbps (85.5 kbyte/s)
Clip info:
 major_brand: qt
ID_CLIP_INFO_NAME0=major_brand
ID_CLIP_INFO_VALUE0=qt
 minor_version: 0
ID_CLIP_INFO_NAME1=minor_version
ID_CLIP_INFO_VALUE1=0
 compatible_brands: qt
ID_CLIP_INFO_NAME2=compatible_brands
ID_CLIP_INFO_VALUE2=qt
 creation_time: 2011-03-03 15:42:30
ID_CLIP_INFO_NAME3=creation_time
ID_CLIP_INFO_VALUE3=2011-03-03 15:42:30
 encoder: 4.2.1
ID_CLIP_INFO_NAME4=encoder
ID_CLIP_INFO_VALUE4=4.2.1
 encoder-eng: 4.2.1
ID_CLIP_INFO_NAME5=encoder-eng
ID_CLIP_INFO_VALUE5=4.2.1
 date: 2011-03-03T10:42:30-0500
ID_CLIP_INFO_NAME6=date
ID_CLIP_INFO_VALUE6=2011-03-03T10:42:30-0500
 date-eng: 2011-03-03T10:42:30-0500
ID_CLIP_INFO_NAME7=date-eng
ID_CLIP_INFO_VALUE7=2011-03-03T10:42:30-0500
ID_CLIP_INFO_N=8
Load subtitles in ./
ID_FILENAME=vid.mp4
ID_DEMUXER=lavfpref
ID_VIDEO_FORMAT=H264
ID_VIDEO_BITRATE=700712
ID_VIDEO_WIDTH=480
ID_VIDEO_HEIGHT=360
ID_VIDEO_FPS=29.970
ID_VIDEO_ASPECT=0.0000
ID_AUDIO_FORMAT=MP4A
ID_AUDIO_BITRATE=63600
ID_AUDIO_RATE=44100
ID_AUDIO_NCH=1
ID_START_TIME=0.00
ID_LENGTH=3.83
ID_SEEKABLE=1
ID_CHAPTERS=0
==========================================================================
Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
libavcodec version 54.23.100 (internal)
Selected video codec: [ffh264] vfm: ffmpeg (FFmpeg H.264)
==========================================================================
ID_VIDEO_CODEC=ffh264
==========================================================================
Opening audio decoder: [ffmpeg] FFmpeg/libavcodec audio decoders
AUDIO: 44100 Hz, 1 ch, s16le, 63.6 kbit/9.01% (ratio: 7950->88200)
ID_AUDIO_BITRATE=63600
ID_AUDIO_RATE=44100
ID_AUDIO_NCH=1
Selected audio codec: [ffaac] afm: ffmpeg (FFmpeg AAC (MPEG-2/MPEG-4 Audio))
==========================================================================
AO: [null] 44100Hz 1ch s16le (2 bytes per sample)
ID_AUDIO_CODEC=ffaac
Starting playback...


Exiting... (End of file)
ID_EXIT=EOF
Valery Viktorovsky
la source
2
Pour votre information, cela a très bien fonctionné sous OS X 10.10 avec brew.sh et l’installation de mplayer avec brew install mplayer. mplayer semble détecter beaucoup plus de métadonnées non standard que mediainfo.
Andrew Odri
22

ffprobe

Sous Ubuntu:

sudo apt install ffmpeg
ffprobe a.mp4

Pour obtenir des informations sur le format, les flux, etc., exécutez:

ffprobe -v error -show_format -show_streams a.mp4

[STREAM]
index=0
codec_name=h264
codec_long_name=H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
profile=High
codec_type=video
codec_time_base=1/50
codec_tag_string=avc1
codec_tag=0x31637661
width=320
height=240
has_b_frames=2
sample_aspect_ratio=1:1
display_aspect_ratio=4:3
pix_fmt=yuv420p
level=13
color_range=N/A
color_space=unknown
color_transfer=unknown
color_primaries=unknown
chroma_location=left
timecode=N/A
refs=4
is_avc=1
nal_length_size=4
id=N/A
r_frame_rate=25/1
avg_frame_rate=25/1
time_base=1/12800
start_pts=0
start_time=0.000000
duration_ts=384000
duration=30.000000
bit_rate=34761
max_bit_rate=N/A
bits_per_raw_sample=8
nb_frames=750
nb_read_frames=N/A
nb_read_packets=N/A
DISPOSITION:default=1
DISPOSITION:dub=0
DISPOSITION:original=0
DISPOSITION:comment=0
DISPOSITION:lyrics=0
DISPOSITION:karaoke=0
DISPOSITION:forced=0
DISPOSITION:hearing_impaired=0
DISPOSITION:visual_impaired=0
DISPOSITION:clean_effects=0
DISPOSITION:attached_pic=0
TAG:language=und
TAG:handler_name=VideoHandler
[/STREAM]
[STREAM]
index=1
codec_name=aac
codec_long_name=AAC (Advanced Audio Coding)
profile=LC
codec_type=audio
codec_time_base=1/44100
codec_tag_string=mp4a
codec_tag=0x6134706d
sample_fmt=fltp
sample_rate=44100
channels=1
channel_layout=mono
bits_per_sample=0
id=N/A
r_frame_rate=0/0
avg_frame_rate=0/0
time_base=1/44100
start_pts=-1024
start_time=-0.023220
duration_ts=1324024
duration=30.023220
bit_rate=56517
max_bit_rate=N/A
bits_per_raw_sample=N/A
nb_frames=1293
nb_read_frames=N/A
nb_read_packets=N/A
DISPOSITION:default=1
DISPOSITION:dub=0
DISPOSITION:original=0
DISPOSITION:comment=0
DISPOSITION:lyrics=0
DISPOSITION:karaoke=0
DISPOSITION:forced=0
DISPOSITION:hearing_impaired=0
DISPOSITION:visual_impaired=0
DISPOSITION:clean_effects=0
DISPOSITION:attached_pic=0
TAG:language=und
TAG:handler_name=SoundHandler
[/STREAM]
[FORMAT]
filename=input.mp4
nb_streams=2
nb_programs=0
format_name=mov,mp4,m4a,3gp,3g2,mj2
format_long_name=QuickTime / MOV
start_time=-0.023220
duration=30.024000
size=368644
bit_rate=98226
probe_score=100
TAG:major_brand=isom
TAG:minor_version=512
TAG:compatible_brands=isomiso2avc1mp41
TAG:title=FFprobe Tips
TAG:encoder=Lavf56.15.101
[/FORMAT]

Vous pouvez également produire en JSON ou CSV. En savoir plus sur ffprobe .


ExifTool

Sous Ubuntu:

sudo apt install libimage-exiftool-perl
exiftool a.mp4

Exemple de sortie:

ExifTool Version Number         : 10.00
File Name                       : lego.mp4
Directory                       : .
File Size                       : 375 kB
File Modification Date/Time     : 2016:02:03 17:18:15+01:00
File Access Date/Time           : 2016:02:03 17:18:49+01:00
File Inode Change Date/Time     : 2016:02:03 17:18:49+01:00
File Permissions                : rw-rw-r--
File Type                       : MP4
File Type Extension             : mp4
MIME Type                       : video/mp4
Major Brand                     : MP4 v2 [ISO 14496-14]
Minor Version                   : 0.0.0
Compatible Brands               : mp42, isom, avc1
Movie Data Size                 : 379872
Movie Data Offset               : 168
Movie Header Version            : 0
Create Date                     : 2010:03:20 21:29:11
Modify Date                     : 2010:03:20 21:29:12
Time Scale                      : 90000
Duration                        : 5.57 s
Preferred Rate                  : 1
Preferred Volume                : 100.00%
Preview Time                    : 0 s
Preview Duration                : 0 s
Poster Time                     : 0 s
Selection Time                  : 0 s
Selection Duration              : 0 s
Current Time                    : 0 s
Next Track ID                   : 3
Track Header Version            : 0
Track Create Date               : 2010:03:20 21:29:11
Track Modify Date               : 2010:03:20 21:29:12
Track ID                        : 1
Track Duration                  : 5.53 s
Track Layer                     : 0
Track Volume                    : 0.00%
Image Width                     : 560
Image Height                    : 320
Graphics Mode                   : srcCopy
Op Color                        : 0 0 0
Compressor ID                   : avc1
Source Image Width              : 560
Source Image Height             : 320
X Resolution                    : 72
Y Resolution                    : 72
Compressor Name                 : JVT/AVC Coding
Bit Depth                       : 24
Color Representation            : nclc 1 1 1
Video Frame Rate                : 30
Matrix Structure                : 1 0 0 0 1 0 0 0 1
Media Header Version            : 0
Media Create Date               : 2010:03:20 21:29:11
Media Modify Date               : 2010:03:20 21:29:12
Media Time Scale                : 48000
Media Duration                  : 5.57 s
Media Language Code             : eng
Balance                         : 0
Audio Format                    : mp4a
Audio Channels                  : 1
Audio Bits Per Sample           : 16
Audio Sample Rate               : 48000
Track 2 Name                    : Stereo
Handler Type                    : Metadata
Encoder                         : HandBrake 0.9.4 2009112300
Avg Bitrate                     : 546 kbps
Image Size                      : 560x320
Megapixels                      : 0.179
Rotation                        : 0

Voir aussi: https://askubuntu.com/questions/249828/command-to-see-media-file-info-in-terminal

Testé sur Ubuntu 18.10.

Ciro Santilli 改造 中心 六四 事件
la source
@slhck merci pour l'édition, mais s'il vous plaît dites avec quelle version d'ubuntu vous avez testé. Cela étant, j'accepte l'édition, merci.
Ciro Santilli Le
18.04 et 18.10, donc les LTS et les actuels. Veuillez considérer que les réponses sur Stack Exchange peuvent être modifiées par d'autres utilisateurs pour les tenir à jour.
Slhck
@slhck merci. Mais ils peuvent aussi rester pendant plusieurs années sans mises à jour, il vaut mieux ajouter avec testé à chaque édition.
Ciro Santilli Du
Oui, la version pour laquelle il a été testé pourrait être ajoutée, mais cela dépendra principalement des outils eux-mêmes (ffprobe, exiftool), pas du système d'exploitation.
Slhck
convenu @slhck, mon modèle actuel de réponse se termine par "Testé dans Ubuntu ZW, mypackage XY" :-)
Ciro Santilli新疆改造中心法轮功六四事件
3

Mediainfo est un excellent outil. Vous pouvez également saisir les détails en utilisant ffprobe .

$ ffprobe -hide_banner -loglevel fatal -show_error -show_format -show_streams -show_programs -show_chapters -show_private_data -print_format json /home/sathish/Videos/Aandipatti.mp4

Voici la sortie

{
    "programs": [

    ],
    "streams": [
        {
            "index": 0,
            "codec_name": "h264",
            "codec_long_name": "H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10",
            "profile": "High",
            "codec_type": "video",
            "codec_time_base": "28113749/1349640000",
            "codec_tag_string": "avc1",
            "codec_tag": "0x31637661",
            "width": 1920,
            "height": 1080,
            "coded_width": 1920,
            "coded_height": 1080,
            "has_b_frames": 1,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "16:9",
            "pix_fmt": "yuv420p",
            "level": 40,
            "color_range": "tv",
            "color_space": "bt709",
            "color_transfer": "bt709",
            "color_primaries": "bt709",
            "chroma_location": "left",
            "refs": 1,
            "is_avc": "true",
            "nal_length_size": "4",
            "r_frame_rate": "24/1",
            "avg_frame_rate": "674820000/28113749",
            "time_base": "1/90000",
            "start_pts": 0,
            "start_time": "0.000000",
            "duration_ts": 28113750,
            "duration": "312.375000",
            "bit_rate": "2612895",
            "bits_per_raw_sample": "8",
            "nb_frames": "7498",
            "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,
                "timed_thumbnails": 0
            },
            "tags": {
                "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/44100",
            "codec_tag_string": "mp4a",
            "codec_tag": "0x6134706d",
            "sample_fmt": "fltp",
            "sample_rate": "44100",
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/44100",
            "start_pts": 0,
            "start_time": "0.000000",
            "duration_ts": 13779971,
            "duration": "312.470998",
            "bit_rate": "125595",
            "max_bit_rate": "125595",
            "nb_frames": "13457",
            "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,
                "timed_thumbnails": 0
            },
            "tags": {
                "language": "und",
                "handler_name": "SoundHandler"
            }
        }
    ],
    "chapters": [

    ],
    "format": {
        "filename": "/home/sathish/Videos/Aandipatti.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": "312.471000",
        "size": "107155047",
        "bit_rate": "2743423",
        "probe_score": 100,
        "tags": {
            "major_brand": "isom",
            "minor_version": "512",
            "compatible_brands": "isomiso2avc1mp41",
            "encoder": "Lavf56.40.101"
        }
    }
}
Sathish
la source
2

Comme l'a écrit Günay Gültekin, vous ne pouvez obtenir qu'un attribut spécifique, mais les guillemets étaient manquants:

mediaInfo --Output='Video;%Duration%' filename.mp4

Sur cette base, j’ai écrit un petit wrapper pour calculer la durée des fichiers trouvés avec un résumé:

echo "scale=2; ($(find /foo/bar -type f -exec mediainfo --Output='Video;%Duration%+' {} \; | grep -v ^$ | tr -d \\n)0)"/60000/60|bc
kohly
la source
1

Sur les récentes distributions Linux, vous pouvez également obtenir des informations en utilisant avconv:

$ avconv -i ch1_video_01.mpg 
avconv version 9.18-6:9.18-0ubuntu0.14.04.1, Copyright (c) 2000-2014 the Libav developers
  built on Mar 16 2015 13:19:10 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1)
[mpeg @ 0x722840] max_analyze_duration reached
Guessed Channel Layout for  Input Stream #0.1 : stereo
Input #0, mpeg, from 'ch1_video_01.mpg':
  Duration: 00:03:48.01, start: 0.274000, bitrate: 6042 kb/s
    Stream #0.0[0x1e0]: Video: mpeg2video (Main), yuv420p, 720x576 [PAR 64:45 DAR 16:9], 8000 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc
    Stream #0.1[0x1c0]: Audio: mp2, 48000 Hz, stereo, s16p, 256 kb/s
At least one output file must be specified
jap1968
la source
avconvn'est plus livré avec Ubuntu.
Slhck