C# MP3操作类,能播放指定的mp3文件,或播放嵌入的资源中的Mp3文件

简介:

以下为我写的Mp3操作类源代码:

复制代码
using  System;
using  System.Collections.Generic;
using  System.Linq;
using  System.Text;
using  System.Windows.Forms;
using  System.IO;
using  System.Runtime.InteropServices;

/* ***********************************************************************************************************************************
* * 文件名 : 
* * 声明 : 
* * 创建者 : 黄聪
* * 创建日期 : 2009.10.8
* * 修改者 : 黄聪
* * 最新修改日期 : 2009.10.8
***********************************************************************************************************************************
*/
namespace  Tool
{
/* *******************************************************************************************************************************
* * 类名 : 
* * 声明 : 
* * 创建者 : 黄聪
* * 创建日期 : 2009.7.15
* * 修改者 : 黄聪
* * 最新修改日期 : 2009.7.15
*******************************************************************************************************************************
*/
public   class  Mp3Player
{
#region  - 属性 -
[DllImport(
" winmm.dll " )]
static   extern  Int32 mciSendString(String command,
StringBuilder buffer, Int32 bufferSize, IntPtr hwndCallback);

///   <summary>
///  临时音乐文件存放处
///   </summary>
private   string  m_musicPath  =   "" ;

///   <summary>
///  父窗体句柄
///   </summary>
private  IntPtr m_Handle;
#endregion

#region  - 构造函数 -
///   <summary>
///  创建Mp3播放类
///   </summary>
///   <param name="music"> 嵌入的音乐文件 </param>
///   <param name="path"> 临时音乐文件保存路径 </param>
///   <param name="Handle"> 父窗体句柄 </param>
public  Mp3Player(Byte[] music,  string  path, IntPtr Handle)
{
try
{
m_Handle 
=  Handle;
m_musicPath 
=  Path.Combine(path,  " temp.mp3 " );
FileStream fs 
=   new  FileStream(m_musicPath, FileMode.Create);
fs.Write(music, 
0 , music.Length);
fs.Close();
}
catch  (Exception)
{

}
}

///   <summary>
///  创建Mp3播放类
///   </summary>
///   <param name="musicPath"> 要播放的mp3文件路径 </param>
///   <param name="Handle"> 父窗体句柄 </param>
public  Mp3Player( string  musicPath, IntPtr Handle)
{
m_musicPath 
=  musicPath;
m_Handle 
=  Handle;
}

public  Mp3Player(Byte[] music, IntPtr Handle):
this (music,  @" C:\Windows\ " , Handle)
{

}

#endregion

#region  - 播放音乐 -
public   void  Open( string  path)
{
if  (path  !=   "" )
{
try
{
mciSendString(
" open  "   +  path  +   "  alias media " null 0 , m_Handle);
mciSendString(
" play media " null 0 , m_Handle);
}
catch  (Exception)
{

}
}
}

public   void  Open()
{
Open(m_musicPath);
}
#endregion

#region  - 停止音乐播放 -
void  CloseMedia()
{
try
{
mciSendString(
" close all " null 0 , m_Handle);
}
catch  (Exception)
{
}
}
#endregion
}
}
复制代码

1.将MP3文件导入到VS中,并且设置为嵌入的资源:

2010032800405184.png

MP3文件

2.导入到资源中,C#中视MP3为文件类型,以Byte[]形式存储:

2010032800434074.png

3.将该MP3文件设置为嵌入的资源:

2010032800444074.png

4.最后创建一个新的窗体工程,在Load事件中调用Mp3类的方法即可播放音乐:

复制代码
private   void  FormMain_Load( object  sender, EventArgs e)
{
    // 加载音乐
     Mp3Player mp3  =   new  Mp3Player(Properties.Resources.music, Handle);

  // 音乐开始播放
    mp3.Open();
}
复制代码



本文转自黄聪博客园博客,原文链接:http://www.cnblogs.com/huangcong/archive/2010/03/28/1698682.html,如需转载请自行联系原作者
相关文章
|
5天前
|
C#
C#获取文件基本信息,文件名称、修改时间、文件路径等
C#获取文件基本信息,文件名称、修改时间、文件路径等
8 0
|
4天前
|
C#
c# 所有类的最终基类:Object
c# 所有类的最终基类:Object
5 0
|
5天前
|
安全 C#
C#Webrequest类的使用
C#Webrequest类的使用
8 0
|
7天前
|
SQL 存储 C#
C# Web控件与数据感应之 TreeView 类
C# Web控件与数据感应之 TreeView 类
|
7天前
|
SQL 存储 Oracle
C# Web控件与数据感应之 CheckBoxList 类
C# Web控件与数据感应之 CheckBoxList 类
|
7天前
|
SQL 存储 Oracle
C# Web控件与数据感应之 Control 类
C# Web控件与数据感应之 Control 类
|
7天前
|
SQL 存储 Oracle
C# Web控件与数据感应之 ListControl 类
C# Web控件与数据感应之 ListControl 类
|
22天前
|
开发框架 前端开发 .NET
C#编程与Web开发
【4月更文挑战第21天】本文探讨了C#在Web开发中的应用,包括使用ASP.NET框架、MVC模式、Web API和Entity Framework。C#作为.NET框架的主要语言,结合这些工具,能创建动态、高效的Web应用。实际案例涉及企业级应用、电子商务和社交媒体平台。尽管面临竞争和挑战,但C#在Web开发领域的前景将持续拓展。
|
22天前
|
SQL 开发框架 安全
C#编程与多线程处理
【4月更文挑战第21天】探索C#多线程处理,提升程序性能与响应性。了解C#中的Thread、Task类及Async/Await关键字,掌握线程同步与安全,实践并发计算、网络服务及UI优化。跟随未来发展趋势,利用C#打造高效应用。