如何从 Mediainfo 获取特定信息

Posted

技术标签:

【中文标题】如何从 Mediainfo 获取特定信息【英文标题】:How do I get specific information out of Mediainfo 【发布时间】:2014-12-16 19:19:39 【问题描述】:

我发现 mediainfo 是一个非常好的从视频文件中获取元数据的工具。但有时它对我来说太过分了。首先我应该提到我正在使用 Windows Powershell,在 Windows Powershell 中我使用 Mediainfo 作为命令行工具。工作得非常整洁,但是当我使用普通的 XML 输出时,就像你可以在 Mediainfo 的 GUI 版本中看到的那样,我没有从我的视频文件中获得足够的信息。使用--Full 命令时,我可以更好地了解元数据。不幸的是,我只需要第五个“持续时间”信息:

持续时间:00:04:42.520

但每次我尝试使用--Inform="Video;%Duration%" 询问持续时间时,我总是会得到第一个“持续时间”信息:

时长:282520

现在这是我的问题:是否可以以仅获得时间码持续时间的方式使用 Mediainfo 命令?因为我不知道哪个命令最能解决这个问题。

C:\Mediainfo>mediainfo.exe C:\Users\Administrator\Desktop\input_luebeck\TheFascist.mov 
General
Count                                    : 292
Count of stream of this kind             : 1
Kind of stream                           : General
Kind of stream                           : General
Stream identifier                        : 0
Count of video streams                   : 1
Count of audio streams                   : 1
OtherCount                               : 1
Video_Format_List                        : ProRes
Video_Format_WithHint_List               : ProRes
Codecs Video                             : apch
Video_Language_List                      : English
Audio_Format_List                        : PCM
Audio_Format_WithHint_List               : PCM
Audio codecs                             : PCM
Audio_Language_List                      : English
Other_Format_List                        : QuickTime TC
Other_Format_WithHint_List               : QuickTime TC
Other_Language_List                      : English
Complete name                            : C:\Users\Administrator\Desktop\input_luebeck\TheFascist.mov
Folder name                              : C:\Users\Administrator\Desktop\input_luebeck
File name                                : TheFascist
File extension                           : mov
Format                                   : MPEG-4
Format                                   : MPEG-4
Format/Extensions usually used           : mp4 m4v m4a m4b m4p 3gpp 3gp 3gpp2 3g2 k3g jpm jpx mqv ismv isma f4v
Commercial name                          : MPEG-4
Format profile                           : QuickTime
Internet media type                      : video/mp4
Codec ID                                 : qt
Codec ID/Url                             : http://www.apple.com/quicktime/download/standalone.html
Codec                                    : MPEG-4
Codec                                    : MPEG-4
Codec/Extensions usually used            : mp4 m4v m4a m4b m4p 3gpp 3gp 3gpp2 3g2 k3g jpm jpx mqv ismv isma f4v
File size                                : 5983768576
File size                                : 5.57 GiB
File size                                : 6 GiB
File size                                : 5.6 GiB
File size                                : 5.57 GiB
File size                                : 5.573 GiB
Duration                                 : 282520
Duration                                 : 4mn 42s
Duration                                 : 4mn 42s 520ms
Duration                                 : 4mn 42s
Duration                                 : 00:04:42.520
Overall bit rate mode                    : VBR
Overall bit rate mode                    : Variable
Overall bit rate                         : 169439858
Overall bit rate                         : 169 Mbps
Stream size                              : 1062720
Stream size                              : 1.01 MiB (0%)
Stream size                              : 1 MiB
Stream size                              : 1.0 MiB
Stream size                              : 1.01 MiB
Stream size                              : 1.013 MiB
Stream size                              : 1.01 MiB (0%)
Proportion of this stream                : 0.00018
HeaderSize                               : 32
DataSize                                 : 5983559488
FooterSize                               : 209056
IsStreamable                             : No
Encoded date                             : UTC 2013-10-21 09:01:39
Tagged date                              : UTC 2013-10-21 09:15:35
File creation date                       : UTC 2014-09-29 14:30:28.168
File creation date (local)               : 2014-09-29 16:30:28.168
File last modification date              : UTC 2014-09-29 14:37:20.793
File last modification date (local)      : 2014-09-29 16:37:20.793
Writing library                          : Apple QuickTime
Writing library                          : Apple QuickTime
Writing library/Name                     : Apple QuickTime
Media/UUID                               : EF3223FC-064A-45E6-9F5D-E59BD682C489
Media/History/UUID                       : 2783B850-08F4-43DE-AEA5-3D8E7DD78570

【问题讨论】:

起初我会将此转换为哈希表,但由于有几个 Duration 键不起作用。我支持你可以像mediainfo.exe C:\Users\path.avi | Select-String -Pattern "Duration" 一样将你的命令输入Select-String。那将是一个开始。或者也许使用Select-String -Pattern "Duration\s+:\s+\d2:\d2" 来获取Duration : 00:04:42.520 【参考方案1】:

隐藏的功能 ;-) 使用

MediaInfo --Language=raw --Full  

您将看到用于模板的字段名称

这里:

MediaInfo --Language=raw --Full --Inform="Video;%Duration/String4%"

PS:如果您在 MediaInfo 论坛上发布问题,我(MediaInfo 的主要开发人员)会看到更快的问题。

【讨论】:

【参考方案2】:

你可以使用你已经使用过的命令来处理你得到的持续时间,如下所示:

(假设 $tmil 持有该值)

# $tmil = 282520
$durationObject = [timespan]::FromMilliseconds($tmil)

#Minutes:
$durationObject.Minutes
#Seconds:
$durationObject.Seconds

#Duration in HH:MM:SS
$durationObject.ToString("hh\:mm\:ss")

#Duration in HH:MM:SS,MS
$durationObject.ToString("hh\:mm\:ss\,fff")

您获得的持续时间以毫秒为单位,可以轻松重新格式化以满足您的需求

【讨论】:

非常聪明。根据回报建立时间。 首先,很抱歉回复晚了,但过去两周我很忙,但现在我有时间在这里尝试其中的一些答案,这是最好的答案,谢谢很多,试过了,它做了我能要求的一切。赞成您的答案并接受它作为最佳答案。不过感谢所有其他人。【参考方案3】:

如果您正在转储该文本,并且您想要的只是持续时间,您可以通过正则表达式运行它来获得:

$Duration = 'C:\Mediainfo\mediainfo.exe' 'C:\Users\Administrator\Desktop\input_luebeck\TheFascist.mov' | Where$_ -match "Duration\s+?: (\d2:\d2:\d2.\d3)"|ForEach$Matches[1]

这应该根据需要将$Duration 设置为00:04:42.520

【讨论】:

以上是关于如何从 Mediainfo 获取特定信息的主要内容,如果未能解决你的问题,请参考以下文章

centos7下mediainfo安装与使用

centos7下mediainfo安装与使用

centos7下mediainfo安装与使用

在 Inno Setup Pascal Script 中使用 MediaInfo 库获取图像文件信息

具有立体声或多个音频流的媒体流的音频持续时间的特定 mediainfo 命令

每秒获取比特数 FFmpeg/Mediainfo