在WPF里用MediaElement控件,實現(xiàn)一個循環(huán)播放單一視頻的程序,同時可以控制視頻的播放、暫停、停止。
為大寧等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及大寧網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站建設(shè)、網(wǎng)站制作、大寧網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
一種方式,使用MediaElement.MediaEnded事件,在視頻播放結(jié)束后,自動重新播放;
另一種方式,使用WPF定時器,在定時器事件里寫入視頻播放代碼。
后者優(yōu)點是可以控制循環(huán)時長,不必等到視頻播放結(jié)束就可以開始下一次播放,比如:同時啟動多個播放程序,使多個時長不同的視頻同時播放,無限循環(huán),如果采用第一種方式,累計多次自動播放后,視頻內(nèi)容就無法同步。
第一種方式:
XAML:
C#: // 窗口加載事件 private void Window_Loaded(object sender, RoutedEventArgs e) { // 綁定視頻文件 mediaElement.Source = new Uri("D:/bird.mp4"); // 交互式控制 mediaElement.LoadedBehavior = MediaState.Manual; // 添加元素加載完成事件 -- 自動開始播放 mediaElement.Loaded += new RoutedEventHandler(media_Loaded); // 添加媒體播放結(jié)束事件 -- 重新播放 mediaElement.MediaEnded += new RoutedEventHandler(media_MediaEnded); // 添加元素卸載完成事件 -- 停止播放 mediaElement.Unloaded += new RoutedEventHandler(media_Unloaded); } /* 元素事件 */ private void media_Loaded(object sender, RoutedEventArgs e) { (sender as MediaElement).Play(); } private void media_MediaEnded(object sender, RoutedEventArgs e) { // MediaElement需要先停止播放才能再開始播放, // 否則會停在最后一幀不動 (sender as MediaElement).Stop(); (sender as MediaElement).Play(); } private void media_Unloaded(object sender, RoutedEventArgs e) { (sender as MediaElement).Stop(); } /* 播放控制按鈕的點擊事件 */ private void btnPlay_Click(object sender, RoutedEventArgs e) { mediaElement.Play(); } private void btnPause_Click(object sender, RoutedEventArgs e) { mediaElement.Pause(); } private void btnStop_Click(object sender, RoutedEventArgs e) { mediaElement.Stop(); }
第二種方式:
注:使用DispatcherTimer,需要添加System.Windows.Threading命名空間。
XAML:
C#: DispatcherTimer timer = new DispatcherTimer(); // 定時器timer int durTime = 5; // 視頻播放時長,也就是循環(huán)周期 // 窗口加載事件 private void Window_Loaded(object sender, RoutedEventArgs e) { mediaElement.Source = new Uri("D:/bird.mp4"); // 綁定視頻文件 mediaElement.Play(); // 設(shè)置啟動播放 timer.Interval = new TimeSpan(0, 0, 0, durTime); // 設(shè)置定時器重復(fù)周期 timer.Tick += new EventHandler(timerEvent); // 設(shè)置定時器事件 timer.Start(); // 啟動定時器 } // 定時器事件 public void timerEvent(object sender, EventArgs e) { // MediaElement需要先停止播放才能再開始播放, // 否則會停在最后一幀不動 mediaElement.Stop(); mediaElement.Play(); } /* 播放控制按鈕的點擊事件 */ private void btnPlay_Click(object sender, RoutedEventArgs e) { mediaElement.Play(); // 開始播放 timer.Start(); // 重新啟動定時器 } private void btnPause_Click(object sender, RoutedEventArgs e) { mediaElement.Pause(); // 暫停當前播放 timer.Stop(); // 停止定時器 } private void btnStop_Click(object sender, RoutedEventArgs e) { mediaElement.Stop(); // 停止當前播放 timer.Stop(); // 停止定時器 }
總結(jié)
以上所述是小編給大家介紹的C# 使用WPF 用MediaElement控件實現(xiàn)視頻循環(huán)播放,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對創(chuàng)新互聯(lián)網(wǎng)站的支持!