您的位置:首页 > 编程语言 > C#

功能: 播放.mp3音频文件 (C#学习日记 2017-08-21)

2017-08-20 15:11 736 查看
c# 播放mp3

本文来自转载··········  (经测试未实现··   还需改进)
这个类可以直接播放mp3文件,使用方法如下

使用方式: 

            clsMCI cm = new clsMCI();

            cm.FileName = "别看我只是一只羊.mp3";

            cm.play();
 
 使用命名空间:System.Runtime.InteropServices;
 类代码

using System;
using System.Runtime.InteropServices; 
using System.Text; 
using System.IO ;
using System.Windows.Forms; 
namespace WindowsApplication7

{
/// <summary>
/// clsMci 的摘要说明。
/// </summary>
 public class clsMCI

{
public clsMCI()

{
//
// TODO: 在此处添加构造函数逻辑
//
  }

//定义API函数使用的字符串变量 
  [MarshalAs(UnmanagedType.ByValTStr,SizeConst=260)]
private string Name = "" ;

[MarshalAs(UnmanagedType.ByValTStr,SizeConst=128)]
private string durLength = "" ;

[MarshalAs(UnmanagedType.LPTStr,SizeConst=128)]
private string TemStr ="";
int ilong;
//定义播放状态枚举变量
  public enum State

{

mPlaying = 1,

mPuase = 2,

mStop = 3

};
//结构变量
  public struct structMCI 

{
public bool bMut;
public int iDur;
public int iPos;
public int iVol;
public int iBal;
public string iName;
public State state;

};

public structMCI mc =new structMCI() ;

//取得播放文件属性
  public string FileName

{
get

{
return mc.iName;

}
set

{
//ASCIIEncoding asc = new ASCIIEncoding(); 
    try

{

TemStr =""; 

TemStr = TemStr.PadLeft(127,Convert.ToChar(" "));

Name = Name.PadLeft(260,Convert.ToChar(" ")) ;

mc.iName = value; 

ilong = APIClass.GetShortPathName(mc.iName,Name, Name.Length);

Name = GetCurrPath(Name);
//Name = "open " + Convert.ToChar(34) + Name + Convert.ToChar(34) + " alias media";
     Name = "open " + Convert.ToChar(34) + Name + Convert.ToChar(34) + " alias media";

ilong = APIClass.mciSendString("close all", TemStr, TemStr.Length , 0);

ilong = APIClass.mciSendString( Name, TemStr, TemStr.Length, 0);

ilong = APIClass.mciSendString("set media time format milliseconds", TemStr, TemStr.Length , 0);

mc.state = State.mStop; 

}
catch

{

}

}

}
//播放
  public void play()

{

TemStr = "";

TemStr = TemStr.PadLeft(127,Convert.ToChar(" "));

APIClass.mciSendString("play media", TemStr, TemStr.Length , 0);

mc.state = State.mPlaying ;

}
//停止
  public void StopT()

{

TemStr = "";

TemStr = TemStr.PadLeft(128,Convert.ToChar(" "));

ilong = APIClass.mciSendString("close media", TemStr, 128, 0);

ilong = APIClass.mciSendString("close all", TemStr, 128, 0);

mc.state = State.mStop ; 

}

public void Puase()

{

TemStr = "";

TemStr = TemStr.PadLeft(128,Convert.ToChar(" "));

ilong = APIClass.mciSendString("pause media", TemStr, TemStr.Length, 0);

mc.state = State.mPuase ; 

}
private string GetCurrPath(string name)

{
if(name.Length <1) return ""; 

name = name.Trim();

name = name.Substring(0,name.Length-1);
return name;

}
//总时间
  public int Duration

{
get

{

durLength = "";

durLength = durLength.PadLeft(128,Convert.ToChar(" ")) ;

APIClass.mciSendString("status media length", durLength, durLength.Length, 0);

durLength = durLength.Trim();
if(durLength == "") return 0;
return (int)(Convert.ToDouble(durLength) / 1000f); 

}

}

//当前时间
  public int CurrentPosition

{
get

{

durLength = "";

durLength = durLength.PadLeft(128,Convert.ToChar(" ")) ;

APIClass.mciSendString("status media position", durLength, durLength.Length, 0);

mc.iPos = (int)(Convert.ToDouble(durLength) / 1000f);
return mc.iPos;

}

}

}

public class APIClass

{

[DllImport("kernel32.dll", CharSet = CharSet.Auto)]
public static extern int GetShortPathName (
string lpszLongPath,
string shortFile,
int cchBuffer

);

[DllImport("winmm.dll", EntryPoint="mciSendString", CharSet = CharSet.Auto)]
public static extern int mciSendString (
string lpstrCommand,
string lpstrReturnString,
int uReturnLength,
int hwndCallback

);

}

}
 
 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C# 功能 mp3 声音