我的烏拉拉練功坊

請來參觀移植到 Google Firebase 的成績 https://oolala.xyz/ken73chen/

2018年3月28日

PowerShell 取得音訊或視訊的 media info

在 PowerShell 中,如果需要某個音訊或視訊檔案諸如標題、長度之類的資料,可以用:
  1. Windows 的 Shell.Application
  2. MediaInfo
  3. Windows Search 的 index
其他像是用 ffprobe.exe 之類的方法,就不提了。

Windows Shell Application

這應該是最常見的方法,很簡單,取得的內容就是用檔案總管的右鍵,看到的「詳細內容」,方法如下:
$objFolder = (New-Object -ComObject Shell.Application).NameSpace('D:\temp\libmediainfo_AllInclusive\MediaInfoLib\Release\'); $objFile = $objFolder.ParseName("Example.ogg"); 1..200 | foreach({ $v = $objFolder.GetDetailsOf($objFile,$_); if ($v) { "$($objFolder.GetDetailsOf($objFolder,$_)): $($objFolder.GetDetailsOf($objFile,$_))"; } });
跑出來的結果:

大小: 4.74 KB
項目類型: OGM File
修改日期: 2018/3/27 00:22
建立日期: 2018/3/28 14:12
存取日期: 2018/3/28 14:12
屬性: A
認知類型: 音訊
擁有者: KEN-NB\Ken TWM
種類: 音樂; 視訊
評等: 未評等
標題: Test for Unicode (UTF-8)
長度: 00:00:09
大小總計: 235 GB
電腦: KEN-NB (本機)
副檔名: .ogg
檔名: Example.ogg
可用空間: 117 GB
分享: 否
資料夾名稱: Release
資料夾路徑: D:\temp\libmediainfo_AllInclusive\MediaInfoLib\Release
資料夾: Release (D:\temp\libmediainfo_AllInclusive\MediaInfoLib)
路徑: D:\temp\libmediainfo_AllInclusive\MediaInfoLib\Release\Example.ogg
類型: OGM File
連結狀態: UNRESOLVED

MediaInfo

先安裝 MediaInfo,也可以只安裝 DLL,裡面要的只有 MediaInfo.dll 這個檔案,如果你有安裝 MediaInfo,那麼就直接用 C:\Program Files\MediaInfo\MediaInfo.dll 即可。

下載 libmediainfo 的 source,解開到你的硬碟去,重點是裡面的 MediaInfoLib\Source\MediaInfoDLL.css 這個檔案。

$MediaInfoDLLPath = """C:\\Program Files\\MediaInfo\\MediaInfo.dll"""; $MediaInfoDLLSource = "D:\temp\libmediainfo_AllInclusive\MediaInfoLib\Source\MediaInfoDLL\MediaInfoDLL.cs"; $MediaInfoTypeDefinition = $(Get-Content $MediaInfoDLLSource -Raw) -replace """MediaInfo.dll""",$MediaInfoDLLPath; Add-Type -TypeDefinition $MediaInfoTypeDefinition -Language CSharp; $MediaInfo = [MediaInfoLib.MediaInfo]::new(); [void]$MediaInfo.Open("D:\temp\libmediainfo_AllInclusive\MediaInfoLib\Release\Example.ogg"); $MediaInfo.Inform(); $MediaInfo.Close();

跑出來的結果:

General
Complete name                            : D:\temp\libmediainfo_AllInclusive\MediaInfoLib\Release\Example.ogg
Format                                   : Ogg
File size                                : 4.74 KiB
Overall bit rate mode                    : Variable
Track name                               : Test for Unicode (UTF-8)
ARABIC                                   : ئابةتثجحخدذرزسشصضطظعغـف
HEBREW                                   : אבגדהוזחטיךכלםמןנסעףפץצְֱ
COMBINERS                                : ˆˇˉ˘˙˚˛˜̣̀́̃̉
CYRILLIC                                 : ЁЂЃЄЅІЇЈЉЊЋЌЎЏ
ENGLISH                                  : abcdefghaijklmnopqrstuvwxyz
FRENCH                                   : aàäâåáãæÅÆ cçÇ eéèëê uùüû
GREEK                                    : αβγδεζηθικλμνξοπρςστυφχψω
LATIN                                    : ĀāĂ㥹ĆćĈĉĊċČčĎďĐđĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħĨĩĪīĬĭĮįİıIJijĴĵĶķĸĹĺĻļĽľĿŀŁłŃńŅņ

Audio
ID                                       : 18077 (0x469D)
Format                                   : Vorbis
Format settings, Floor                   : 1
Bit rate mode                            : Variable
Bit rate                                 : 128 kb/s
Channel(s)                               : 2 channels
Sampling rate                            : 44.1 kHz
Compression mode                         : Lossy
Writing library                          : libVorbis 1.0.1 (CVS) (UTC 2003-03-08)


就那麼簡單。

Windows Search

如果你要拿一大堆 audio 或 video 檔案的資料,無論是 Shell.Application 或 mediainfo.dll 都會有點慢,可以試試看 Windows 的 SYSTEMINDEX,這方法以後再介紹。