我需要检查音乐文件的比特率,我需要以数字形式接收数字,例如:192000(对于 192 kbps)、320000(对于 32kbps)或 (+)3000000(对于 wav 和未压缩音乐)。我的意思是我需要确切的数字,如果 MP3 是 VBR 并且以 194 kbps 压缩,我需要 194000 数字,而不是当前的 CBR 192000。
我正在使用MEDIAINFO (x64) CLI 程序批量完成这项工作:
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 使用 DBPowerAmp 程序 API,并显示一个带有信息的窗口(包括比特率),但是对于一个窗口我什么也做不了......也许如果我可以将窗口信息重定向到一个文本文件......然后通过读取文本文件中的比特率信息来设置变量“比特率”......但我不知道该怎么做:
' 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
哦,我也试过这个,但比 mediainfo 浪费更多时间:
mplayer "test.aac" -frames 0 | findstr "kbit"