FFmpeg是一套可以用來記錄、轉換數字音頻、視頻,並能將其轉化爲流的開源計算機程序。採用LGPL或GPL許可證。它提供了錄製、轉換以及流化音視頻的完整解決方案。它包含了非常先進的音頻/視頻編解碼庫libavcodec,爲了保證高可移植性和編解碼質量,libavcodec裏很多code都是從頭開發的。
在C#程序中,可以通過開啓新進程運行ffmpeg.exe,通過代碼寫入指令並執行,實現對音視頻文件的操作。ffmpeg.exe可以通過下載官網的源碼並編譯後得到,實際使用時,可能還會用到一些dll文件,將這些文件拷貝到程序的運行目錄下即可使用。
下面是用於在C#代碼中執行FFmpeg指令的函數,pc爲進程對象,command爲執行的指令:
private void ExecuteCommand(Process pc, stringcommand,
out string output, out string error)
{
try
{
//創建進程
pc.StartInfo.FileName = command;
pc.StartInfo.UseShellExecute = false;
pc.StartInfo.RedirectStandardOutput = true;
pc.StartInfo.RedirectStandardError = true;
pc.StartInfo.CreateNoWindow = true;
//啓動進程
pc.Start();
//準備讀出輸出流及錯誤流
stringoutputData = string.Empty;
stringerrorData = string.Empty;
pc.BeginOutputReadLine();
pc.BeginErrorReadLine();
pc.OutputDataReceived += (ss,ee) =>
{
outputData += ee.Data;
};
pc.ErrorDataReceived += (ss,ee) =>
{
errorData += ee.Data;
};
//等待執行結束後退出
pc.WaitForExit();
//關閉進程
pc.Close();
//返回結果
output = outputData;
error = errorData;
}
catch(Exception)
{
output = null;
error = null;
}
}
資料
FFmpeg官網: http://www.ffmpeg.org
FFmpeg doc : http://www.ffmpeg.org/documentation.html
FFmpeg wiki : https://trac.ffmpeg.org/wiki