Мне нужно проверить битрейт музыкального файла, мне нужно получить цифровое число, например: 192000 (для 192 кбит/с), 320000 (для 32 кбит/с) или (+)3000000 для wav и несжатой музыки. Я имею в виду, что мне нужен именно номер. Если MP3 является VBR и сжат со скоростью 194 кбит/с, мне нужен номер 194000, а не текущий CBR 192000.
Я выполнял эту работу с помощью программы командной строки MEDIAINFO (x64) в пакетном режиме:
for /f "tokens=*" %%%% in ('mediainfo "%%a" "--Inform=General;%%BitRate/String%%"') do set "BitRate=%%~%%"
Но у меня 35.000+ файлов для проверки и то компробация всех файлов занимает более 2 часов времени.
Мне нужен простой код, чтобы проверить это, а не программа, которая должна выполнять его и тратить столько времени...
Очень важно, чтобы код распознавал как минимум следующие типы файлов (я имею в виду внутренний битрейт): AIFF, FLAC, M4A, MP3, OGG, WAV, WMA.
И не может быть кодом для Ruby или Python, потому что мне нужно будет его «скомпилировать», и, конечно, когда он «скомпилирован», тратится много времени на проверку большого количества файлов (вызывает распаковку скомпилированного .exe).
Дополнительная информация: я подумал о том, чтобы сохранить результаты в файле, а затем выполнить сравнение, чтобы проверить только новые добавленные файлы, но я не могу сохранить результат, чтобы выполнить сравнение при следующем запуске, потому что иногда мне нужно заменить проверенные файлы (старые файлы). Кстати, я тоже не могу справиться с этим по дате файлов. Должна быть одна уникальная процедура для проверки ВСЕХ файлов, когда-либо (Или это то, что я думаю...).
Я попробовал другой метод проверки битрейта, я действительно уверен, что это то, что мне нужно, но я не могу заставить его работать так, как хочу...
Этот VBS использует API программы DBPowerAmp, И показывает окно с информацией (включая битрейт), Но с окном я ничего не могу сделать... Может быть, если я смогу перенаправить информацию Windows в текстовый файл.. , А затем установите переменную «Битрейт», прочитав информацию о битрейте в текстовом файле... Но я не знаю, как это сделать:
' create shell object
Set WshShell = CreateObject("WScript.Shell")
' Create dMC Object
Set dMC = CreateObject("dMCScripting.Converter")
'Read audio properties of a file
Dim AudioProps
AudioProps = dMC.AudioProperties("C:\test.aac")
Call WshShell.Popup(AudioProps, , "Returned Audio Properties", 0)
Я пытался "конвертировать" этот код в пакетный режим, вот так, но не запускайте, я ничего не получаю:
@echo off
rundll32.exe dMCScripting.Converter.AudioProperties("C:\Test.aac") > test.txt
exit
О, и я тоже пробовал это, но тратил больше времени, чем медиаинформация:
mplayer "test.aac" -frames 0 | findstr "kbit"