ฉันต้องตรวจสอบบิตเรตของไฟล์เพลง ฉันต้องได้รับตัวเลขเช่น: 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 และแสดงหน้าต่างพร้อมข้อมูล (รวมบิตเรต) แต่ด้วยหน้าต่าง ฉันไม่สามารถทำอะไรได้เลย... บางทีถ้าฉันสามารถเปลี่ยนเส้นทางข้อมูล 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
โอ้และฉันก็ลองแล้วเหมือนกัน แต่เสียเวลามากกว่า mediainfo:
mplayer "test.aac" -frames 0 | findstr "kbit"