1

音楽ファイルのビットレートを確認する必要があります。192000 (192 kbps の場合)、320000 (32 kbps の場合)、(+)3000000 (wav および非圧縮音楽の場合) のような数値を受け取る必要があります。つまり、正確な数値が必要です。MP3 が VBR で、194 kbps で圧縮されている場合、現在の CBR 192000 ではなく、194000 の数値が必要です。

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 の圧縮解除が発生します)。

詳細情報: 結果をファイルに保存してから、新しく追加されたファイルのみをチェックするために比較を行うことを考えましたが、結果を保存して次の実行時に比較を行うことはできません。チェックしたファイルを置き換える必要がある場合があるためです。 (古いファイル)。ちなみに、ファイルの日付スタンプでこれを処理することもできません。すべてのファイルをチェックするための 1 つの独自の手順である必要があります (または、これは私が思うことです...)。


ビットレートを確認するために別の方法を試しました。これが必要なことだと確信していますが、思い通りに実行できません...

この 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

ああ、私もこれを試しましたが、メディア情報よりも多くの時間を無駄にします:

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

2 に答える 2

2

Ruby でそれがどのようなものかを理解してもらうために、audioinfo は、そのようなことを行う多くのライブラリーの 1 つにすぎません。

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}
于 2012-04-28T15:28:10.137 に答える
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 を参照してください。使用できる属性。

于 2012-04-28T15:09:19.897 に答える