Bagaimana cara mengambil informasi file video dari baris perintah di Linux?


81

Saya ingin melihat dari baris perintah semua informasi yang berkaitan dengan file video yang diberikan, termasuk panjang, kualitas, bitrate, resolusi, format audio dan video, jumlah dan bahasa stream audio dan terjemahan, dan sebagainya; lebih banyak, lebih baik.

Sejauh ini saya harus menggunakan tab "informasi" dari VLC karena bahkan pengelola file Dolphin tidak membantu saya dengan ini: ini hanya menunjukkan kepada saya beberapa informasi ini dan hanya untuk beberapa format (yaitu .mkvsepertinya tidak didukung seperti itu) ).


2
Bagaimana dengan mediainfo ?
Endoro

5
Lihatlah mkvinfodan ffprobejuga.
slhck

Terima kasih juga; seperti sebelumnya, tolong jawab agar saya dapat memilih saran Anda dengan benar
Sekhemty

1
Mkvinfo baik-baik saja, tetapi hanya untuk video MKV:mkvinfo -v -v video.mkv
Endoro

Jawaban:


100

Berikan MediaInfo mencoba. Pada tipe baris perintah mediainfo input.mkv. Untuk informasi video yang lebih rinci mediainfo --fullscan input.mkv.

Contoh keluaran:

Umum
ID Unik: 239093944660469735839645243666869007606 (0xB3DFD199E22F0E7CBAE1FE52206834F6)
Nama lengkap: input.mkv
Format: Matroska
Versi format: Versi 2
Ukuran file: 39,6 MiB
Durasi: 20-an 288 ms
Mode bit rate keseluruhan: Variabel
Kecepatan bit keseluruhan: 16,4 Mbps
Nama film: Film terbaik saya
Tanggal disandikan: UTC 2012-11-10 16:42:02
Aplikasi penulisan: mkvmerge v5.8.0 ('Tanpa Tidur / Bantal') dibangun pada 2 September 2012 15:37:04
Perpustakaan penulisan: libebml v1.2.3 + libmatroska v1.3.0
Produzent: ??? ???????
Terima kasih kepada: Bruce Davey
Penampil utama: Rudy Youngblood
Dicampur ulang oleh: © ????

Video
ID: 1
Format: AVC
Format / Info: Codec Video Tingkat Lanjut
Format profil: High@L4.0
MultiView_Count: 2
Pengaturan format, CABAC: Ya
Pengaturan format, Bingkai Ulang: 2 bingkai
Pengaturan format, GOP: M = 2, N = 13
Mode muxing: Header stripping
ID codec: V_MPEG4 / ISO / AVC
Durasi: 20s 280ms
Mode kecepatan bit: Variabel
Kecepatan bit: 15,8 Mbps
Kecepatan bit maksimum: 16,0 Mbps
Lebar: 1 920 piksel
Tinggi: 1 080 piksel
Rasio aspek tampilan: 16: 9
Mode kecepatan bingkai: Konstan
Frame rate: 25.000 fps
Ruang warna: YUV
Subsampel Chroma: 4: 2: 0
Kedalaman bit: 8 bit
Jenis pemindaian: Interlaced
Urutan pemindaian: Top Field First
Bits / (Pixel * Frame): 0,304
Ukuran aliran: 38,2 MiB (96%)
Judul: Sony Hardware Video H.264 Encoder
Bahasa Inggris
Default: Ya
Terpaksa: Tidak

Audio
ID: 2
Format: AC-3
Format / Info: Audio Coding 3
Ekstensi mode: CM (utama lengkap)
Pengaturan format, Endianness: Besar
Mode muxing: Header stripping
ID Codec: A_AC3
Durasi: 20-an 288 ms
Mode kecepatan bit: Konstan
Kecepatan bit: 256 Kbps
Saluran: 2 saluran
Posisi saluran: Depan: LR
Tingkat pengambilan sampel: 48,0 KHz
Kedalaman bit: 16 bit
Mode kompresi: Rugi
Keterlambatan relatif terhadap video: -80ms
Ukuran aliran: 634 KiB (2%)
Judul: Sony Hardware Audio AC3 Encoder
Bahasa: Rusia
Default: Ya
Terpaksa: Tidak

Teks
ID: 3
Format: PGS
Mode muxing: zlib
ID codec: S_HDMV / PGS
ID / Info Codec: Format subtitle yang sama digunakan pada BDs / HD-DVD
Judul: Sony Hardware PGS Encoder
Bahasa Inggris
Default: Ya
Terpaksa: Tidak

Itu bagus tapi saya hanya ingin mendapatkan durasi saja di commandline. Terima kasih
Günay Gültekin

2
ya, saya menemukannya. Saya harus melakukannya seperti itu; 'mediaInfo --Output = Video;% Durasi% filename.mp4'
Günay Gültekin

22

Anda dapat menggunakan mplayer:

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

Keluaran:

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
FYI, ini bekerja sangat baik pada OS X 10.10 menggunakan brew.sh dan menginstal mplayer brew install mplayer. mplayer tampaknya mendeteksi lebih banyak metadata non-standar daripada mediainfo.
Andrew Odri

22

ffbe

Di bawah Ubuntu:

sudo apt install ffmpeg
ffprobe a.mp4

Untuk mendapatkan informasi tentang format, stream, dll., Jalankan:

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]

Anda juga dapat menampilkan sebagai JSON atau CSV. Lihat lebih lanjut tentang ffprobe .


ExifTool

Di bawah Ubuntu:

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

Output sampel:

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

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

Diuji pada Ubuntu 18.10.


@lhck terima kasih atas hasil editnya, tapi tolong katakan versi ubuntu mana yang Anda uji. Karena itu, saya menerima hasil edit, terima kasih.
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

18.04 dan 18.10, jadi LTS dan yang sekarang. Harap pertimbangkan bahwa jawaban di Stack Exchange dapat diedit oleh pengguna lain agar tetap terbarui.
slhck

sslhck terima kasih. Tetapi mereka juga dapat tetap selama beberapa tahun tanpa pembaruan, lebih baik tambahkan diuji pada setiap edit.
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Ya, versi yang diuji dapat ditambahkan, tetapi sebagian besar tergantung pada alat itu sendiri (ffprobe, exiftool), bukan sistem operasi.
slhck

@slhck setuju, templat jawaban saya saat ini berakhir dengan "Diuji di Ubuntu ZW, mypackage XY" :-)
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

3

Mediainfo adalah alat yang hebat. Sebagai alternatif, Anda dapat mengambil detail menggunakan ffprobe juga.

$ 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

Ini outputnya

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

Seperti yang ditulis Günay Gültekin, Anda hanya bisa mendapatkan atribut tertentu, tetapi kutipannya tidak ada:

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

Berdasarkan ini, saya menulis pembungkus kecil untuk menghitung durasi file yang ditemukan dengan output ringkasan:

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

1

Pada distribusi linux terbaru Anda juga bisa mendapatkan informasi menggunakan 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

avconvtidak lagi dikirimkan bersama Ubuntu.
slhck
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.