4

Какой быстрый и простой способ узнать, сколько тишины в начале MP3? Я знаю, что многое входит в это ... Мне не нужно ничего слишком точного. В течение примерно 50 миллисекунд это здорово.

У меня есть 1000 или около того MP3-файлов, с которыми я хочу сделать это, так что решение, с которым я мог бы написать сценарий, было бы лучшим. Спасибо!

Обратите внимание, что я не хочу урезать тишину, мне нужно знать длину тишины.

1 ответ1

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

Пример вывода

  • Первый столбец - это отметка времени в секундах и миллисекундах, где заканчивается тишина и начинается музыка
  • Второй столбец - это отметка времени в секундах и миллисекундах, где заканчивается музыка и начинается тишина
  • Третий столбец - путь к файлу

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .