開發視頻編輯應用時,常需實現視頻剪輯、合成、轉碼等功能。FFmpeg 作為強大的多媒體處理工具,是 C# 專案的首選方案。
在 C# 中調用 FFmpeg 最直接的方法是使用 Process.Start 啟動外部程序:
var process = new Process
{
StartInfo = new ProcessStartInfo
{
FileName = "ffmpeg.exe",
Arguments = "-i input1.mp4 -i input2.mp4 -filter_complex \"[0:v][1:v]concat=n=2:v=1:a=0[out]\" -map \"[out]\" output.mp4",
UseShellExecute = false,
RedirectStandardOutput = true,
RedirectStandardError = true,
CreateNoWindow = true
}
};
process.Start();
string output = process.StandardOutput.ReadToEnd();
string error = process.StandardError.ReadToEnd();
process.WaitForExit();
| 方案 | 優點 | 缺點 | 適用場景 |
|---|---|---|---|
| Process.Start 呼叫 ffmpeg.exe | 簡單、支援所有 FFmpeg 參數、無相依性 | 需部署 ffmpeg.exe、進程啟動開銷大、難以即時監控進度 | 簡單剪輯、合成、轉碼任務 |
| FFmpeg.AutoGen (P/Invoke) | 效能高、可即時存取幀資料、無外部進程 | 簽名複雜、需處理非受控記憶體、學習曲線陡峭 | 高效能、即時處理、自定義濾鏡 |
| MediaToolkit / Xabe.FFmpeg 等封裝庫 | API 友善、支援進度回報、異步操作 | 功能可能受封裝限制、額外依賴 | 快速開發、標準化操作 |
Task.Run 避免阻塞 UI 執行緒time= 欄位計算進度using 確保 Process 物件正確釋放process.StartInfo.Verb = "runas" 避免權限不足善用 FFmpeg 強大功能,配合 C# 良好的程式結構,即可構建專業級視頻編輯應用。