Come recuperare le informazioni sui file video dalla riga di comando in Linux?


81

Vorrei vedere dalla riga di comando tutte le informazioni relative a un determinato file video, inclusi lunghezza, qualità, bitrate, risoluzione, formati audio e video, numero e lingua dei flussi audio e dei sottotitoli e così via; il più, il migliore.

Finora devo ricorrere alla scheda "informazioni" di VLC perché anche il gestore di file Dolphin non mi sta aiutando in questo: mi mostra solo alcune di queste informazioni e solo per alcuni formati (cioè .mkvnon sembra supportato in questo modo ).


2
Che dire di mediainfo ?
Endoro,

5
Dai un'occhiata mkvinfoe ffprobepure.
slhck

Grazie anche a te; come prima, per favore rispondi così posso votare correttamente il tuo suggerimento
Sekhemty,

1
Mkvinfo sta bene, ma solo per i video MKV:mkvinfo -v -v video.mkv
Endoro,

Risposte:


100

Dare MediaInfo una prova. Sul tipo di riga di comando mediainfo input.mkv. Per informazioni video più dettagliate mediainfo --fullscan input.mkv.

Esempio di output:

Generale
ID univoco: 239093944660469735839645243666869007606 (0xB3DFD199E22F0E7CBAE1FE52206834F6)
Nome completo: input.mkv
Formato: Matroska
Versione formato: versione 2
Dimensione file: 39,6 MiB
Durata: 20s 288ms
Modalità bit rate complessiva: variabile
Bit rate complessivo: 16,4 Mbps
Nome del film: il mio miglior film
Data codificata: UTC 2012-11-10 16:42:02
Applicazione di scrittura: mkvmerge v5.8.0 ('No Sleep / Pillow') costruito il 2 settembre 2012 15:37:04
Libreria di scrittura: libebml v1.2.3 + libmatroska v1.3.0
Produzent: ??? ???????
Grazie a: Bruce Davey
Lead performer: Rudy Youngblood
Remixato da: © ????

video
ID: 1
Formato: AVC
Formato / Informazioni: codec video avanzato
Profilo formato: High@L4.0
MultiView_Count: 2
Impostazioni formato, CABAC: Sì
Impostazioni formato, ReFrames: 2 fotogrammi
Impostazioni formato, GOP: M = 2, N = 13
Modalità Muxing: stripping dell'intestazione
ID codec: V_MPEG4 / ISO / AVC
Durata: 20s 280ms
Modalità bit rate: variabile
Velocità in bit: 15,8 Mbps
Velocità in bit massima: 16,0 Mbps
Larghezza: 1 920 pixel
Altezza: 1 080 pixel
Rapporto di visualizzazione: 16: 9
Modalità frame rate: costante
Frequenza fotogrammi: 25.000 fps
Spazio colore: YUV
Sottocampionamento Chroma: 4: 2: 0
Profondità bit: 8 bit
Tipo di scansione: interlacciato
Ordine di scansione: primo campo in alto
Bit / (Pixel * Frame): 0,304
Dimensione stream: 38,2 MiB (96%)
Titolo: Encoder H.264 Sony Hardware Video
Lingua inglese
Predefinito: Sì
Forzato: no

Audio
ID: 2
Formato: AC-3
Formato / informazioni: codifica audio 3
Estensione modalità: CM (principale completo)
Impostazioni del formato, Endianness: grande
Modalità Muxing: stripping dell'intestazione
ID codec: A_AC3
Durata: 20s 288ms
Modalità bit rate: costante
Velocità in bit: 256 Kbps
Canale (i): 2 canali
Posizioni canale: anteriore: LR
Frequenza di campionamento: 48,0 KHz
Profondità bit: 16 bit
Modalità di compressione: Perdita
Ritardo relativo al video: -80 ms
Dimensione stream: 634 KiB (2%)
Titolo: Sony Hardware Audio AC3 Encoder
Lingua: russo
Predefinito: Sì
Forzato: no

Testo
ID: 3
Formato: PGS
Modalità di fusione: zlib
ID codec: S_HDMV / PGS
Codec ID / Info: lo stesso formato di sottotitoli utilizzato su BD / HD-DVD
Titolo: Sony Hardware PGS Encoder
Lingua inglese
Predefinito: Sì
Forzato: no

È buono, ma voglio solo ottenere la durata dalla riga di comando
Grazie

2
si l'ho trovato. Dovrei farlo in quel modo; 'mediaInfo --Output = Video;% Duration% filename.mp4'
Günay Gültekin,

22

Puoi usare mplayer:

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

Produzione:

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

2
Cordiali saluti, ha funzionato alla grande su OS X 10.10 usando brew.sh e installando mplayer con brew install mplayer. mplayer sembra rilevare molti più metadati non standard rispetto a mediainfo.
Andrew Odri,

22

ffprobe

Sotto Ubuntu:

sudo apt install ffmpeg
ffprobe a.mp4

Per ottenere informazioni sul formato, i flussi, ecc., Eseguire:

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]

È anche possibile generare come JSON o CSV. Vedi di più su ffprobe .


ExifTool

Sotto Ubuntu:

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

Uscita campione:

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

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

Testato su Ubuntu 18.10.


@slhck grazie per la modifica, ma per favore dì con quale versione di Ubuntu hai provato. Detto questo, accetto la modifica, grazie.
Ciro Santilli 12 改造 中心 法轮功 六四 事件

18.04 e 18.10, quindi LTS e quelli attuali. Si prega di considerare che le risposte su Stack Exchange possono essere modificate da altri utenti per tenerle aggiornate.
slhck,

@slhck grazie. Ma possono anche rimanere per diversi anni senza aggiornamenti, meglio aggiungere testati su ogni modifica.
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Sì, è possibile aggiungere la versione per cui è stato testato, ma dipende principalmente dagli strumenti stessi (ffprobe, exiftool), non dal sistema operativo.
slhck,

@slhck concordato, il mio modello di risposta attuale termina con "Testato in Ubuntu ZW, mypackage XY" :-)
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

3

Mediainfo è un ottimo strumento. In alternativa puoi anche prendere i dettagli usando 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

Ecco l'output

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

2

Come ha scritto Günay Gültekin, puoi ottenere solo un attributo specifico, ma mancavano le virgolette:

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

Sulla base di questo, ho scritto un piccolo wrapper per calcolare la durata dei file trovati con un riepilogo:

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

1

Nelle recenti distribuzioni di Linux puoi anche ottenere informazioni usando 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

avconvnon viene più spedito con Ubuntu.
slhck,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.