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();
    }
  • 相关阅读:
    tf.function :图执行模式(转载)
    TFRecord:TensorFlow 数据集存储格式(转载)
    tf.keras.Model和tf.keras.Sequential
    tf.keras.Input
    IOS逆向-砸壳笔记
    ios调试-查看日志
    用xcode9编译出ios越狱机程序使用的dylib
    docker运行中的container怎么修改之前run时的env
    (转)解决类似 /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found 的问题
    (转) mysql中left join,right join,inner join的区别
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/1745637.html
Copyright © 2011-2022 走看看