# Исходный файл $file = Get-Item -LiteralPath "D:\Музыка\Yamaha W7 demos.wav" # Отступ до и после полезного сигнала (чтобы треки не начинались сразу один за другим) $preSec = 0.25 $postSec = 2 # Формат файлов на выходе $outputExt = ".wav" $log = (& ffmpeg -i $file.FullName -af silencedetect=n=-50dB -f null - 2>&1) -match '^\[silencedetect' function replaceFfmpegStdout ($in) {$in -replace '.*?: (\d+\.\d+).*','$1'} $starts,$ends = $log.where({$_ -match 'silence_end'}, 'Split') $starts = replaceFfmpegStdout $starts |select -SkipLast 1 $ends = replaceFfmpegStdout $ends |select -Skip 1 $c = 0 $starts |% { & ffmpeg -y ` -ss ($starts[$c] - $preSec) ` -t ($ends[$c] - $starts[$c] + $postSec) ` -i $file.FullName ` ($file.DirectoryName + "\" + "$($file.BaseName) " + ($c+1).tostring("0000") + $outputExt) $c++ }