我正在使用一个名为dbPoweramp的程序来转换Powershell中的音乐。我正在使用文档here,这是我在搜索时可以找到的。每当我使用程序本身进行转换时,我获得100%的CPU使用率并且它完全利用所有八个线程。但是,每当我通过命令行启动时,我只能获得大约13%的CPU使用率。显然不希望手动启动程序,因为我要在这里进行自动化。我试过搞乱-processors参数,但它没有任何区别。有没有人知道为什么会这样?
我也尝试过使用FFMPEG,但FFMPEG的CPU使用率同样很低。如果任何人都可以发布使FFMPEG能够利用所有八个内核的代码。
以下是执行实际转换的代码部分,基本上它只是搜索所有flac,m4a或mp3文件,然后自动将它们转换为可变比特率1个mp3用于流式传输。
$oldMusic = Get-ChildItem -Include @("*.flac", "*.m4a", "*.mp3") -Path $inProcessPath -Recurse #gets all of the music
cd 'C:\Program Files (x86)\Illustrate\dBpoweramp'
foreach ($oldSong in $oldMusic) {
$newSong = [io.path]::ChangeExtension($oldSong.FullName, '.mp3')
$oldSongPath = $oldSong.FullName
$newSongPath = "E:\Temp\$newSong"
.\CoreConverter.exe -infile= $oldSongPath -outfile= $newSong -convert_to= "mp3 (Lame)" -V $quality #converts the file
}
提前致谢!
答案 0 :(得分:1)
我认为编码器不会在多个线程上运行。我认为它一次最多编码8个曲目,每个核心一个。在您的示例中,编码将连续发生,这意味着您一次只能使用一个核心。 FFmpeg也会出现同样的情况。
我不是Powershell的人,但是如果你能同时运行8个进程,你就不会遇到这个问题。