zoukankan      html  css  js  c++  java
  • 使用Mci指令打造你自己的媒体播放器

    使用Mci指令打造你自己的媒体播放器
     
      电子科技大学软件学院03级 周银辉
                 转载请注明出处

    1.说明:
      网上mic的文章一大堆,但大多天下文章一大抄。这里说点实际的,在C#中如何使用它来做个播放器。

    2.如何发送指令:
      /// <summary>
      /// 发送mci指令
      /// </summary>
      /// <param name="command">要发送的指令</param>
      /// <param name="returnString">返回串</param>
      /// <param name="returnLength">缓冲区大小</param>
      /// <param name="hwndCallBack">回调。一般设置为0</param>
      /// <returns></returns>
      [DllImport("winmm.dll",EntryPoint="mciSendString", CharSet=CharSet.Auto)]
      public static extern int mciSendString(string command, string returnString,
       int returnLength, int hwndCallBack);
    这里的参数command就是我们要发送的指令
    以后我们都是通过这个mcisendString函数发送指令进行媒体操作

    3. 指令是什么样的?
       比sql语句还有简单,比如我们的音乐文件是 path = "c:\\my.mp3",现在我们要发送一条指令打开该文件以便以后播放它,那么我们的指令就是 command = "open \"" +path+ "\"" +" alias song";注意path两边要有引号扩起来,这表示它是一个参数(这与命令行参数类似),alias 是取别名,我们将 
    "c:\\my.mp3"取了一个别名叫做song,这样我们以后就可以针对song进行操作了

    4. 最简单的: 打开 -> 播放 -> 关闭

       /// <summary>
      /// 打开指定的音乐文件
      /// 打开时别名为song
      /// </summary>
      /// <param name="path">文件的完整路径</param>
      public void Open(string path)
      {
       if(!File.Exists(path))
       {
        MessageBox.Show("文件不存在\n"+path);
        return;
       }

       MciPlayer.mciSendString("close all","",0,0);
       MciPlayer.mciSendString("open \"" +path+ "\"" +" alias song", "", 0,0);            

      }

       /// <summary>
      /// 从头播放MciPlayer.Open打开的文件,请先确保文件已经打开
      /// </summary>
      public void Play()
      {
       MciPlayer.mciSendString("play song", "", 0, 0);
      }

       /// <summary>
      /// 停止播放
      /// </summary>
      public void Stop()
      {
       MciPlayer.mciSendString("stop song", "", 0, 0);
       MciPlayer.mciSendString("close song","", 0, 0);
      }

    5. 更多的
       mci指令很多,包括视频控制等,可以说是庞杂,但幸运的是你可以在msdn中不使用筛选器,在索引中输入MCI Command Strings便能查找到相关的信息

      这是我做的一个简单的播放器(支持视频)
     player_mini.bmp
    如果需要源代码的话,可以email: yinhui_zhou@yahoo.com.cn

  • 相关阅读:
    NOI-1.1-04输出保留3位小数的浮点数
    百练7619-合影效果-2015正式D题-简单排序&输出格式
    百练6376-二维数组右上左下遍历-2015正式C题
    C++ 开发环境配置
    go语言 http学习
    Git 命令及分支管理学习
    配置go语言编辑环境
    DNS的过程
    Split Array into Consecutive Subsequences
    组委会正在为美团点评CodeM大赛的决赛设计新赛制
  • 原文地址:https://www.cnblogs.com/zhouyinhui/p/391368.html
Copyright © 2011-2022 走看看