當你從某些特殊渠道拿到 Amazon Music 的音頻文件的時候,你會發現其 Hi-Res FLAC 文件 md5 與其他平台售賣版本不同,這是因為其前面有空採樣。因此只需去除空採樣即可達到 "Bit Perfect"。故寫這一腳本自動化處理具有錯誤 md5 的文件。
# 本代碼根據Apache 2.0許可證發布。
# 作者:nptr
$files = Get-ChildItem -Recurse -Filter *.flac | Select-Object FullName, BaseName
$files | ForEach-Object {
$fullName = $_.FullName
$fileName = $_.BaseName
Write-Host 處理中 $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
if ($skip -ne 0) {
flac -8 --skip=$skip -f $fullName
metaflac --set-tag=BP=1 $fullName
}
}
else {
Write-Host 跳過 $fileName
}
}
用到了 PowerShell7 以及 metaflac,相信聰明的你能夠解決這兩個問題。