Jak odzyskać informacje o pliku wideo z wiersza poleceń w systemie Linux?

81

Chciałbym zobaczyć z wiersza poleceń wszystkie informacje dotyczące danego pliku wideo, w tym długość, jakość, szybkość transmisji, rozdzielczość, formaty audio i wideo, liczbę i język strumieni audio i napisów itd .; im więcej, tym lepiej.

Do tej pory muszę skorzystać z zakładki „informacje” VLC, ponieważ nawet menedżer plików Dolphin mi w tym nie pomaga: pokazuje mi tylko niektóre z tych informacji i tylko dla niektórych formatów (tj. .mkvNie wydaje się być obsługiwany w ten sposób ).

Sekhemty
źródło
2
Co z mediainfo ?
Endoro
5
Spójrz na mkvinfoi ffproberównież.
slhck
Również tobie dziękuję; jak poprzednio, proszę odpowiedzieć, abym mógł poprawnie głosować na waszą sugestię
Sekhemty
1
Mkvinfo jest w porządku, ale tylko w przypadku filmów MKV:mkvinfo -v -v video.mkv
Endoro

Odpowiedzi:

100

Wypróbuj mediainfo . W wierszu polecenia wpisz mediainfo input.mkv. Aby uzyskać bardziej szczegółowe informacje o filmie mediainfo --fullscan input.mkv.

Przykład wyjściowy:

Generał
Unikalny identyfikator: 239093944660469735839645243666869007606 (0xB3DFD199E22F0E7CBAE1FE52206834F6)
Pełna nazwa: input.mkv
Format: Matroska
Wersja formatu: wersja 2
Rozmiar pliku: 39,6 MiB
Czas trwania: 20s 288ms
Tryb ogólnej przepływności: zmienny
Ogólna przepływność: 16,4 Mb / s
Nazwa filmu: Mój najlepszy film
Data kodowania: UTC 2012-11-10 16:42:02
Aplikacja do pisania: mkvmerge v5.8.0 („No Sleep / Pillow”) zbudowany 2 września 2012 15:37:04
Pisanie biblioteki: libebml v1.2.3 + libmatroska v1.3.0
Produzent: ??? ???????
Dzięki: Bruce Davey
Główny wykonawca: Rudy Youngblood
Remiksowany przez: © ????

Wideo
ID: 1
Format: AVC
Format / Informacje: Zaawansowany kodek wideo
Formatuj profil: [email protected]
MultiView_Count: 2
Ustawienia formatu, CABAC: Tak
Ustawienia formatu, ReFrames: 2 klatki
Ustawienia formatu, GOP: M = 2, N = 13
Tryb miksowania: Usuwanie nagłówka
Identyfikator kodeka: V_MPEG4 / ISO / AVC
Czas trwania: 20s 280ms
Tryb przepływności: zmienny
Szybkość transmisji: 15,8 Mbps
Maksymalna przepływność: 16,0 Mb / s
Szerokość: 1920 pikseli
Wysokość: 1080 pikseli
Wyświetl proporcje obrazu: 16: 9
Tryb liczby klatek na sekundę: stała
Liczba klatek na sekundę: 25 000 fps
Przestrzeń kolorów: YUV
Podpróbkowanie barwy: 4: 2: 0
Głębia bitowa: 8 bitów
Typ skanowania: z przeplotem
Kolejność skanowania: najpierw górne pole
Bity / (Pixel * Frame): 0,304
Rozmiar strumienia: 38,2 MiB (96%)
Tytuł: Sony Hardware Video H.264 Encoder
Język angielski
Domyślnie: tak
Wymuszone: nie

Audio
ID: 2
Format: AC-3
Format / Informacje: Kodowanie audio 3
Rozszerzenie trybu: CM (kompletny główny)
Ustawienia formatu, Endianness: Big
Tryb miksowania: Usuwanie nagłówka
Identyfikator kodeka: A_AC3
Czas trwania: 20s 288ms
Tryb przepływności: stała
Szybkość transmisji: 256 Kb / s
Kanały: 2 kanały
Pozycje kanałów: przód: LR
Częstotliwość próbkowania: 48,0 KHz
Głębia bitowa: 16 bitów
Tryb kompresji: Lossy
Opóźnienie względem wideo: -80ms
Rozmiar strumienia: 634 KiB (2%)
Tytuł: Sony Hardware Audio AC3 Encoder
Język: rosyjski
Domyślnie: tak
Wymuszone: nie

Tekst
ID: 3
Format: PGS
Tryb miksowania: zlib
Identyfikator kodeka: S_HDMV / PGS
Identyfikator / informacja kodera: ten sam format napisów, który jest używany na płytach BD / HD-DVD
Tytuł: Sony Hardware PGS Encoder
Język angielski
Domyślnie: tak
Wymuszone: nie
Endoro
źródło
To dobrze, ale chcę tylko uzyskać czas trwania w
wierszu
2
tak, znalazłem to. Powinienem tak to zrobić; 'mediaInfo --Output = Wideo;% czas trwania% nazwa_pliku.mp4'
Günay Gültekin
22

Możesz użyć mplayera:

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

Wynik:

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
źródło
2
FYI, to działał świetnie na OS X 10.10 użyciu brew.sh i instalacji MPlayera z brew install mplayer. mplayer wydaje się wykrywać znacznie więcej niestandardowych metadanych niż mediainfo.
Andrew Odri,
22

ffprobe

Pod Ubuntu:

sudo apt install ffmpeg
ffprobe a.mp4

Aby uzyskać informacje o formacie, strumieniach itp., Uruchom:

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]

Możesz również wyprowadzać jako JSON lub CSV. Zobacz więcej o ffprobe .


ExifTool

Pod Ubuntu:

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

Przykładowe dane wyjściowe:

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

Zobacz także: https://askubuntu.com/questions/249828/command-to-see-media-file-info-in-terminal

Testowane na Ubuntu 18.10.

Ciro Santilli
źródło
@slhck dzięki za edycję, ale proszę powiedzieć, z którą wersją ubuntu testowałeś. Biorąc to pod uwagę, akceptuję zmianę, dzięki.
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
18.04 i 18.10, więc LTS i aktualne. Proszę wziąć pod uwagę, że odpowiedzi na Stack Exchange mogą być edytowane przez innych użytkowników w celu ich aktualizacji.
slhck
@slhck dzięki. Ale mogą również pozostać przez kilka lat bez aktualizacji, lepiej dodawać testowane przy każdej edycji.
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
Tak, można dodać wersję, dla której został przetestowany, ale zależy to głównie od samych narzędzi (ffprobe, exiftool), a nie od systemu operacyjnego.
slhck
@slhck zgodził się, mój obecny szablon odpowiedzi kończy się na „Testowane w Ubuntu ZW, mypackage XY” :-)
Ciro Santilli 12 改造 中心 法轮功 六四 事件
3

Mediainfo to świetne narzędzie. Alternatywnie możesz pobrać szczegóły za pomocą 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

Oto wynik

{
    "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"
        }
    }
}
Satish
źródło
2

Jak napisał Günay Gültekin, możesz uzyskać tylko określony atrybut, ale brakowało cytatów:

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

W oparciu o to napisałem małe opakowanie, aby obliczyć czas trwania znalezionych plików, które generują podsumowanie:

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

W ostatnich dystrybucjach linuxa możesz także uzyskać informacje, używając 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
źródło
avconvnie jest już dostarczany z Ubuntu.
slhck