0

C# アプリケーション内で ProcessStartInfo を介して FFmpeg を呼び出していますが、エラーが発生し続けることができません。

プリセット「lossless_slow」のファイルが見つかりません

これが私の C# コードです。

var processinfo = new ProcessStartInfo();
processinfo.FileName = "FFmpeg\\bin\\ffmpeg.exe";
processinfo.Arguments = "-i C:\Temp\input.mp4 -y -acodec aac -strict experimental -ab 96k -vcodec libx264 -vpre lossless_slow -crf 22 -threads 0 C:\Temp\output.mp4"
processinfo.RedirectStandardOutput = true;
processinfo.RedirectStandardError = true;
processinfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal;
processinfo.UseShellExecute = false;
processinfo.LoadUserProfile = true;
processinfo.EnvironmentVariables.Add("HOME", @"C:\Users\wonea\.ffmpeg");

var reg = System.Diagnostics.Process.Start(processinfo);

string output = string.Empty;
string error = string.Empty;

using (System.IO.StreamReader myOutput = reg.StandardOutput)
{
    output = myOutput.ReadToEnd();
}
using (System.IO.StreamReader myError = reg.StandardError)
{
    error = myError.ReadToEnd();
}

これで、プリセットをフォルダーに入れました

C:\Users\wonea\ .ffmpeg

これをWindowsパスユーザー変数HOMEに含めました。これは、コマンド ラインから FFmpeg を実行している場合は問題なく動作しますが、C# アプリケーション内でコマンドを発行すると失敗します。助けてくれてありがとう...!

また、「Network Service」としてサービスを実行していることにも注意してください。

4

2 に答える 2

0

ここでは、HOME 変数を設定するとうまくいきます。

私が見る唯一のことは、コードで HOME を @"C:\Users\wonea.ffmpeg" に設定し、テキストでファイルが次の場所にあることです: C:\Users\wonea.ffmpeg

これらのうちの1つはタイプミスですか?

于 2011-05-19T13:57:52.347 に答える
0

このような状況では、アプリケーションのすべてのファイル操作を表示できるprocmonツールを常に起動します。プリセット ファイルの名前に基づいてフィルターを設定し、ffmpeg が検索しようとしている場所を確認できます。

于 2011-05-19T17:25:31.677 に答える