批量或VBS |如何检查音乐文件的比特率?

时间:2012-04-26 14:54:39

标签: batch-file vbscript bitrate

我需要检查音乐文件的比特率,我需要接收数字,如:192000(192 kbps),320000(32kbps)或(+)3000000 wavs和未压缩音乐。我的意思是我需要确切的数字,如果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编译的未压缩)。

更多信息:我认为将结果存储在一个文件中,然后进行比较以仅查找新添加的文件,但我无法存储结果以在下次运行时进行比较,因为有时我需要替换已检查的文件(旧文件)。顺便说一下,我都无法通过文件日期戳来处理这个问题。需要一个独特的程序来检查所有文件,Ever(或者这就是我的想法......)。


我尝试了另一种检查比特率的方法,我确信这就是我需要的但是我不能像我想的那样运行...

这个VBS使用DBPowerAmp程序API,并显示一个带有信息的窗口(包括比特率),但是有了一个窗口,我什么也做不了......也许我可以将windows信息重定向到文本file ...然后通过读取文本文件中的比特率信息设置变量“比特率”......但我不知道该怎么做:

' 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)

我试图将这些代码“转换”为Batch,就像这样,但是不要运行,我什么也得不到:

@echo off
rundll32.exe dMCScripting.Converter.AudioProperties("C:\Test.aac") > test.txt
exit

哦,我也试过这个,但浪费的时间比媒体信息更多:

mplayer "test.aac" -frames 0 | findstr "kbit"

2 个答案:

答案 0 :(得分:2)

这里有一个vbs脚本,适用于mp3,其余的我没试过

Set objPlayer = CreateObject("WMPlayer.OCX" )
Set colMediaCollection = objPlayer.mediaCollection

Set colMedia = colMediaCollection.getAll()

For i = 0 to colMedia.Count - 1
    Set objItem = colMedia.Item(i)
    Wscript.Echo objItem.Name & " : " & objItem.GetItemInfo("bitrate")
Next

有关可以使用的属性列表,请参阅http://techsupt.winbatch.com/webcgi/webbatch.exe?techsupt/nftechsupt.web+WinBatch/OLE~COM~ADO~CDO~ADSI~LDAP+Get~Audio~File~Information.txt

答案 1 :(得分:2)

为了让您了解Ruby中的情况,audioinfo只是众多图书馆中的一员。

require "audioinfo"

AudioInfo.open("R:/mp3/j/John Coltrane - I Think.mp3") do |info|
  puts info.to_h
end
=>{"artist"=>"John Coltrane", "album"=>"John Coltrane", "title"=>"I Think", "tracknum"=>nil, "date"=>nil, "length"=>272, "bitrate"=>128}