Как показать продолжительность нескольких файлов mp4 - PullRequest
0 голосов
/ 05 марта 2019

Я хочу извлечь продолжительность PowerPhell из нескольких файлов mp4.Я нашел сценарий, который делает то, что я хочу, но с этими сценариями показанная длительность составляет ЧЧ: мм: сс, и я хочу, чтобы точное время продолжительности было с большей точностью, чем секунды, например, миллисекунды или, возможно, ЧЧ: мм: сс: SSS.

Кто-нибудь может мне помочь?Есть способ сделать это?Сценарий, который я нашел, выглядит следующим образом:

Function Get-VideoDetails {
    param ($targetDirectory)
    $LengthColumn = 27
    $objShell = New-Object -ComObject Shell.Application
    Get-ChildItem -LiteralPath $targetDirectory -Include *.mp4 -Recurse -Force | ForEach {
        if ($_.Extension -eq ".mp4"){
            $objFolder = $objShell.Namespace($_.DirectoryName)
            $objFile = $objFolder.ParseName($_.Name)
            $Duration = $objFolder.GetDetailsOf($objFile, $LengthColumn)
            New-Object PSObject -Property @{
                Name = $_.Name
                Duration = $Duration
            }
        }
    }
}

Укажите ваш видео каталог

Get-VideoDetails "C:\VIDS"

1 Ответ

0 голосов
/ 30 апреля 2019

Используя сборку командной строки MediaInfo (CLI), вы можете попробовать что-то вроде этого:

$VideoDuration = [math]::Round(((C:\MediaInfoCLI\mediainfo '--Output=Video;%Duration%' $File.FullName) / 1000), 3)     # MediaInfo reported Video duration in decimal seconds

$AudioDuration = [math]::Round(((C:\MediaInfoCLI\mediainfo '--Output=Audio;%Duration%' $File.FullName) / 1000), 3)     # MediaInfo reported Audio duration in decimal seconds
...