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();
    }
  • 相关阅读:
    js 判断用户是否联网
    vue cli 2.9.6 低版本安装失败
    'webpack-dev-server' 不是内部或外部命令,也不是可运行 的程序 或批处理文件。
    Jenkins创建运行用例
    python的类变量和成员变量
    Airtest移动端自动化测试环境搭建 一
    pytest使用总结笔记
    Python单元测试框架之pytest---如何执行测试用例
    UI自动化之分层思想pom模式
    【Fiddler篇】抓包工具之Filters(过滤器)进行会话过滤
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/1745637.html
Copyright © 2011-2022 走看看