zoukankan      html  css  js  c++  java
  • C# MP3操作类

    能播放指定的mp3文件,或播放嵌入的资源中的Mp3文件

    以下为我写的Mp3操作类源代码:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.IO;
    using System.Runtime.InteropServices;

    /************************************************************************************************************************************
    * * 文件名 :
    * * 声明 :
    * * 创建者 : 黄聪
    * * 创建日期 : 2009.10.8
    * * 修改者 : 黄聪
    * * 最新修改日期 : 2009.10.8
    ***********************************************************************************************************************************
    */
    namespace Tool
    {
    /********************************************************************************************************************************
    * * 类名 :
    * * 声明 :
    * * 创建者 : 黄聪
    * * 创建日期 : 2009.7.15
    * * 修改者 : 黄聪
    * * 最新修改日期 : 2009.7.15
    *******************************************************************************************************************************
    */
    public class Mp3Player
    {
    #region - 属性 -
    [DllImport(
    "winmm.dll")]
    static extern Int32 mciSendString(String command,
    StringBuilder buffer, Int32 bufferSize, IntPtr hwndCallback);

    /// <summary>
    /// 临时音乐文件存放处
    /// </summary>
    private string m_musicPath = "";

    /// <summary>
    /// 父窗体句柄
    /// </summary>
    private IntPtr m_Handle;
    #endregion

    #region - 构造函数 -
    /// <summary>
    /// 创建Mp3播放类
    /// </summary>
    /// <param name="music">嵌入的音乐文件</param>
    /// <param name="path">临时音乐文件保存路径</param>
    /// <param name="Handle">父窗体句柄</param>
    public Mp3Player(Byte[] music, string path, IntPtr Handle)
    {
    try
    {
    m_Handle
    = Handle;
    m_musicPath
    = Path.Combine(path, "temp.mp3");
    FileStream fs
    = new FileStream(m_musicPath, FileMode.Create);
    fs.Write(music,
    0, music.Length);
    fs.Close();
    }
    catch (Exception)
    {

    }
    }

    /// <summary>
    /// 创建Mp3播放类
    /// </summary>
    /// <param name="musicPath">要播放的mp3文件路径</param>
    /// <param name="Handle">父窗体句柄</param>
    public Mp3Player(string musicPath, IntPtr Handle)
    {
    m_musicPath
    = musicPath;
    m_Handle
    = Handle;
    }

    public Mp3Player(Byte[] music, IntPtr Handle):
    this(music, @"C:\Windows\", Handle)
    {

    }

    #endregion

    #region - 播放音乐 -
    public void Open(string path)
    {
    if (path != "")
    {
    try
    {
    mciSendString(
    "open " + path + " alias media", null, 0, m_Handle);
    mciSendString(
    "play media", null, 0, m_Handle);
    }
    catch (Exception)
    {

    }
    }
    }

    public void Open()
    {
    Open(m_musicPath);
    }
    #endregion

    #region - 停止音乐播放 -
    void CloseMedia()
    {
    try
    {
    mciSendString(
    "close all", null, 0, m_Handle);
    }
    catch (Exception)
    {
    }
    }
    #endregion
    }
    }

    1.将MP3文件导入到VS中,并且设置为嵌入的资源:

    MP3文件

    2.导入到资源中,C#中视MP3为文件类型,以Byte[]形式存储:

    3.将该MP3文件设置为嵌入的资源:

    4.最后创建一个新的窗体工程,在Load事件中调用Mp3类的方法即可播放音乐:

    private void FormMain_Load(object sender, EventArgs e)
    {
       //加载音乐
       Mp3Player mp3 = new Mp3Player(Properties.Resources.music, Handle);

      //音乐开始播放
       mp3.Open();
    }
  • 相关阅读:
    JAVA-初步认识-第十三章-验证静态同步函数的锁
    JAVA-初步认识-第十三章-多线程(验证同步函数的锁)
    JAVA-初步认识-第十二章-面向对象(包与包之间的访问)
    JAVA-初步认识-第十二章-面向对象(包的概述)
    JAVA-初步认识-第十三章-同步函数
    Fatal error: Call to undefined function imagettftext()解决办法
    ecstore菜鸟电子面单对接摘要
    linux crontab 实现每秒执行(转)
    ios9 URL Schemes列为白名单,才可正常检查其他应用是否安装
    主机宝等主机面板不能跨站访问文件,不能访问父路径文件问题
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/1745637.html
Copyright © 2011-2022 走看看