0
我試圖在Mac和Windows(使用Unity)上運行FFMPEG以將視頻轉換爲.ogv視頻。我的代碼如下:Mac上的C#啓動進程 - FFMPEG - 退出代碼1
string command = "ffmpeg -i '" + filepath + "' -codec:v libtheora -qscale:v 10 -codec:a libvorbis -qscale:a 10 -y '"+workingDir+"/ogv_Video/"+System.IO.Path.GetFileNameWithoutExtension(filepath)+".ogv'";
UnityEngine.Debug.Log("Command: "+command);
try{
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo (workingDir+"/..", command);
startInfo.CreateNoWindow = true;
startInfo.RedirectStandardOutput = true;
startInfo.RedirectStandardError = true;
startInfo.UseShellExecute = false;
startInfo.FileName =workingDir+"/ffmpeg";
//Process.Start (startInfo);
Process p = Process.Start(startInfo);
p.EnableRaisingEvents = true;
string strOutput = p.StandardOutput.ReadToEnd();
UnityEngine.Debug.Log ("Running..."+strOutput);
p.WaitForExit();
UnityEngine.Debug.Log ("Got here. "+strOutput);
int exitCode = p.ExitCode;
UnityEngine.Debug.Log ("Process exit code = "+exitCode);
}
catch(Exception e) {
UnityEngine.Debug.Log ("An error occurred");
UnityEngine.Debug.Log ("Error: "+e);
}
該命令執行並沒有通過任何異常。但是,它會立即終止並打印退出代碼1這是「Catchall for general errors」 - 這看起來不太有用!
我的代碼有什麼問題嗎?
您會注意到我的代碼完整地輸出了該命令。如果我複製該命令並將其粘貼到終端中,則它運行得非常好。
這可能會幫助http://answers.unity3d.com/questions/161444/how-to-use-processstart-with-arguments-on-osx-in-a.html – Takarii
@Takarii謝謝你的評論 - 不幸的是,我已經在使用'startInfo.FileName = workingDir +「/ ffmpeg」;'這行來做這個工作,我在工程的工作目錄中存儲了一份FFMPEG 。我也嘗試過在沒有路徑名的情況下引用ffmpeg,但是這並不起作用,或者我看到 –
。我不是很瞭解團結,但c#是我的領域。我知道如果你使用'system.diagnostics.process.start()'方法可以在osx中使用,但是你需要使用程序或文件的絕對路徑 – Takarii