Швидкий спосіб дізнатися, скільки тиші на початку MP3?


4

Який швидкий і простий спосіб дізнатися, скільки тиші на початку MP3? Я знаю, що багато в чому йдеться ... Мені не потрібно нічого надто точного. Протягом 50 або більше мілісекунд це чудово.

У мене є 1000 або більше MP3-файлів, з якими я хочу це зробити, тому рішення, з яким я міг би сценарій, було б найкращим. Дякую!

Зауважте, що я не хочу порізати тишу, мені потрібно знати тривалість тиші.

Відповіді:


1

Оскільки ви не вказали свою ОС, я вважаю, що Windows.

Використовуйте ffmpeg у поєднанні з PowerShell ISE

PowerShell

$folder = "C:\path\to\musicfolder"
$ffmpeg = "C:\path\to\ffmpeg.exe"

$content = "track start     track end   Filepath`n"
Get-ChildItem $folder -Recurse -Include *.mp3,*.ogg,*.flac  | foreach {        

    $log = & $ffmpeg -hide_banner -i `"$_`" -af "silencedetect=duration=2:noise=-50dB" -f null - 2>&1
    #echo [string]$log

    $totalLength = [string]$log | where {$_ -match '(?<= Duration:.*)[\d:\.]+' } | % {$matches[0]}        
    $totalLength = ([TimeSpan]::Parse($totalLength)).TotalSeconds

    [string[]]$silenceEnd = $log | where {$_ -match '(?<=silence_end: )[-\d\.]+' } | % {$matches[0]}            
    If ($silenceEnd.count -gt 0 -And [double]$silenceEnd[0] -lt $totalLength/2) {
        [string]$trackStart = $silenceEnd[0]
    } else {
        [string]$trackStart = 0
    }

    [string[]]$silenceStart = $log | where {$_ -match '(?<=silence_start: )[-\d\.]+' } | % {$matches[0]}                
    If ($silenceStart.count -gt 0 -And $silenceStart[$silenceStart.count-1] -gt $totalLength/2) {
        [string]$trackEnd = $silenceStart[$silenceStart.count-1]
    } else {        
        [string]$trackEnd = $totalLength
    }    
    $content += "$trackStart                $trackEnd       $_  `n"
}
Clear-Content "$folder\silenceLog.txt"
Add-Content "$folder\silenceLog.txt" $content

Приклад виведення

введіть тут опис зображення

  • Перша колонка - це позначка часу в секундах і мілісекундах, коли тиша закінчується і починається музика
  • Другий стовпець - це позначка часу в секундах і мілісекундах, коли закінчується музика і починається тиша
  • Третій стовпець - шлях до файлу
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.