我想爲ffmpeg輸出製作解析器。但是,僅僅只能通過C#Process.Start()比控制檯慢
strCmdText = "-y -i \"" + path + "\"";
strCmdText += " -async 1 -vf yadif -c:v libx264 -b:v 1024k -r 30 -bf 1 -an nul.avi";
Process.Start(new ProcessStartInfo("lib\\ffmpeg.exe", strCmdText));
運行ffmpeg的時候,它比開始它在一個批次2/3慢:
set FFMPEG="ffmpeg\ffmpeg.exe"
%FFMPEG% -y -i %1 -async 1 -vf yadif -c:v libx264 -b:v 1024k -r 30 -bf 1 -an -pass 1 nul.avi
運行在C#中有130的FPS率(CPU:100%) ,但運行與批處理它有400 fps(CPU 75%)。
在這兩種方式RAM使用和是相同的#Handels和#Threads。 將進程優先級設置爲High/Live不會解決此問題,也不會在單獨的線程中運行該進程。
這是正常的,還是可以修復?
您(或其他人)爲您的啓動過程(或其任何父進程)定義了處理器親緣關係嗎?使用進程監視器來查明是否是這種情況。僅運行在75%可能表明該過程僅使用3/4可用內核。 –
您似乎有不同的參數傳遞給位於不同位置的可執行文件。你可以仔細檢查參數是否完全相同,並且你使用完全相同的可執行文件? – oleksii