解析WPF實(shí)現(xiàn)音頻文件循環(huán)順序播放的解決方法_.Net教程
推薦:解決.net framework 4.0環(huán)境下遇到版本不同編譯不通過的方法詳解本篇文章是對(duì).net framework 4.0環(huán)境下遇到版本不同編譯不通過的解決方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
要做基于WPF的音頻文件循環(huán)順序播放首先要了解WPF下有哪些類是用于控制音頻的.
WPF下主要有兩個(gè)音頻控制的類,這里做下比較:
1.SoundPlayer
2.MediaPlayer
派生MediaElement
一.SoundPlayer類
1.基于.NET FRAMEWORK 2.0;
2.可播放WAV音頻文件;
3.只能播放一個(gè)文件,同時(shí)播放多個(gè)文件會(huì)后一個(gè)文件的播放操作會(huì)終止前一個(gè)播放的文件;
4.不能對(duì)音量進(jìn)行控制;
二.MediaPlayer類
1.基于WPF;
2.支持多種音頻文件;
3.可以同時(shí)播放多個(gè)聲音;
4.可以調(diào)整音量對(duì)音頻進(jìn)行控制;
5.支持設(shè)置靜音和左右揚(yáng)聲器;
6.可以控制音頻播放速度和獲取播放進(jìn)度和控制進(jìn)度;
MediaElement類同MediaPlayer的功能類似,作為WPF頁面可用的標(biāo)簽是MediaPlayer的衍生;
WPF下音頻文件循環(huán)順序播放的開發(fā)思路:
首先新建一個(gè)類繼承MediaElement;
這個(gè)類包含播放邏輯功能:
1.讀取指定文件夾內(nèi)的所有音頻文件;
2.將讀取的文件路徑放入列表;
3.順序讀取列表中的文件名;
4.播放音頻文件;
5.播放完畢讀取下一個(gè)文件名直至列表結(jié)尾;
6.播放音頻文件至列表結(jié)尾則轉(zhuǎn)制列表頭繼續(xù)播放;
在XAML界面加載這個(gè)類;
Window Load事件里執(zhí)行這個(gè)類的播放列表;
下面貼出了WPF下音頻文件循環(huán)順序播放的代碼:
WPF界面代碼
<Window x:Class="MediaApplication.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/ 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" };
}
}
分享:將文件上傳、下載(以二進(jìn)制流保存到數(shù)據(jù)庫)實(shí)現(xiàn)代碼將文件以二進(jìn)制流的格式寫入數(shù)據(jù)庫:首先獲得文件路徑,然后將文件以二進(jìn)制讀出保存在一個(gè)二進(jìn)制數(shù)組中具體請(qǐng)祥看本文,希望對(duì)你有所幫助
- asp.net如何得到GRIDVIEW中某行某列值的方法
- .net SMTP發(fā)送Email實(shí)例(可帶附件)
- js實(shí)現(xiàn)廣告漂浮效果的小例子
- asp.net Repeater 數(shù)據(jù)綁定的具體實(shí)現(xiàn)
- Asp.Net 無刷新文件上傳并顯示進(jìn)度條的實(shí)現(xiàn)方法及思路
- Asp.net獲取客戶端IP常見代碼存在的偽造IP問題探討
- VS2010 水晶報(bào)表的使用方法
- ASP.NET中操作SQL數(shù)據(jù)庫(連接字符串的配置及獲取)
- asp.net頁面?zhèn)髦禍y(cè)試實(shí)例代碼
- DataGridView - DataGridViewCheckBoxCell的使用介紹
- asp.net中javascript的引用(直接引入和間接引入)
- 三層+存儲(chǔ)過程實(shí)現(xiàn)分頁示例代碼
.Net教程Rss訂閱編程教程搜索
.Net教程推薦
- 在ASP.NET中連接SQL Server的簡(jiǎn)單方法
- 面向服務(wù)及其在互聯(lián)系統(tǒng)策略中的角
- ASP.NET多頻道網(wǎng)站架構(gòu)實(shí)現(xiàn)方法
- 談ASP.NET中Cookie的使用
- 怎樣解決asp.net URL傳值出現(xiàn)錯(cuò)誤的問題
- asp.net利用Ajax和Jquery在前臺(tái)向后臺(tái)傳參數(shù)并返回值的實(shí)例
- 基于Unity容器中的對(duì)象生存期管理分析
- 解讀ASP.NET常用的優(yōu)化性能方法
- ASP.NET MVC :實(shí)現(xiàn)我們自己的視圖引擎
- 一個(gè)比較好看的網(wǎng)頁翻頁效果
- 相關(guān)鏈接:
- 教程說明:
.Net教程-解析WPF實(shí)現(xiàn)音頻文件循環(huán)順序播放的解決方法
。