HandbrakeCLI をコンバーターとして使用して、ビデオ ファイルをバッチ変換するプログラムの作成に取り組んでいます。ほとんどの設定が完了し、実際にファイルを Handbrake に渡す作業を行っています。HandbrakeCLI の場所で新しいプロセスを作成し、引数を渡します。また、同じシェルで実行されるようにします。それはスピンアップし、変換を開始し、3 フレームほどになると自滅します。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 で見つけることができます。
編集:コードを修正