2014-01-21 63 views
0

我正在使用名为dbPoweramp的程序来转换Powershell内的音乐。我正在使用文档here,这是我在搜索时可以找到的所有文档。无论何时我使用程序本身进行转换,我都可以获得100%的CPU使用率,并充分利用所有八个线程。但是,每当我通过命令行启动时,我的CPU使用率只有13%左右。显然,不得不手动启动程序,因为我要在这里进行自动化。我曾尝试搞乱-processors的论点,但它没有任何区别。有没有人有任何想法,为什么会这样?使用dbPoweramp的低CPU使用率Powershell

我也尝试使用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 

}

提前感谢!

回答

1

我不认为编码器运行在多个线程上。我认为它一次编码8个音轨,每个音轨编码一个。在你的例子中,编码会连续发生,这意味着你一次只能使用一个核心。 FFmpeg也会发生同样的情况。

我不是Powershell的家伙,但如果你能让它一次运行多达8个进程,你就不会有这个问题。

+0

现在我想到了,这是有道理的。我不确定我会如何做到这一点。我将不得不做更多的研究。 – Caulen