zoukankan      html  css  js  c++  java
  • C#播放音乐的几种方式

    好久没用都要忘记了,记录下,温故而知新。

    1. 播放系统事件声音

    System.Media.SystemSounds.Asterisk.Play();

    System.Media.SystemSounds.Beep.Play();

    System.Media.SystemSounds.Exclamation.Play();

    System.Media.SystemSounds.Hand.Play();

    2 使用System.Media.SoundPlayer播放.wav音乐文件

    播放WAV格式的声音
    常用属性
    IsLoadCompleted 声音资源是否加载完成
    LoadTimeout 加载声音资源的最大允许时间(毫秒)
    SoundLocation 声音资源的位置
    Stream 声音资源的字节流(可以指定声音资源的位置,也可以指定已经加载的字节流)
    常用方法

    Dispose() 释放声音资源并销毁对象
    Load() 加载声音资源
    Play() 在新线程播放一次,如果声音资源未加载,则首先加载
    PlayLooping() 在新线程循环播放,如果声音资源未加载,则首先加载

    Stop() 停止播放
    常用事件

    Disposed 声音资源被释放后触发
    LoadCompleted 声音资源加载完成或失败后触发
    SoundLocationChanged 声音资源的位置改变后触发
    StreamChanged 声音资源的字节流改变后触发

    System.Media.SoundPlayer sp = new SoundPlayer(); 
    sp.SoundLocation = @"D:/ms.wav"; 
    sp.PlayLooping();

    3.使用MCI Command String多媒体设备程序接口播放mp3,avi等

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Runtime.InteropServices;
    
    namespace MyWenxinTool
    {
        public class musicplay
        {
    
            public static uint SND_ASYNC = 0x0001;
            public static uint SND_FILENAME = 0x00020000;
            [DllImport("winmm.dll")]
            public static extern uint mciSendString(string lpstrCommand, string lpstrReturnString, uint uReturnLength, uint hWndCallback);
    
            public static void PlayNmusinc(string path)
            {
                mciSendString(@"close temp_alias", null, 0, 0);
                mciSendString(@"open """+path+@""" alias temp_alias", null, 0, 0);
                mciSendString("play temp_alias repeat", null, 0, 0);
            }
    
            /// <summary>
            /// 播放音乐文件(重复)
            /// </summary>
            /// <param name="p_FileName">音乐文件名称</param>
            public static void PlayMusic_Repeat(string p_FileName)
            {
                try
                {
                    mciSendString(@"close temp_music", " ", 0, 0);
                    mciSendString(@"open " + p_FileName + " alias temp_music", " ", 0, 0);
                    mciSendString(@"play temp_music repeat", " ", 0, 0);
                }
                catch
                { }
            }
    
            /// <summary>
            /// 播放音乐文件
            /// </summary>
            /// <param name="p_FileName">音乐文件名称</param>
            public static void PlayMusic(string p_FileName)
            {
                try
                {
                    mciSendString(@"close temp_music", " ", 0, 0);
                    //mciSendString(@"open " + p_FileName + " alias temp_music", " ", 0, 0);
                    mciSendString(@"open """ + p_FileName + @""" alias temp_music", null, 0, 0);
                    mciSendString(@"play temp_music", " ", 0, 0);
                }
                catch
                { }
            }
    
            /// <summary>
            /// 停止当前音乐播放
            /// </summary>
            /// <param name="p_FileName">音乐文件名称</param>
            public static void StopMusic(string p_FileName)
            {
                try
                {
                    mciSendString(@"close " + p_FileName, " ", 0, 0);
                }
                catch { }
            }
    
        }
    
    }
  • 相关阅读:
    Visual C#使用DirectX实现视频播放
    sql server中新增一条数据后返回该数据的ID
    JQuery上传插件Uploadify使用详解
    .NET JS escape加密的后台解密
    Redis Sentinel(哨兵模式)
    Redis集群入门
    Redis 4.0.X版本reshard出现错误的解决办法
    首层nginx 传递 二级代理,三级代理......多级代理nginx 客户端真实IP的方法
    Centos6 Ruby 1.8.7升级至Ruby 2.3.1的方法
    SQL Server 2008示例数据库安装问题解决
  • 原文地址:https://www.cnblogs.com/wangyonglai/p/15619310.html
Copyright © 2011-2022 走看看