Làm cách nào để truy xuất thông tin tệp video từ dòng lệnh trong Linux?


81

Tôi muốn xem từ dòng lệnh tất cả các thông tin liên quan đến một tệp video nhất định, bao gồm độ dài, chất lượng, bitrate, độ phân giải, định dạng âm thanh và video, số lượng và ngôn ngữ của luồng âm thanh và phụ đề, v.v. càng nhiều, tốt nhất.

Cho đến bây giờ tôi phải sử dụng tab "thông tin" của VLC vì ngay cả trình quản lý tệp Cá heo cũng không giúp tôi điều này: nó chỉ hiển thị cho tôi một số thông tin này và chỉ cho một số định dạng ( .mkvcó vẻ như không được hỗ trợ theo cách đó ).


2
Còn về Mediainfo thì sao?
Endoro

5
Hãy xem mkvinfoffprobelà tốt.
slhck

Cảm ơn bạn quá; như trước đây, vui lòng trả lời để tôi có thể bỏ phiếu đúng cho đề xuất của bạn
Sekhemty

1
Cairoinfo vẫn ổn, nhưng chỉ dành cho video MKV:mkvinfo -v -v video.mkv
Endoro

Câu trả lời:


100

Hãy dùng thử mediainfo . Trên loại dòng lệnh mediainfo input.mkv. Để biết thêm thông tin video chi tiết mediainfo --fullscan input.mkv.

Ví dụ đầu ra:

Chung
ID duy nhất: 239093944660469735339445243666869007606 (0xB3DFD199E22F0E7CBAE1FE52206834F6)
Tên đầy đủ: input.mkv
Định dạng: Matroska
Định dạng phiên bản: Phiên bản 2
Kích thước tệp: 39,6 MiB
Thời lượng: 20 giây 288ms
Chế độ tốc độ bit tổng thể: Biến
Tốc độ bit tổng thể: 16,4 Mb / giây
Tên phim: Phim hay nhất của tôi
Ngày mã hóa: UTC 2012-11-10 16:42:02
Ứng dụng viết: mkvmerge v5.8.0 ('Không ngủ / Gối') được xây dựng vào ngày 2 tháng 9 năm 2012 15:37:04
Thư viện viết: libebml v1.2.3 + libmatroska v1.3.0
Thần đồng: ??? ???????
Cảm ơn: Bruce Davey
Diễn viên chính: Rudy Youngblood
Được phối bởi: © ????

Video
ID: 1
Định dạng: AVC
Định dạng / Thông tin: Codec video nâng cao
Định dạng hồ sơ: High@L4.0
Đa lượt xem: 2
Cài đặt định dạng, CABAC: Có
Cài đặt định dạng, ReFrames: 2 khung
Cài đặt định dạng, GOP: M = 2, N = 13
Chế độ Muxing: Tước tiêu đề
ID mã: V_MPEG4 / ISO / AVC
Thời lượng: 20 giây 280ms
Chế độ tốc độ bit: Biến
Tốc độ bit: 15,8 Mb / giây
Tốc độ bit tối đa: 16,0 Mb / giây
Chiều rộng: 1 920 pixel
Chiều cao: 1 080 pixel
Tỷ lệ khung hình hiển thị: 16: 9
Chế độ tốc độ khung hình: Không đổi
Tốc độ khung hình: 25.000 khung hình / giây
Không gian màu: YUV
Lấy mẫu con Chroma: 4: 2: 0
Độ sâu bit: 8 bit
Kiểu quét: Xen kẽ
Thứ tự quét: Trường đầu tiên
Bit / (Pixel * Khung): 0,104
Kích thước luồng: 38,2 MiB (96%)
Tiêu đề: Bộ mã hóa video phần cứng Sony H.264
Ngôn ngữ: tiếng anh
Mặc định: Có
Buộc: Không

Âm thanh
ID: 2
Định dạng: AC-3
Định dạng / Thông tin: Mã hóa âm thanh 3
Chế độ mở rộng: CM (hoàn thành chính)
Cài đặt định dạng, Endianness: Lớn
Chế độ Muxing: Tước tiêu đề
ID mã: A_AC3
Thời lượng: 20 giây 288ms
Chế độ tốc độ bit: Không đổi
Tốc độ bit: 256 Kb / giây
Kênh: 2 kênh
Vị trí kênh: Mặt trận: LR
Tỷ lệ lấy mẫu: 48,0 KHz
Độ sâu bit: 16 bit
Chế độ nén: Mất mát
Độ trễ liên quan đến video: -80ms
Kích thước luồng: 634 KiB (2%)
Tiêu đề: Bộ mã hóa âm thanh phần cứng Sony AC3
Ngôn ngữ: tiếng Nga
Mặc định: Có
Buộc: Không

Bản văn
ID: 3
Định dạng: PGS
Chế độ chuyển đổi: zlib
ID mã: S_HDMV / PGS
ID / Thông tin Codec: Định dạng phụ đề tương tự được sử dụng trên các đĩa BD / HD-DVD
Tiêu đề: Bộ mã hóa PGS phần cứng của Sony
Ngôn ngữ: tiếng anh
Mặc định: Có
Buộc: Không

Điều đó là tốt nhưng tôi chỉ muốn nhận được thời lượng trong dòng lệnh
Cảm ơn

2
Vâng tôi đã tìm thấy nó. Tôi nên làm điều đó như thế; 'mediaInfo --Output = Video;% Thời lượng% filename.mp4'
Günay Gültekin

22

Bạn có thể sử dụng mplayer:

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

Đầu ra:

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, điều này hoạt động rất tốt trên OS X 10.10 bằng cách sử dụng brew.sh và cài đặt mplayer với brew install mplayer. mplayer dường như phát hiện nhiều siêu dữ liệu không chuẩn hơn rất nhiều so với mediainfo.
Andrew Odri

22

ffprobe

Trong Ubuntu:

sudo apt install ffmpeg
ffprobe a.mp4

Để có được thông tin về định dạng, luồng, v.v., hãy chạy:

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]

Bạn cũng có thể xuất dưới dạng JSON hoặc CSV. Xem thêm về ffprobe .


ExifTool

Trong Ubuntu:

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

Đầu ra mẫu:

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

Xem thêm: https://askubfox.com/questions/249828/command-to-see-media-file-info-in-terminal

Đã thử nghiệm trên Ubuntu 18.10.


@slhck cảm ơn bạn đã chỉnh sửa, nhưng vui lòng cho biết phiên bản ub Ubuntu nào bạn đã thử nghiệm. Cho rằng, tôi chấp nhận chỉnh sửa, cảm ơn.
Ciro Santilli 心 心

18.04 và 18.10, vì vậy LTS và hiện tại. Vui lòng xem xét rằng câu trả lời trên Stack Exchange có thể được chỉnh sửa bởi người dùng khác để cập nhật chúng.
slhck

@slhck cảm ơn. Nhưng chúng cũng có thể tồn tại trong vài năm mà không cần cập nhật, tốt hơn nên thử nghiệm với mỗi lần chỉnh sửa.
Ciro Santilli 心 心

Có, phiên bản mà nó đã được thử nghiệm có thể được thêm vào, nhưng chủ yếu phụ thuộc vào chính các công cụ (ffprobe, exiftool), chứ không phải hệ điều hành.
slhck

@slhck đồng ý, mẫu câu trả lời hiện tại của tôi kết thúc bằng "Đã thử nghiệm trong Ubuntu ZW, mypackage XY" :-)
Ciro Santilli 改造 心 心 事件

3

Mediainfo là một công cụ tuyệt vời. Để thay thế, bạn cũng có thể lấy các chi tiết bằng cách sử dụng 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

Đây là đầu ra

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

Như Günay Gültekin đã viết, bạn chỉ có thể nhận được một thuộc tính cụ thể, nhưng các trích dẫn bị thiếu:

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

Dựa trên điều này, tôi đã viết một trình bao bọc nhỏ để tính thời lượng của các tệp được tìm thấy với kết quả tóm tắt:

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

1

Trên các bản phân phối linux gần đây, bạn cũng có thể nhận thông tin bằng cách sử dụng 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

avconvkhông còn được vận chuyển với Ubuntu.
slhck
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.