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();
    }

  • 相关阅读:
    PyQt5经典案例
    JS实现深拷贝(解决循环引用等问题)
    React/Vue里的key到底有什么用?看完这篇你就知道了!(附demo代码)
    linux盘符操作命令
    Ubuntu20.04下安装opencv for C++
    数字图像处理-python随机噪声、高斯噪声和椒盐噪声实现
    数字图像处理-(1)pyqt页面
    数字图像处理-Python读取BMP文件
    docker笔记
    CentOS7安装GO
  • 原文地址:https://www.cnblogs.com/huangcong/p/1698682.html
Copyright © 2011-2022 走看看