欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#?WPF實(shí)現(xiàn)播放音頻文件的示例詳解

 更新時(shí)間:2024年03月12日 11:50:56   作者:無熵~  
這篇文章主要為大家詳細(xì)介紹了利用C#?WPF實(shí)現(xiàn)播放音頻文件的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

C#播放音頻文件的方式:

播放系統(tǒng)事件聲音

使用System.Media.SoundPlayer播放wav

使用MCI Command String多媒體設(shè)備程序接口播放mp3,wav,avi等

使用WindowsMediaPlayer的COM組件來播放(可視化)

使用DirectX播放音頻文件

使用Speech播放(朗讀器,可朗讀文本)

這里講不需要引用dll就能播放音頻的幾種方式:

1、播放系統(tǒng)事件聲音

System.Media.SystemSounds.Asterisk.Play();      //星號(hào)
System.Media.SystemSounds.Beep.Play();          //提示音
System.Media.SystemSounds.Exclamation.Play();   //感嘆
System.Media.SystemSounds.Hand.Play();          //協(xié)助
System.Media.SystemSounds.Question.Play();      //問題

2、使用MCI Command String播放音頻文件,可以支持多種格式(mp3,wav,avi),且不需要額外引用dll,可以循環(huán)播放音頻

    public class AudioPlayer
    {
        public AudioPlayer()
        {
        }
        //定義API函數(shù)使用的字符串變量 
        [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;
        //定義播放狀態(tài)枚舉變量
        public enum State
        {
            mPlaying = 1,
            mPuase = 2,
            mStop = 3
        };
        //結(jié)構(gòu)變量
        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
            {
                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";
                    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);              //單次播放
            //APIClass.mciSendString("play media repeat", TemStr, TemStr.Length, 0);     //循環(huán)播放
            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;
        }
        //總時(shí)間
        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);
            }
        }
        //當(dāng)前時(shí)間
        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
          );
    }

到此這篇關(guān)于C# WPF實(shí)現(xiàn)播放音頻文件的示例詳解的文章就介紹到這了,更多相關(guān)C# WPF播放音頻內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Unity ScrollView實(shí)現(xiàn)無限循環(huán)效果

    Unity ScrollView實(shí)現(xiàn)無限循環(huán)效果

    這篇文章主要為大家詳細(xì)介紹了Unity ScrollView實(shí)現(xiàn)無限循環(huán)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • C#之Socket客戶端全過程

    C#之Socket客戶端全過程

    這篇文章主要介紹了C#之Socket客戶端全過程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • C#調(diào)用VB進(jìn)行簡繁轉(zhuǎn)換的方法

    C#調(diào)用VB進(jìn)行簡繁轉(zhuǎn)換的方法

    這篇文章主要介紹了C#調(diào)用VB進(jìn)行簡繁轉(zhuǎn)換的方法,通過調(diào)用VB的動(dòng)態(tài)鏈接庫實(shí)現(xiàn)繁簡轉(zhuǎn)換的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-02-02
  • winform分頁控件 附源碼下載

    winform分頁控件 附源碼下載

    這篇文章主要介紹了winform分頁控件,文中附源碼下載地址,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • C#開發(fā)教程之FTP上傳下載功能詳解

    C#開發(fā)教程之FTP上傳下載功能詳解

    這篇文章主要為大家詳細(xì)介紹了C#開發(fā)教程之FTP上傳下載功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • Unity編輯器資源導(dǎo)入處理函數(shù)OnPostprocessAudio使用案例

    Unity編輯器資源導(dǎo)入處理函數(shù)OnPostprocessAudio使用案例

    這篇文章主要為大家介紹了Unity編輯器資源導(dǎo)入處理函數(shù)OnPostprocessAudio使用案例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • C#中Razor模板引擎簡單使用

    C#中Razor模板引擎簡單使用

    Razor 是一種標(biāo)記語法,可以讓您將基于服務(wù)器的代碼(Visual Basic 和 C#)嵌入到網(wǎng)頁中,本文給大家介紹了C#中Razor模板引擎簡單使用,需要的朋友可以參考下
    2022-02-02
  • Unity3D實(shí)現(xiàn)列表分頁效果

    Unity3D實(shí)現(xiàn)列表分頁效果

    這篇文章主要為大家詳細(xì)介紹了Unity3D實(shí)現(xiàn)列表分頁效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • C#?設(shè)置Chart的X軸為時(shí)間軸???????詳情

    C#?設(shè)置Chart的X軸為時(shí)間軸???????詳情

    這篇文章主要介紹了C#設(shè)置Chart的X軸為時(shí)間軸???????詳情,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • C#實(shí)現(xiàn)將javascript文件編譯成dll文件的方法

    C#實(shí)現(xiàn)將javascript文件編譯成dll文件的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)將javascript文件編譯成dll文件的方法,涉及C#編譯生成dll動(dòng)態(tài)鏈接庫文件的實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-11-11

最新評(píng)論