国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

解析WPF實現音頻文件循環順序播放的解決方法

來源:懂視網 責編:小采 時間:2020-11-27 22:41:03
文檔

解析WPF實現音頻文件循環順序播放的解決方法

解析WPF實現音頻文件循環順序播放的解決方法:要做基于WPF的音頻文件循環順序播放首先要了解WPF下有哪些類是用于控制音頻的. WPF下主要有兩個音頻控制的類,這里做下比較: 1.SoundPlayer 2.MediaPlayer 派生MediaElement一.SoundPlayer類 1.基于.NET FRAMEWORK 2.0; 2.可播
推薦度:
導讀解析WPF實現音頻文件循環順序播放的解決方法:要做基于WPF的音頻文件循環順序播放首先要了解WPF下有哪些類是用于控制音頻的. WPF下主要有兩個音頻控制的類,這里做下比較: 1.SoundPlayer 2.MediaPlayer 派生MediaElement一.SoundPlayer類 1.基于.NET FRAMEWORK 2.0; 2.可播

要做基于WPF的音頻文件循環順序播放首先要了解WPF下有哪些類是用于控制音頻的. 
WPF下主要有兩個音頻控制的類,這里做下比較:
    1.SoundPlayer  
    2.MediaPlayer
     派生MediaElement

一.SoundPlayer類  
    1.基于.NET FRAMEWORK 2.0;
    2.可播放WAV音頻文件; 
    3.只能播放一個文件,同時播放多個文件會后一個文件的播放操作會終止前一個播放的文件;
    4.不能對音量進行控制;
二.MediaPlayer類
    1.基于WPF; 
    2.支持多種音頻文件;
    3.可以同時播放多個聲音;
    4.可以調整音量對音頻進行控制;
    5.支持設置靜音和左右揚聲器;
    6.可以控制音頻播放速度和獲取播放進度和控制進度;     

MediaElement類同MediaPlayer的功能類似,作為WPF頁面可用的標簽是MediaPlayer的衍生; 
WPF下音頻文件循環順序播放的開發思路:
首先新建一個類繼承MediaElement;
這個類包含播放邏輯功能:
    1.讀取指定文件夾內的所有音頻文件;
    2.將讀取的文件路徑放入列表;
    3.順序讀取列表中的文件名;
    4.播放音頻文件;
    5.播放完畢讀取下一個文件名直至列表結尾;
    6.播放音頻文件至列表結尾則轉制列表頭繼續播放;
在XAML界面加載這個類;
Window Load事件里執行這個類的播放列表;

下面貼出了WPF下音頻文件循環順序播放的代碼:
代碼如下:
WPF界面代碼
 <Window x:Class="MediaApplication.MainWindow"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:md="clr-namespace:MediaApplication"
         Title="MainWindow" Height="350" Width="525" Loaded="Window_Loaded">
     <StackPanel>
         <md:MediaManager x:Name="media"></md:MediaManager>
     </StackPanel>
  </Window>

代碼如下:
WPF界面CS代碼
 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Windows;
 using System.Windows.Controls;
 using System.Windows.Data;
 using System.Windows.Documents;
 using System.Windows.Input;
 using System.Windows.Media;
 using System.Windows.Media.Imaging;
 using System.Windows.Navigation;
 using System.IO;
 using System.Collections.ObjectModel;
 using System.Configuration;

 namespace MediaApplication {
     /// <summary>
     /// Interaction logic for MainWindow.xaml
     /// </summary>
     public partial class MainWindow : Window {
         public MainWindow() {
             InitializeComponent();
         }

         private void Window_Loaded(object sender, RoutedEventArgs e) {
             this.media.PlayList();
         }

 
     }
 }

代碼如下:
MediaManager類
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Controls;
using System.IO;
using System.Configuration;
using System.Windows;
using System.Collections.ObjectModel;
namespace MediaApplication {
    public class MediaManager : MediaElement {
        public MediaManager() {
            try {
                GetAllDirList(new DirectoryInfo(ConfigurationManager.AppSettings["dir"].ToString()));
            } catch {
            }
        }
        public void PlayList() {
            if(files.Count > 0)
            {
                this.UnloadedBehavior = MediaState.Manual;
                this.LoadedBehavior = MediaState.Manual;
                this.MediaEnded += new RoutedEventHandler(media_MediaEnded);
                this.Source = new Uri( files[index], UriKind.RelativeOrAbsolute);
                this.Play();
            } 
        }
        private void GetAllDirList(DirectoryInfo directory) {           
            foreach(string filter in filters)
            {
                foreach (FileInfo file in directory.GetFiles(filter)) {
                    files.Add(file.FullName);
                }
            }
            foreach (DirectoryInfo subDirectory in directory.GetDirectories()) {
                GetAllDirList(subDirectory);
            }
        }
        private void media_MediaEnded(object sender, RoutedEventArgs e) {
            this.Source = new Uri( files[++index % files.Count], UriKind.RelativeOrAbsolute);
            this.Play();
        }
        private ObservableCollection<string> files = new ObservableCollection<string>();
        private int index = 0;
        private string[] filters = new string[] { "*.wav", "*.mp3" };
    }
}

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

解析WPF實現音頻文件循環順序播放的解決方法

解析WPF實現音頻文件循環順序播放的解決方法:要做基于WPF的音頻文件循環順序播放首先要了解WPF下有哪些類是用于控制音頻的. WPF下主要有兩個音頻控制的類,這里做下比較: 1.SoundPlayer 2.MediaPlayer 派生MediaElement一.SoundPlayer類 1.基于.NET FRAMEWORK 2.0; 2.可播
推薦度:
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 欧美一区二区三区日韩免费播 | 自拍偷拍 欧美日韩 | 欧美自拍亚洲 | 亚洲欧美日韩综合网导航 | 人人添人人澡人人澡人人人爽 | 亚洲精品在线免费看 | 欧美午夜一区二区福利视频 | 国产成人精品免费视频大全五级 | 2020精品极品国产色在线观看 | 精品欧美日韩一区二区三区 | 国产成人91一区二区三区 | 日本五十路视频 | 欧美日韩亚洲高清不卡一区二区三区 | 欧美成人一区二区三区 | 九一毛片| 国产欧美一区二区三区精品 | 国产特级全黄一级毛片不卡 | 国产男女无遮挡猛进猛出 | 国产精品免费观看视频播放 | 亚洲日韩图片专区第1页 | 日韩v欧美 | 亚洲欧美日韩精品专区卡通 | 天堂一区二区三区精品 | 国产区免费 | 日韩精品成人免费观看 | 亚洲国产成人精品一区91 | 国产免费一级片 | 欧美一页| 国产码欧美日韩高清综合一区 | 一边摸一边叫床一边爽 | 国产成人久久精品区一区二区 | 在线免费观看一区二区三区 | 国产精品久久毛片蜜月 | 波多野结衣乳巨码无在线观看 | 日韩一区二区视频 | 欧美特黄一区二区三区 | 日韩第一页在线 | 国产亚洲综合成人91精品 | 国产日韩欧美视频在线观看 | 一本综合久久国产二区 | 亚洲欧美日韩在线观看二区 |