• 利用WMPLib在Windows mobile下播放Mp3


    程序示例(C#智能设备应用程序):

    必须添加对wmp.dll的引用(项目->添加引用->windows/system32/wmp.dll)。

    源文件:

    //CMediaControl.cs:定义了控制媒体播放的类CMediaControl。
    using System.Collections.Generic;
    using System;
    using System.Windows.Forms;
    public class CMediaControl
    {
        private WMPLib.WindowsMediaPlayer player;
        private String curFileName;                 //Current media file name.
        private bool isPaused;                      //Is current state pause?
        private double curPos;                      //Current time position, use to restore play from pause status.
        
        public CMediaControl()
        {
            player = new WMPLib.WindowsMediaPlayer();
            player.PlayStateChange += new WMPLib._WMPOCXEvents_PlayStateChangeEventHandler(Player_PlayStateChange);
            player.MediaError += new WMPLib._WMPOCXEvents_MediaErrorEventHandler(Player_MediaError);
            curFileName = "";
            isPaused = false;
            curPos = 0.0;
        }
        private void Player_PlayStateChange(int NewState)
        {
            if(WMPLib.WMPPlayState.wmppsPaused == (WMPLib.WMPPlayState)NewState)
            {
                isPaused = true;
            }
            else if(WMPLib.WMPPlayState.wmppsPlaying == (WMPLib.WMPPlayState)NewState)
            {
                if(isPaused)
                {
                    isPaused = false;
                    player.controls.currentPosition += curPos;
                    curPos = 0;
                }
            }
            //else if(WMPLib.WMPPlayState.wmppsStopped == (WMPLib.WMPPlayState)NewState)
            //{
            //    isPaused = false;
            //}
        }
        private void Player_MediaError(object pMediaObject)
        {
            MessageBox.Show("Cannot play media file.");
        }
        public int OpenMediaFile(String fileName)
        {
            int ret = 0;
            //Validate fileName
            //Filename legal
            curFileName = fileName;
            player.URL = curFileName;
            
        return ret;
        }
        public int SetVolumn(int vol)
        {
            int ret = 0;
            //Validate vol
            if((vol < 0) || (vol >100))
            {
            //Volumn is highest or lowest.
        return ret;
            }
            //vol legal
            player.settings.volume = vol;
        
        return ret;
        }
        public int GetVolumn()
        {
            int ret = 0;
            ret = player.settings.volume;
        return ret;
        }
        public int MediaPlay()
        {
            int ret = 0;
            player.controls.play();
        return ret;
        }
        public int MediaPause()
        {
            int ret = 0;
            player.controls.pause();
            curPos = player.controls.currentPosition;
        return ret;
        }
        public int MediaStop()
        {
            int ret = 0;
            player.controls.stop();
        return ret;
        }
        public double MediaGetPosition()
        {
            double ret = 0;
            
            if(WMPLib.WMPPlayState.wmppsPlaying != player.playState)
            {
        return ret;
            }
            double curPos = player.controls.currentPosition;
            double totalLen = player.currentMedia.duration;
            ret = (curPos / totalLen) * 100;
        return ret;
        }
        public string MediaGetInfo()
        {
            string mediaInfo = "";
            //mediaInfo += player.currentMedia.name;
            //mediaInfo += "@";
            mediaInfo += "Title: " + player.currentMedia.getItemInfo("Title");
            mediaInfo += "@";
            mediaInfo += "Author: " + player.currentMedia.getItemInfo("Author");
            mediaInfo += "@";
            mediaInfo += "Description: " + player.currentMedia.getItemInfo("Description");
            mediaInfo += "@";
            mediaInfo += "Duration: " + player.currentMedia.getItemInfo("Duration");
            mediaInfo += "@";
            mediaInfo += "FileType: " + player.currentMedia.getItemInfo("FileType");
            mediaInfo += "@";
            mediaInfo += "FileSize: " + player.currentMedia.getItemInfo("FileSize");
        return mediaInfo;
        }
        public int MediaFastForward(int tick)
        {
            int ret = 0;
            //player.controls.fastForward();
            player.controls.currentPosition += tick;
            //MessageBox.Show("Don't support this function!");
        return ret;
        }
        public int MediaFastReverse(int tick)
        {
            int ret = 0;
            //player.controls.fastReverse();
            player.controls.currentPosition -= tick;
            //MessageBox.Show("Don't support this function!");
        return ret;
        }
    }
    

      

    附录

    WMPLib的基本属性及方法

    URL: (String); 指定媒体位置,本机或网络地址 

    uiMode:(String); 播放器界面模式,可为Full, Mini, None, Invisible 

    playState:(integer); 播放状态,1=停止,2=暂停,3=播放,6=正在缓冲,9=正在连接,10=准备就绪 

    enableContextMenu:(Boolean); 启用/禁用右键菜单 

    fullScreen:boolean; (是否全屏显示) 

    [controls] wmp.controls //播放器基本控制 

    controls.play; 播放 

    controls.pause; 暂停 

    controls.stop; 停止 

    controls.currentPosition:double; 当前进度 

    controls.currentPositionString:string; 当前进度,字符串格式。如“00:23” 

    controls.fastForward; 快进 

    controls.fastReverse; 快退 

    controls.next; 下一曲 

    controls.previous; 上一曲 

    [settings] wmp.settings //播放器基本设置 

    settings.volume:integer; 音量,0-100 

    settings.autoStart:Boolean; 是否自动播放 

    settings.mute:Boolean; 是否静音 

    settings.playCount:integer; 播放次数 

    [currentMedia] wmp.currentMedia //当前媒体属性 

    currentMedia.duration:double; 媒体总长度 

    currentMedia.durationString:string; 媒体总长度,字符串格式。如“03:24” 

    currentMedia.getItemInfo(const string); 获取当前媒体信息"Title"=媒体标题,"Author"=艺术       家,"Copyright"=版权信息,"Description"=媒体内容描述,"Duration"=持续时间(秒),"FileSize"=文件大小,"FileType"=文件类型,"sourceURL"=原始地址 

    currentMedia.setItemInfo(const string); 通过属性名设置媒体信息 

    currentMedia.name:string; 同 currentMedia.getItemInfo("Title") 

    [currentPlaylist] wmp.currentPlaylist //当前播放列表属性 

    currentPlaylist.count:integer; 当前播放列表所包含媒体数 

    currentPlaylist.Item[integer]; 获取或设置指定项目媒体信息,其子属性同wmp.currentMedia 

  • 相关阅读:
    W13Scan 扫描器挖掘漏洞实践
    golang 单元测试框架实践
    中文分词工具(LAC) 试用笔记
    消息队列Rabbitmq的交换器类型
    docker中使用源码方式搭建SRS流媒体服务
    Ubuntu中使用Nginx+rtmp搭建流媒体直播服务
    Mac下使用Pecl安装PHP的Swoole扩展实践
    Ubuntu中使用Nginx+rtmp模块搭建流媒体视频点播服务
    安卓开发开发规范手册V1.0
    【数据库技术】MySql 45讲整合
  • 原文地址:https://www.cnblogs.com/zxlovenet/p/2996970.html
Copyright © 2020-2023  润新知