如何在Linux下从命令行检索视频文件信息?

如何在Linux下从命令行检索视频文件信息?

我想从命令行查看有关给定视频文件的所有信息,包括长度、质量、比特率、分辨率、音频和视频格式、音频流和字幕的数量和语言等等;越多越好。

现在我必须求助于 VLC 的“信息”选项卡,因为即使是 Dolphin 文件管理器也无法帮助我解决这个问题:它只显示其中一些信息,而且只针对某些格式(即.mkv似乎不支持这种方式)。

答案1

媒体信息试试看。在命令行输入mediainfo input.mkv。获取更多详细的视频信息mediainfo --fullscan input.mkv

输出示例:

一般的
唯一 ID: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 ('No Sleep / Pillow') 构建于 2012 年 9 月 2 日 15:37:04
写入库:libebml v1.2.3 + libmatroska v1.3.0
产品:??? ?????????
感谢:Bruce Davey
主演:Rudy Youngblood
混音者:©????

视频
编号:1
格式:AVC
格式/信息:高级视频编解码器
格式简介:[电子邮件保护]
多视图数量:2
格式设置,CABAC:是
格式设置,ReFrames:2帧
格式设置,GOP:M=2,N=13
多路复用模式:标头剥离
编解码器 ID : V_MPEG4/ISO/AVC
持续时间:20秒280毫秒
比特率模式:可变
比特率:15.8 Mbps
最大比特率:16.0 Mbps
宽度:1920像素
高度:1 080 像素
显示宽高比:16:9
帧率模式:恒定
帧率:25,000 fps
色彩空间:YUV
色度子采样:4:2:0
位深度:8位
扫描类型:隔行扫描
扫描顺序:顶场优先
位/(像素*帧):0.304
流大小:38.2 MiB (96%)
标题:索尼硬件视频 H.264 编码器
英语语言
默认值:是
强迫 : 否

声音的
编号:2
格式 : AC-3
格式/信息:音频编码 3
模式扩展:CM(完整主模式)
格式设置,字节序:大
多路复用模式:标头剥离
编解码器 ID :A_AC3
时长:20秒288毫秒
比特率模式:恒定
比特率:256 Kbps
频道:2 个频道
通道位置 : 正面:LR
采样率:48.0 KHz
位深度:16位
压缩模式:有损
相对于视频的延迟:-80ms
流大小:634 KiB (2%)
标题:索尼硬件音频 AC3 编码器
语言 : 俄语
默认值:是
强迫 : 否

文本
编号:3
格式 : PGS
多路复用模式:zlib
编解码器 ID : S_HDMV/PGS
编解码器 ID/信息:与 BD/HD-DVD 上使用的字幕格式相同
标题:索尼硬件 PGS 编码器
英语语言
默认值:是
强迫 : 否

答案2

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]

或者你可以只获取选定的条目,例如size使用:

ffprobe -v error -show_entries format=size -of default=noprint_wrappers=1:nokey=1 input.mp4

您还可以输出为 JSON 或 CSV。请参阅关于 ffprobe 的更多信息

Exif工具

在 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 上测试。

答案3

您可以使用 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

答案4

正如 Günay Gültekin 所写,您只能获得特定属性,但缺少引号:

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

基于此,我编写了一个小包装器来计算找到的文件的持续时间并输出摘要:

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

相关内容