Silverlight for Windows Phone 7開發系列(3):多媒體開發

來源:互聯網
上載者:User
前言

在上篇文章講述了如何建立一個Silverlight for Windows Phone的應用程式,這篇文章講述如何在Windows Phone上進行多媒體應用的開發。同時介紹當前Windows Phone Beta版本所支援媒體檔案格式,以及講述Windows Phone多媒體開發的一些限制性和注意點。

 

MediaElement控制項的使用

使用Silverlight開發一般的多媒體應用,使用MediaElement控制項就足夠了,MediaElement控制項支援音頻和視頻檔案,也支援本地和網路檔案,支援多種多媒體檔案的解碼器(codec),大大簡化了開發多媒體應用的難度。

新增MediaElement控制項

下面接著上篇的例子繼續講述如何使用MediaElement控制項

需 要新增MediaElement控制項,可以有三種方法:方法一把Toolbox上的MediaElement控制項拖到設計頁面上;方法二在XAML檔案裡 面,點擊需要存放MediaElement控制項的位置,然後在Toolbox雙擊MediaElement;方法三直接在XAML檔案手工編寫代碼新增 MediaElement控制項。三種方法都是等效的。

在例子中,我同時新增了三個按鈕,用於轉換換電台和播放,在本系列的後續文章會介紹如何使用Expression Blend進行按鈕的美化,現在先使用文字來描述。效果如:

播放網路電台檔案

在 XAML中新增了MediaElement控制項以後,指定檔案源就可以進行播放。在設計檢視點擊“播放”按鈕,或者在XAML直接編寫事件處理函數,如下 圖編寫完Click事件以後,可以點擊Tab按鈕新增事件處理函數(自動產生處理函數的代碼)。Visual Stadio 2010為我們編寫代碼帶來很多方便的功能。。

 

private void buttonPlay_Click(object sender, RoutedEventArgs e) {     mediaElementRadio.Source = new Uri("http://icecast.arn.com.au/1011.mp3", UriKind.Absolute);     mediaElementRadio.Play(); }

使用MediaElement控制項播放網路電台,方法非常的簡單,只需要指定控制項的Source屬性就可以了。Source是一個Uri的對象,可以是網路檔案的地址,也可以是本地檔案的檔案。指定Source以後調用Play()函數就會啟動網路電台的播放過程。

 

支援的檔案格式

根據MSDN的文檔 Supported Media Codecs, Windows Phone 7目前的版本支援以下媒體檔案格式:WAV, MP3,WMA Standard v9, AAC-LC (Low Complexity)等等,詳細可以參考上述文檔。模擬器支援的解碼器(codecs)更少,只是支援WAV, MP3, WMA Standard v9和WMV (VC-1)。 但是經過我實驗,網路電台只是支援mp3格式的,這可能是模擬器的問題,我想在真實裝置會修正這個問題。如果遇到模擬器不支援的檔案格式,會觸發 MediaFailed事件,MediaFailed事件的處理在文章後面會詳細講述。

注意:媒體檔案必須帶有副檔名,而且該副檔名必須與檔案編碼格式一樣,例如檔案是mp3格式,副檔名必須為*.mp3,否則不能播放。

我認為Windows Phone支援的解碼器會越來越多,所以不用擔心。

 MediaElement控制項在Silverlight for Windows的局限性

在開發和移植Silverlight程式到Windows Phone的時候需要注意以下的一些局限性。

1.不支援VCR控制項,如果在Windows Mobile使用Windows Media Player控制項進行開發,可以顯示播放,暫停,停止和進度條(play, pause, stop, seek)等控制項,但是Windows Phone不直接支援這些控制項。

2.不支援多個MediaElement控制項,如果其中一個MediaElement開始播放,會自動停止其他MediaElement控制項現正播放的視頻或者音頻。

3.不支援Attributes,AttributesProperty, MarkerReached, Markers和RenderedFramesPerSecond等屬性。

4. SetSource(Stream)函數的入口參數只是支援IsolatedStorageFileStream,如果要使用SetSource(Stream)函數,必須把流(stream)拷貝到隔離儲存區 (Isolated Storage)(isolated storage)上。

5.不能給CanPause和CanSeek屬性賦值。

6.AudioStreamCount和Balance屬性永遠返回1。

7.AudioStreamIndex永遠返回0。
具體可以參考Media for Windows Phone。

 

 由於發稿到《程式員》雜誌,暫時不能發全文,全文見 Silverlight for Windows Phone 7開發系列(3):多媒體開發

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.