[Silverlight]Media秀 ----- Day11

[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執行。

image

我們可以看到執行結果如上圖,但是播放一次就沒了,如果要循環播放要怎麼處理?

 

在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發問喔。