zoukankan      html  css  js  c++  java
  • c# 播放mp3

    转载:http://www.cnblogs.com/igrl/archive/2010/03/29/1699975.html

     /// <summary>
        /// 播放MP3文件
        /// </summary>
        public class Mp3Player
        {
            //定义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 = "";
    
            private 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
            );
        }
    View Code

    调用:

     Mp3Player mp3Play = new Mp3Player()
                {
                    FileName = mp3FilePath,
                };
                mp3Play.play();
    View Code
  • 相关阅读:
    permission 文档 翻译 运行时权限
    TabLayout ViewPager Fragment 简介 案例 MD
    Log 日志工具类 保存到文件 MD
    OkHttp 官方wiki 翻译 MD
    Okhttp 简介 示例 MD
    OkHttp 官方Wiki之【使用案例】
    DialogPlus
    倒计时 总结 Timer Handler CountDownTimer RxJava MD
    RecyclerView 判断滑到底部 顶部 预加载 更多 分页 MD
    CSS3的媒体查询(Media Queries)与移动设备显示尺寸大全
  • 原文地址:https://www.cnblogs.com/51net/p/4260128.html
Copyright © 2011-2022 走看看