最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#?WPF實現播放音頻文件的示例詳解

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

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

播放系統事件聲音

使用System.Media.SoundPlayer播放wav

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

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

使用DirectX播放音頻文件

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

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

1、播放系統事件聲音

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

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

    public class AudioPlayer
    {
        public AudioPlayer()
        {
        }
        //定義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;
        //定義播放狀態(tài)枚舉變量
        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
            {
                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;
        }
        //總時間
        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# WPF實現播放音頻文件的示例詳解的文章就介紹到這了,更多相關C# WPF播放音頻內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 在C#中基于Semantic?Kernel的檢索增強生成(RAG)實踐記錄

    在C#中基于Semantic?Kernel的檢索增強生成(RAG)實踐記錄

    SemanticKernel是一個用于集成和操作大語言模型的應用程序框架,支持C#、Python和Java等多種編程語言,通過SemanticKernel,開發(fā)者可以輕松構建基于最新AI技術的應用程序
    2024-10-10
  • unity實現流光效果

    unity實現流光效果

    這篇文章主要為大家詳細介紹了unity實現流光效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • C# string.IsNullOrEmpty和IsNullOrWhiteSpace方法實現

    C# string.IsNullOrEmpty和IsNullOrWhiteSpace方法實現

    本文主要介紹了C# string.IsNullOrEmpty和IsNullOrWhiteSpace方法實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2026-01-01
  • C# null 合并運算符??(雙問號)使用示例

    C# null 合并運算符??(雙問號)使用示例

    這篇文章主要介紹了C# null 合并運算符??(雙問號)使用示例,?? 運算符稱作 null 合并運算符。如果此運算符的左操作數不為 null,則此運算符將返回左操作數;否則返回右操作數,需要的朋友可以參考下
    2014-06-06
  • C#實現復雜XML的序列化與反序列化

    C#實現復雜XML的序列化與反序列化

    這篇文章主要介紹了C#實現復雜XML的序列化與反序列化的方法,是非常實用的一個技巧,需要的朋友可以參考下
    2014-09-09
  • C#中的反射(System.Reflection)

    C#中的反射(System.Reflection)

    這篇文章介紹了C#中的反射(System.Reflection),文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • C#程序(含多個Dll)合并成一個Exe的簡單方法

    C#程序(含多個Dll)合并成一個Exe的簡單方法

    這篇文章主要為大家詳細介紹了C#程序(含多個Dll)合并成一個Exe的簡單方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • 詳解C#中委托,事件與回調函數講解

    詳解C#中委托,事件與回調函數講解

    這篇文章主要介紹了詳解C#中委托,事件與回調函數講解,小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。
    2016-12-12
  • 基于C#實現俄羅斯方塊游戲

    基于C#實現俄羅斯方塊游戲

    這篇文章主要為大家詳細介紹了基于C#實現俄羅斯方塊游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • C#實現倒計時關閉提示框功能

    C#實現倒計時關閉提示框功能

    最近小編接到一個功能需要實現一個提示框并且能自動關閉的,看到這個需求真是懵了,四處搜集資料才搞定,接下來通過本文給大家分享C#實現倒計時關閉提示框功能,感興趣的朋友跟隨小編一起看看吧
    2019-07-07

最新評論

内黄县| 嘉善县| 通辽市| 府谷县| 交城县| 阳原县| 突泉县| 和龙市| 敦化市| 静海县| 田东县| 武宣县| 安吉县| 牡丹江市| 剑阁县| 南漳县| 西平县| 五大连池市| 黑河市| 杭锦后旗| 新晃| 曲靖市| 武邑县| 凭祥市| 旅游| 清丰县| 平江县| 扶风县| 岳西县| 绥阳县| 金阳县| 会昌县| 砚山县| 健康| 平度市| 平谷区| 壶关县| 中宁县| 枞阳县| 黔南| 瑞丽市|