When you obtain audio files from Amazon Music through certain special channels, you will find that the Hi-Res FLAC files have a different md5 compared to versions sold on other platforms, this is because of the presence of empty samples at the beginning. Therefore, simply removing the empty samples can achieve "Bit Perfect". Hence, this script is written to automate the processing of files with incorrect md5.
# This code is distributed under the Apache 2.0 License.
# author: nptr
$files = Get-ChildItem -Recurse -Filter *.flac | Select-Object FullName, BaseName
$files | ForEach-Object {
$fullName = $_.FullName
$fileName = $_.BaseName
Write-Host Processing $fileName
$flag = metaflac --show-tag=BP $fullName
$res = metaflac --show-sample-rate $fullName
$skip = 0
switch ($res) {
44100 { $skip = 286 }
48000 { $skip = 312 }
96000 { $skip = 624 }
192000 { $skip = 1248 }
Default { $skip = 0 }
}
if ($flag -ne "BP=1") {
Write-Host SampleRate: $($res / 1000)kHz, skip $skip
if ($skip -ne 0) {
flac -8 --skip=$skip -f $fullName
metaflac --set-tag=BP=1 $fullName
}
}
else {
Write-Host Skipping $fileName
}
}
PowerShell7 and metaflac are used in this script, and I believe that you, being clever, can solve these two issues.