[Silverlight]Media秀 ----- Day11
今天我們來介紹Silverlight的Media控制項。透過這控制項可以讓我們播放美女寫真影片、家庭娛樂片、宅宅卡通片、音樂mp3..等。
這個控制項支援的格式有下列幾種:
Media格式:
WMV1: Windows Media Video 7
WMV2: Windows Media Video 8
WMV3: Windows Media Video 9
WMVA: Windows Media Video Advanced Profile (non-VC-1)
WMVC1: Windows Media Video Advanced Profile (VC-1)
ASX: Advanced Stream Redirector files; 副檔名可以是 .asx, .wax, .wvx, .wmx, or .wpl
支援的Audio格式:
WMA 7: Windows Media Audio 7
WMA 8: Windows Media Audio 8
WMA 9: Windows Media Audio 9
MP3: ISO/MPEG Layer-3; 8 to 320Kbps and variable bit rate; 8 to 48KHz sampling frequencies
要如何使用它呢?
1.
首先,我們可以新增一個專案 - SL_D11,然後在專案的Page.Xaml中輸入下列Xaml程式碼:
在這程式碼裡,我們新增了一個MediaElement,然後指定它的寬跟高,以及來源 -
Source=http://silverlight.services.live.com/17942/silverlight/video.wmv
2.
按下F5執行。
我們可以看到執行結果如上圖,但是播放一次就沒了,如果要循環播放要怎麼處理?
在WPF,可以使用StoryBoard的MediaTimeLine物件的RepeatBehavior屬性,將它設定成「Forever」。
但是在Silverlight裡,要怎麼處理這個問題?肯定的是,這裡沒有這個屬性可以讓我們設定值。
在MediaElement物件中,有一個播放完畢會觸發的事件 - 「Media_Ended事件」,如果我們在這個事件內被觸發時,
在其事件中在寫入播放影片的程式碼,這樣是不是就能循環播放了? OK...Let's try it!
3.
在MediaEmenet的Media_Ended事件中,加入下列程式碼:
private void Media1_MediaEnded(object sender, RoutedEventArgs e)
{
Media1.Play();
}
4.
按下F5執行,在影片播放完畢後,竟然沒有在播放一次,這,其中一定是有什麼誤會....Orz
檢查了一下,發現可能是忘記告訴MediaElement事件要從哪裡開始播放,所以我們加入下列程式碼:
5.
按下F5執行。這次總算可以順利的執行循環播放了。
6.
接下來,我們來實做一些基本功能 - 播放、暫停、停止以及全螢幕等功能。
設定Xaml程式碼為:
其中設定四個按鈕,分別處理播放、暫停、停止以及全螢幕這些功能。(這裡我們將MediaElement的AutoPlay屬性設定為False。
然後在對應按鈕的Click事件中,輸入程式碼:
7.
按下F5執行。
8.
接下來,我們來動態指定檔案來源。
在畫面中放入兩個TextBox,然後設定其ID:
程式碼:
按下F5執行,但是竟然沒作用。李組長眉頭一皺,認為案情並不單純....
經過多次嘗試,在PLAY的Click事件程式碼的開頭加入
Media1.AutoPlay = true;
就可以順利動態載入Video檔案了。
線上Demo (不提供連結時,會播放預設的mp3)。
祝大家新年快樂
試煉大會 我們下次見~~
如果您有微軟技術開發的問題,可以到MSDN Forum發問。
如果您有微軟IT管理的問題,可以到TechNet Forum發問喔。