Как я могу получить конкретную информацию из Mediainfo

Я обнаружил, что mediainfo - действительно хороший инструмент для получения метаданных из видеофайлов. Но иногда это слишком сложно для меня. Прежде всего я должен упомянуть, что я использую Windows Powershell, а в Windows Powershell я использую Mediainfo в качестве инструмента командной строки. Работает довольно аккуратно, но когда я использую обычный вывод XML, такой как тот, который вы можете увидеть в GUI-версии Mediainfo, я не получаю достаточно информации из моих видеофайлов. При использовании --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

3 ответа

Решение

Вы можете работать с длительностью, которую вы получаете, с помощью команды, которую вы уже использовали, вот так:

(при условии, что $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")

Вы получаете длительность в миллисекундах и могут быть легко переформатированы в соответствии с вашими потребностями.

Скрытые возможности;-)
использование

MediaInfo --Language=raw --Full  

и вы увидите имя поля для использования в шаблоне

Вот:

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

PS: я (основной разработчик MediaInfo) быстрее отвечу на вопросы, если вы разместите вопросы на форуме MediaInfo.

Если вы выводите этот текст, и все, что вам нужно, это продолжительность, которую вы можете запустить через регулярное выражение, чтобы получить это:

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

Это должно установить $Duration в 00:04:42.520 как ты и хотел.

Другие вопросы по тегам