a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 網管 > 服務器 > 正文

silverlight自定義控件之多媒體視頻播放器

2020-05-27 13:10:49
字體:
來源:轉載
供稿:網友

 Silverlight本身提供了多媒體播放控件,但并沒有封裝好,可以直接使用的控件。在網上搜索了一些,都不是很適用,有些過于復雜要引用一大堆dll,感覺很臃腫,有些樣式風格不適合。silverlight只提供了MediaElement,并不像以前html那樣現成的直接使用那么方便,所以就自己封裝一下,做一個滿足基本功能的簡單播放器。通過本篇隨筆認識一下Blend強大的修改控件樣式魔力,和實現一個簡單的播放器。

功能點:

1、播放、暫停及顯示當前播放狀態

2、實時顯示已播放時間

3、播放進度條,并能拖動播放位置

4、全屏按鈕及雙擊播放畫面入或退出全屏

5、調整音量

6、播放列表

播放器的基本功能點就是需求,將需求分解,羅列出實現難點和功能要點,評估工作量及風險。

一、認識MediaElement控件

 

public MediaElementState CurrentState { get; }  MediaElement 的當前狀態。狀態可以為下列值之一(如在 MediaElementState 枚舉中所定義):Buffering、Closed、Opening、Paused、Playing 或 Stopped。默認值為 Closed。public bool AutoPlay { get; set; }  如果自動播放,則為 true;否則為 false。默認值為 true。如果設置 Source 屬性前將此屬性設置為 true,則設置Source屬性時自動播放視頻。public Uri Source { get; set; }  獲取或設置 MediaElement 上的媒體來源。即指定一個視頻的統一資源標識符 (URI) 字符串。public double Volume { get; set; }  獲取或設置媒體的音量大小。

//當媒體流已被驗證和打開且已讀取文件頭時發生。在該自定義控件中主要通過該事件獲取視頻的總時長。

 

public event RoutedEventHandler MediaOpened

void mediaElement_MediaOpened(object sender, RoutedEventArgs e)

{

this.playTools.TotaPlayTime = (int)this.mediaElement.NaturalDuration.TimeSpan.TotalSeconds;

}

//當 MediaElement 不再播放音頻或視頻時發生。

在該自定義控件中主要通過該事件設置MediaElement為Stop,并判斷是否循環播放而進行繼續循環播放。

public event RoutedEventHandler MediaEnded

void mediaElement_MediaEnded(object sender, RoutedEventArgs e)

{

this.mediaElement.Stop();

if (this.IsReplay)

{

this.mediaElement.Play();

}

}

//當 CurrentState 屬性的值更改時發生。在該自定義控件中主要通過該事件顯示當前視頻播放狀態信息。

public event RoutedEventHandler CurrentStateChanged

if (this.mediaElement.CurrentState == MediaElementState.Buffering)

{

this.playTools.CurrentMessage = this.mediaElement.CurrentState + "

" + Math.Round(this.mediaElement.BufferingProgress * 100, 0).ToString() + "%";

}

//在存在與媒體 Source 關聯的錯誤時發生。MediaFailed 事件可在下列條件下發生:

1、未找到文件。

2、無效的(無法識別的或不支持的)媒體格式。

3、播放期間未知的媒體錯誤。

//在該自定義控件中主要通過該事件顯示錯誤信息。

public event EventHandler MediaFailed

void mediaElement_MediaFailed(object sender, ExceptionRoutedEventArgs e)

{

this.playTools.CurrentMessage = e.ErrorException.Message;

}

//該事件是播放時發生,用于獲取當前已播放時間

CompositionTarget.Rendering += new EventHandler(CompositionTarget_Rendering);

void CompositionTarget_Rendering(object sender, EventArgs e)

{

int currentTime = (int)this.mediaElement.Position.TotalSeconds;

this.playTools.CurrentPlayTime = currentTime;

}

 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 一区二区三区视频免费观看 | 五月激情综合 | 蜜臀va亚洲va欧美va天堂 | 国产一区二区三区久久久 | 国产欧美精品一区二区色综合朱莉 | 国产羞羞视频在线观看 | 亚洲成av人乱码色午夜 | 久久精品国产亚洲一区二区三区 | 91伊人| 一区二区久久 | 九九热精品免费视频 | 亚洲精品久久久久久久久久久 | 久色视频在线 | 午夜免费观看网站 | 欧美成人综合 | 欧美影| 超碰中文字幕 | 成人精品 | 国产欧美在线观看 | 超碰人人搞 | 一区二区三区高清不卡 | 国产午夜精品久久 | 日韩av一区三区 | 亚洲视频区 | 日韩不卡一区二区 | 国产亚洲精品久久久优势 | 男女羞羞视频网站 | 免费国产羞羞网站视频 | 久久久久久av | 人人干网站 | av网站免费 | 97人人干 | 久久一区二区三区四区五区 | 九九久久精品 | 日韩综合网 | 在线欧美一区 | 一级视频在线免费观看 | www.9色| 99久久国产 | 国产精品国产成人国产三级 | 日韩精品免费在线观看 |