2014-10-27 80 views
1

我想在c#.NET中爲ffmpeg編寫自定義包裝器。我下載了多個版本,但似乎我將不得不使用.exe文件。在C#.NET項目中使用(ffmpeg)可執行文件

ffmpeg.exe 
ffplay.exe 
ffprobe.exe 

不過,我無法通過將添加引用來引用這些可執行文件 - >瀏覽等。

那麼我想現在要做的僅僅是將其添加爲一個文件。然後像使用命令行一樣在它們上運行命令。

這可能嗎?或者,也許有人有一個更好的主意?

非常感謝您的幫助。

+0

嘿,是的,我知道ffmpeg-csharp包裝。但我想寫我自己的自定義包裝。 – Gonzalioz 2014-10-27 08:57:01

+5

您應該下載構建的Dev版本,然後在C++/CLI中創建低級包裝器,這將爲您用C#編寫的代碼提供託管API。 – galenus 2014-10-27 09:31:21

回答

3

好吧,我想通了。對於任何想要爲ffmpeg編寫.NET包裝的人。下載「共享」版本。將'bin'文件夾的內容(包含可執行文件)添加到您的項目中。只需右鍵點擊您的解決方案 - >添加新項目...

然後,您可以使用如下的可執行文件。

你可以在json或xml中有ffmpeg,ffprobe等等輸出。所以你可以解析輸出並做任何事情。

ProcessStartInfo startInfo = new ProcessStartInfo(); 

     startInfo.CreateNoWindow = false; 
     startInfo.UseShellExecute = false; 
     startInfo.FileName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ffmpeg\\ffmpeg.exe"); 
     startInfo.Arguments = "-f dshow -i video=\"Front Camera\""; 
     startInfo.RedirectStandardOutput = true; 
     //startInfo.RedirectStandardError = true; 

     Console.WriteLine(string.Format(
      "Executing \"{0}\" with arguments \"{1}\".\r\n", 
      startInfo.FileName, 
      startInfo.Arguments)); 

     try 
     { 
      using (Process process = Process.Start(startInfo)) 
     { 
      while (!process.StandardOutput.EndOfStream) 
      { 
       string line = process.StandardOutput.ReadLine(); 
       Console.WriteLine(line); 
      } 

      process.WaitForExit(); 
     } 
     } 
     catch (Exception ex) 
     { 
      Console.WriteLine(ex.Message); 
     } 

     Console.ReadKey(); 

快樂編碼。

+1

這不正是你所說的包裝,這是一個啓動ffmpeg可執行文件的程序。請參閱@ galenus對該問題的評論。 – Rotem 2014-10-27 14:15:09

+0

嗯,還沒有。它將作爲一個C#.NET封裝FFMPEG的權利?實現多個功能等。我認爲你可以在這裏應用這個術語。 – Gonzalioz 2014-10-27 14:26:24

+0

如何配置它輸出http:// localhos:9797例如? – 2016-09-05 20:05:18

相關問題