2009年12月1日 星期二

Silverlight 4 中的WebCam支援

在剛推出的Silverlight 4 beta版中,終於支援了大家期待已久的WebCam功能,底下是測試頁面:
[測試]
但請注意,測試前需先安裝SL4 Developer runtimes: Windows然後才能執行,Webcam是建立網路服務應用程時相當需要的功能。

整個程式的設計方式並不複雜,主要的程式碼片段如下:
        private void Button1_Click(object sender, RoutedEventArgs e)
{
//判斷目前啟動狀態
if (!CaptureDeviceConfiguration.AllowedDeviceAccess)
{
//透過RequestDeviceAccess要求使用者允許使用WebCam(這時畫面上會跳出Yes/No詢問視窗)
if (!CaptureDeviceConfiguration.RequestDeviceAccess())
{
MessageBox.Show("can't access device.");
return;
}
}

//建立CaptureSource
CaptureSource CaptureSource = new CaptureSource();
//建立VideoBrush
VideoBrush vb = new VideoBrush();
Grid1.Background = vb;
//將VideoBrush的Source設為CaptureSource
vb.SetSource(CaptureSource);
//start web cam
CaptureSource.Start();
Button1.Visibility = System.Windows.Visibility.Collapsed;
}

你會發現我們可以透過CaptureSource這個物件來抓取WebCam資料(其實除了WebCam還可以抓取聲音),然後把CaptureSource設為VideoBrush,並將CaptureSource設為Grid的Bbackground即可。

14 則留言:

bgm 提到...

請問一下那wpf是否同樣可以讀取webcam呢?

David 提到...

WPF有完整的.NET Framework支援,可以做任何事情 ^_^

匿名 提到...

Silverlight4中的webcam影像可以疊一層overlay嗎?

匿名 提到...

Davaid老師您好

我想請問SilverLight有沒有辦法做到類似Google Map街景服務360度觀看

David 提到...

sure, 凡事都可行, 但不都很容易... :)

匿名 提到...

感謝董老師回答,希望董老師的書繼續保持著為生手著想的寫法,小弟我去看
"奚"、"章"二位老師的寫法,不能說不好,只是跳過太多步驟,生手往往就卡在這種"簡單到應該不用寫吧"的地方

Vinix 提到...

請問Silverlight 4有支援將擷取的影片儲存至client端嗎?

匿名 提到...

想請教 如何把Silverlight 4 webcam跟asp網頁做結合呢???

David 提到...

To Vinix,

請參考我在VS2010上市發表會的範例,有展示這個部分。
http://codestorage.ria101.com.tw/CodeStorageRIAUser.html?BookUid=5

to 匿名,
ASP.NET和ASP其實完全一樣的,只需要將Silverlight透過標記加入你的ASP頁面即可。

DUCK 提到...

謝謝 David回應
想請教說 現在如果我想寫一個
像測試版的webcam 一樣透過一個按钮來開啟
也是照上面的程式碼就可以嗎?
現在開啟測試網頁 就說要用正式版?
想請問正式版是在哪邊載呢?

DUCK 提到...

發現正式版不能在這範例上面使用
移除後安裝後就ok了
請教David
上面的程式碼
要配合什麼元件才能使用呢??

DUCK 提到...

David老師
請教一下..如果是要把視訊鏡頭是在sever端顯示 像是遠端監視器那樣
要修改哪部份呢?
因為現在測試過後 按下都是自己電腦本身的鏡頭 不會在遠端那邊!
不清楚是要改什麼指令才能達到我要的成果...

David 提到...

to Duck,

Silverligt是Run在用戶端瀏覽器上的,所以當然是抓取到用戶端的WebCam,如果你要抓取伺服器端的webCam, 再把資料傳給用戶端的Silverlight App, 那應該在伺服器端寫一個抓取WebCam的WinForm App(或Services),然後透過Web/WCF Services建立傳送影像的Method, 再由用戶端的SL應用程式呼叫即可。

DUCK 提到...

謝 David老師回應
但小弟對寫程式了解的不多...不知道是否有相關測試的範例可以參考??
另外請教一個問題!asp頁面在執行電腦裡的exe檔案時,有方法可以像框架固定位置嗎??
因為呼叫出來之後 都是顯示在螢幕上 可以拉動的...