วิธีการดึงข้อมูลไฟล์วิดีโอจากบรรทัดคำสั่งภายใต้ Linux?


81

ฉันต้องการดูจากบรรทัดคำสั่งข้อมูลทั้งหมดที่เกี่ยวข้องกับไฟล์วิดีโอที่กำหนดรวมถึงความยาวคุณภาพบิตเรตความละเอียดรูปแบบเสียงและวิดีโอจำนวนและภาษาของสตรีมเสียงและคำบรรยายและอื่น ๆ ยิ่งดีที่สุด

เท่าที่ฉันจะต้องใช้ในแท็บ "ข้อมูล" ของ VLC เพราะแม้แต่ตัวจัดการไฟล์ Dolphin ก็ไม่ได้ช่วยฉัน: มันแสดงให้ฉันเห็นเพียงบางส่วนของข้อมูลเหล่านี้และสำหรับรูปแบบบางอย่าง (เช่น.mkvดูเหมือนจะไม่สนับสนุนวิธีนั้น )


2
สิ่งที่เกี่ยวกับMediaInfo ?
Endoro

5
ลองดูmkvinfoและffprobeเช่นกัน
slhck

ขอบคุณเช่นกัน เป็นก่อนที่จะกรุณาตอบดังนั้นผมจึงต้องสามารถออกเสียงลงคะแนนข้อเสนอแนะของคุณ
Sekhemty

1
Mkvinfo ใช้ได้ แต่สำหรับวิดีโอ MKV:mkvinfo -v -v video.mkv
Endoro

คำตอบ:


100

ให้MediaInfoลอง mediainfo input.mkvกับชนิดบรรทัดคำสั่ง mediainfo --fullscan input.mkvสำหรับข้อมูลวิดีโอรายละเอียดเพิ่มเติม

ตัวอย่างผลลัพธ์:

ทั่วไป
รหัสที่ไม่ซ้ำ: 239093944660469735839645243666869007606 (0xB3DFD199E22F0E7CBAE1FE52206834F6)
ชื่อที่สมบูรณ์: input.mkv
รูปแบบ: Matroska
รูปแบบเวอร์ชัน: เวอร์ชัน 2
ขนาดไฟล์: 39.6 MiB
ระยะเวลา: 20 วินาที 288 มิลลิวินาที
โหมดอัตราบิตโดยรวม: ตัวแปร
อัตราบิตโดยรวม: 16.4 Mbps
ชื่อภาพยนตร์: ภาพยนตร์ที่ดีที่สุดของฉัน
เข้ารหัสวันที่: UTC 2012-11-10 16:42:02
แอปพลิเคชั่นเขียน: mkvmerge v5.8.0 ('ไม่นอน / หมอน') สร้างเมื่อวันที่ 2 ก.ย. 2012 เวลา 15:37:04 น
ห้องสมุดการเขียน: libebml v1.2.3 + libmatroska v1.3.0
ผลิตภัณฑ์: ??? ???????
ขอบคุณ: Bruce Davey
นักแสดงนำ: รูดี้ยังโบลด์
เรียบเรียงโดย: © ????

วีดีโอ
ID: 1
รูปแบบ: AVC
รูปแบบ / ข้อมูล: ตัวแปลงสัญญาณวิดีโอขั้นสูง
รูปแบบโปรไฟล์: High@L4.0
MultiView_Count: 2
การตั้งค่ารูปแบบ CABAC: ใช่
การตั้งค่ารูปแบบ ReFrames: 2 เฟรม
การตั้งค่ารูปแบบ GOP: M = 2, N = 13
โหมด Muxing: การปอกส่วนหัว
รหัสตัวแปลงสัญญาณ: V_MPEG4 / ISO / AVC
ระยะเวลา: 20 วินาที 280 มิลลิวินาที
โหมดอัตราบิต: ตัวแปร
อัตราบิต: 15.8 Mbps
อัตราบิตสูงสุด: 16.0 Mbps
ความกว้าง: 1 920 พิกเซล
ความสูง: 1 080 พิกเซล
อัตราส่วนการแสดงผล: 16: 9
โหมดอัตราเฟรม: คงที่
อัตราเฟรม: 25.000 เฟรมต่อวินาที
พื้นที่สี: YUV
การสุ่มตัวอย่าง Chroma: 4: 2: 0
ความลึกบิต: 8 บิต
ประเภทการสแกน: อินเตอร์เลซ
ลำดับการสแกน: ฟิลด์แรกสุด
Bits / (Pixel * Frame): 0.304
ขนาดกระแส: 38.2 MiB (96%)
หัวข้อ: Sony Hardware Video H.264 Encoder
ภาษาอังกฤษ
เริ่มต้น: ใช่
บังคับ: ไม่

เสียง
ID: 2
รูปแบบ: AC-3
รูปแบบ / ข้อมูล: การเข้ารหัสเสียง 3
ส่วนขยายโหมด: CM (หลักสมบูรณ์)
การตั้งค่ารูปแบบ Endianness: ใหญ่
โหมด Muxing: การปอกส่วนหัว
รหัสตัวแปลงสัญญาณ: A_AC3
ระยะเวลา: 20 วินาที 288 มิลลิวินาที
โหมดอัตราบิต: คงที่
อัตราบิต: 256 Kbps
ช่อง: 2 ช่อง
ตำแหน่งของช่อง: ด้านหน้า: LR
อัตราการสุ่มตัวอย่าง: 48.0 KHz
ความลึกบิต: 16 บิต
โหมดการบีบอัด: สูญเสีย
หน่วงเวลาที่สัมพันธ์กับวิดีโอ: -80ms
ขนาดกระแส: 634 KiB (2%)
หัวข้อ: Sony Hardware Audio AC3 Encoder
ภาษา: รัสเซีย
เริ่มต้น: ใช่
บังคับ: ไม่

ข้อความ
ID: 3
รูปแบบ: PGS
โหมด Muxing: zlib
รหัสตัวแปลงสัญญาณ: S_HDMV / PGS
Codec ID / Info: รูปแบบคำบรรยายเดียวกับที่ใช้กับ BDs / HD-DVDs
หัวข้อ: Sony PGS Encoder
ภาษาอังกฤษ
เริ่มต้น: ใช่
บังคับ: ไม่

มันเป็นเรื่องดี แต่ฉันแค่อยากจะได้แค่ช่วงเวลาใน commandline แล้ว
ขอบคุณ

2
ใช่ฉันพบแล้ว ฉันควรทำเช่นนั้น 'mediaInfo --Output = Video;% Duration% filename.mp4'
GünayGültekin

22

คุณสามารถใช้ mplayer:

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

เอาท์พุท:

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 นี้ทำงานที่ยอดเยี่ยมใน OS X 10.10 ใช้brew.shและติดตั้ง mplayer brew install mplayerกับ mplayer ดูเหมือนจะตรวจพบเมตาดาต้าที่ไม่ได้มาตรฐานมากกว่า mediainfo
Andrew Odri

22

ffprobe

ภายใต้ Ubuntu:

sudo apt install ffmpeg
ffprobe a.mp4

ในการรับข้อมูลเกี่ยวกับรูปแบบสตรีม ฯลฯ ให้เรียกใช้:

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]

คุณสามารถส่งออกเป็น JSON หรือ CSV ดูข้อมูลเพิ่มเติมเกี่ยวกับ ffprobe


ExifTool

ภายใต้ Ubuntu:

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

ตัวอย่างผลลัพธ์:

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

ดูเพิ่มเติมที่: https://askubuntu.com/questions/249828/command-to-see-media-file-info-in-terminal

ทดสอบบน Ubuntu 18.10


@slhck ขอบคุณสำหรับการแก้ไข แต่โปรดบอกว่าคุณใช้ Ubuntu รุ่นใด ระบุว่าฉันยอมรับการแก้ไขขอบคุณ
Ciro Santilli 新疆改造中心法轮功六四事件

18.04 และ 18.10 ดังนั้น LTS และค่าปัจจุบัน โปรดพิจารณาว่าคำตอบในการแลกเปลี่ยนแบบสแต็กอาจถูกแก้ไขโดยผู้ใช้รายอื่นเพื่อให้ทันสมัย
slhck

@slhck ขอบคุณ แต่มันอาจยังคงเป็นเวลาหลายปีโดยไม่มีการอัปเดตเพิ่มการทดสอบให้ดีขึ้นในทุก ๆ การแก้ไข
Ciro Santilli 新疆改造中心法轮功六四事件

ใช่เวอร์ชันที่ได้รับการทดสอบนั้นสามารถเพิ่มได้ แต่ส่วนใหญ่ขึ้นอยู่กับเครื่องมือของตัวเอง (ffprobe, exiftool) ไม่ใช่ระบบปฏิบัติการ
slhck

@slhck เห็นด้วยแม่แบบคำตอบปัจจุบันของฉันลงท้ายด้วย "Tested ใน Ubuntu ZW, mypackage XY" :-)
Ciro Santilli 新疆改造中心法轮功六四事件

3

Mediainfo เป็นเครื่องมือที่ยอดเยี่ยม เป็นอีกทางเลือกหนึ่งที่คุณสามารถคว้ารายละเอียดโดยใช้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

นี่คือผลลัพธ์

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

ดังที่GünayGültekinเขียนคุณสามารถรับเฉพาะคุณลักษณะเฉพาะ แต่คำพูดหายไป:

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

จากนี้ฉันเขียน wrapper เล็กน้อยเพื่อคำนวณระยะเวลาของไฟล์ที่พบซึ่งมีเอาต์พุตสรุป:

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

1

ในการแจกแจงลินุกซ์ล่าสุดคุณยังสามารถรับข้อมูลโดยใช้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

avconvไม่ได้จัดส่งกับ Ubuntu อีกต่อไป
slhck
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.