1
我正在編寫一個程序,使用HandbrakeCLI作爲轉換器批量轉換視頻文件。我已經完成了大部分工作,現在我正在將文件傳遞給Handbrake。我用HandbrakeCLI的位置創建一個新進程並傳遞參數。我也使它在同一個shell中執行。它旋轉起來,然後開始通過轉換,並達到三幀左右,並殺死自己。我在Windows 8 64位上使用Visual Studio 12。這裏是我的代碼:進程死亡本身
static void EncodeVideos()
{
var continueConverting = true;
while (continueConverting)
{
var converted = 0;
if (settings.Optimize == true)
{
videos = videos.OrderBy(x => x.InputSize).ToList();
}
foreach (var v in videos)
{
if (!v.AlreadyConverted())
{
v.CreateOutputPath();
var input = String.Format("-i \"{0}\" ", v.InputPath);
var output = String.Format("-o \"{0}\" ", v.OutputPath);
var preset = String.Format("-Z {0}", settings.Preset);
var convertString = String.Format(" {0} {1} {2}", input, output, preset);
//Converting is not working correctly yet.
var p = new Process();
p.StartInfo = new ProcessStartInfo(settings.HandBrakeLocation, convertString)
{
UseShellExecute = false,
};
p.Start();
p.WaitForExit();
converted++;
}
}
if (settings.Loop == true)
{
if (converted == 0)
{
continueConverting = false;
}
}
else
{
continueConverting = false;
}
}
}
如果您想對代碼的情況下,我已經把它全部在GitHub上,你可以找到它的Github。
編輯:固定碼
它看起來不是問題 - 首先看到循環,只有在所有視頻成功轉換後才能達到此點 – Bond
迭代完所有視頻後,這些都在我的while循環中。該設置適用於用戶想要運行轉換的情況,最後查看目錄中是否有新文件,如果設置爲true,則會覆蓋它們。否則,文件只運行一次,程序退出。 – Rumel
雖然你是對的,但我忘記了第二個繼續轉換之外如果設置爲true。我必須去解決這個問題。 – Rumel