2012-04-17 72 views
0

我想構建的應用程序需要能夠使用C#從網絡攝像頭捕捉視頻。 捕獲的視頻應該使用一些編解碼器進行壓縮(沒有什麼特別的,可以節省空間的任何東西)並在捕獲時寫入文件。捕獲的實時預覽是沒有必要的。如何捕捉視頻並使用C#播放?

第一個問題是哪個API適合這個,你會推薦(我見過DirectShow,Windows Media Foundation包裝等等......不知道哪一個最適合託管環境和C#)?

我還需要WPF中的視頻播放器,它將播放捕獲的視頻。該播放器必須能夠從任意位置播放捕捉的視頻,暫停和開始/停止視頻。 把它放在一起 - 視頻是從網絡攝像頭捕獲的背景,同時播放器播放視頻被捕獲,但它可以暫停,重新纏繞,停止 - 像現代DVR。

第二個問題 - 是否有可能使用WPF MediaElement創建此類播放器? (混亂有關文件是在同一時間從捕獲填充,起到播放器)

+1

你需要讓你的問題有很多更具體的 - 打破它成塊,從而處理你在嘗試某些事情後遇到的具體問題。 – Widor 2012-04-17 14:17:03

+0

我需要關於哪個API(技術)用於捕獲的建議,這不是關於推薦問題! – Dusan 2012-04-17 14:23:18

+0

在這種情況下,恐怕不適合使用StackOverflow。 – Widor 2012-04-17 14:24:38

回答

0

我用VlcDotNet。它非常靈活且使用簡單。它也有一個非常活躍的用戶羣。

我用它來顯示實時視頻流以及記錄到文件。

0

我已經使用AForge(http://www.aforgenet.com/)庫集來逐幀接受視頻。我用(private void videoSourcePlayer1_NewFrame(object sender,ref Bitmap image))函數來做到這一點。

+0

當他們標記WPF我假設他們想在WPF中使用它,並且aforge似乎只是winforms compatable – MikeT 2016-03-07 16:59:05

0

我可以推薦WPF ffmediaelement。它建於ffmpeg。那麼ffmpeg是什麼,也可以是ffmediaelement。可以從網絡攝像頭和採集卡捕捉視頻。不像DirectShow,它非常簡單。 以下是如何建立一個視頻源:

Media.Source = new Uri("device://dshow/?video=Osprey-460e Video Device 1C"); 

...併爲其參數MediaOpening事件:

Media.OnMediaOpening(s, e) => 
{ 
    e.Options.Input["framerate"] = "25"; 
    e.Options.Input["video_size"] = "768x576"; 
    e.Options.Input["pixel_format"] = "yuyv422"; 
};