2012-04-26 52 views
1

我需要檢查一個音樂文件的比特率,我需要接收以192000(對於192 kbps),320000(對於32kbps)或(+)3000000爲wavs和未壓縮音樂的數字。我的意思是我到底需要多少,如果MP3 VBR是在194 kbps的壓縮,我需要的數19.4,而不是目前的CBR 192000批或VBS |如何檢查音樂文件的比特率?

我是做這個工作有的MediaInfo(64)CLI計劃,在批次:

for /f "tokens=*" %%%% in ('mediainfo "%%a" "--Inform=General;%%BitRate/String%%"') do set "BitRate=%%~%%" 

但我有35.000文件檢查,然後將所有文件的comprobation超過2個小時的時間......


我需要一個簡單的代碼來檢查它不是一個需要執行它並浪費時間的程序在很多時候......

是代碼需要認識到,至少這個文件類型(我指的是內部比特率)非常重要: AIFF,FLAC,M4A,MP3,OGG,WAV,WMA。

不能成爲Ruby或Python的代碼,因爲我需要「編譯」它,並確定什麼時候「編譯」浪費大量的時間來檢查很多文件(導致解壓縮。 exe編譯)。

更多信息:我想將結果存儲在一個文件中,然後做一個比較,只有新添加的文件,但我不能存儲結果做下一次運行的比較,因爲有時我需要替換選中的文件(舊文件)。順便說一句,我也無法處理這個文件的日期戳。需要成爲一個獨特的程序來檢查所有的文件,永遠(或者這是我認爲...)。


我tryed另一種方法來檢查的比特率,我真的相信這是我需要的,但我不能讓它運行像我想...

這VBS使用DBPowerAmp程序API,並顯示與信息窗口(包括比特率),但有一個窗口,我不能什麼都不做......也許,如果我可以重定向wwwwwwwwwindows信息到一個文本文件...然後設置變量「比特率「通過閱讀文本文件中的比特率信息...但我不知道該怎麼做:

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

我tryed「轉換」的代碼進入批量生產,像這樣的,但是不跑,我什麼也沒有:

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

編輯:哦,我已經tryed本太,但浪費比的MediaInfo更多的時間:

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

我會等着別人來幫我,三江源閱讀我的問題!

+0

您是否需要檢查+35,000個文件_every time_?你能一次完成+2小時的過程嗎(並將結果存儲在一個文件中),從那時起只處理新文件(並從文件中取出舊結果)? – Aacini 2012-04-26 17:41:15

+0

謝謝你是一個好主意,但我想到了,我無法存儲結果做下一次運行的比較,因爲有時候我需要替換選中的文件(舊文件)。順便說一句,我也無法處理這個文件的日期戳。需要成爲一個獨特的程序來檢查所有的文件,永遠(或者這是我認爲...)。 Bye – ElektroStudios 2012-04-26 19:35:18

+1

爲什麼downvote和「密切的問題」?這個話題對我來說似乎很有趣!我不是OP ... – Aacini 2012-04-27 01:06:54

回答

2

給你的是什麼樣的紅寶石的想法,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} 
+0

嗨,謝謝你,但我可以找不到任何名爲「audioinfo」的寶石:( – ElektroStudios 2012-05-07 08:53:41

+0

只需安裝紅寶石,一旦完成,在命令提示符 然後cd到\ ruby​​193 \ bin地圖,並輸入 「gem install ruby​​-audioinfo」 這就是ruby庫(gems)的安裝方式。 – peter 2012-05-07 12:40:26

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

+0

這個解決方案需要安裝在Windows上的wmplayer組件: - /但謝謝 – ElektroStudios 2012-05-07 08:49:55