首先介绍下,当前文章中的基本功能

1:播放、暂停、停止、快进、后退、指定播放速度

2:设置视频音量、是否静音?

3:播放模式:顺序播放、随机播放、单曲播放

使用MediaPlayer播放器用到的几个类

CWMPPlayer4      m_mediaPlayer;    //播放地址关联
CWMPControls        m_control;    //控制按钮关联
CWMPMedia       m_media;    //媒体
CWMPSettings        m_setting;    //设置按钮关联
CWMPPlaylist        m_playlist;

对当前类进行关联,必不可少一步

m_control=m_mediaPlayer.get_controls();
m_setting = m_mediaPlayer.get_settings();

有的人想把MediaPlayer的菜单栏去掉,发现无法在属性上去除,如图:

想要去除红边框中的内容,用以下代码实现

m_mediaPlayer.put_uiMode(L"None");

******************************************************************************************

该函数的其他参数说明,不在当前文章中说明,如果有需要了解了,我会记录在CWMPPlayer4中进行说明。

******************************************************************************************

播放单一视频

m_mediaPlayer.put_URL(m_strSelPlay);

******************************************************************************************

使用当前API时,一定要记住参数写视频的绝对路径,不可以写相对路径!!!

******************************************************************************************

暂停视频

m_control.pause();

暂停视频后想要继续再次播放当前视频

此时,不能用上一步的播放单一视频了,应该改用下面方式

m_control.play();

停止视频播放

m_control.stop();

视频快进

当前操作是快进整个视频,使用该功能后视频以快速方式进行播放

m_control.fastForward();

视频后退

当前操作的是后退整个视频

m_control.fastReverse();

指定视频播放速度

使用上面两个函数发现,无法指定视频自定义播放速度,这让人很难受,那就来看下面这个函数,它就可以完成你的功能。

哈哈

double dRate = 1.3;
m_setting.put_rate(dRate);

设置视频的音量

long voiceNum = 4;
//参数可以进行任意设置,大/小
m_setting.put_volume(voiceNum);

静音设置

如果要将声音设置成静音状态时,就不能使用上面的API了,静音设置有它单独的API

//静音设置
m_setting.put_mute(true);
//非静音设置
m_setting.put_mute(false);

视频播放模式设置

有三种模式:顺序播放、随机播放、单曲循环播放

用到的API是

//顺序播放
m_setting.setMode(L"autoRewind",TRUE);
//单曲循环播放
m_setting.setMode(L"loop",TRUE);
//随机播放
m_setting.setMode(L"shuffle",TRUE);

其实,在使用这个API时,有个问题,当我使用对这三种播放方式交叉使用的时候,发现,使用单曲循环播放好像不生效。

请大家使用的时候需要注意这个问题。(目前这个问题已经被我解决了,我会在其他的文章中记录我的解决方案,敬请期待)

写到这里了,大家会发现CWMPPlaylist类还没有被使用。没错,在以上简单功能中,不需要用到这个类。只有在进行播放模式变化时才会用到。

当我们使用顺序播放时,不可能重复的使用put_URL这个函数进行播放。

需要将播放的视频文件存在到一个列表容器中,也就需要CWMPPlaylist类了。

首先,在使用之前,进行绑定。

也请大家注意,一定是使用之前进行绑定!!!

m_playlist = static_cast<CWMPPlaylist>(m_mediaPlayer.get_currentPlaylist());

对该类进行数据添加

CString strFile = L"F:\\text.mp4";
m_media = static_cast<CWMPMedia>(m_mediaPlayer.newMedia(strFile));
m_playlist.appendItem(m_media);

*****************************************************************************

在这里也要注意,文件路径需要写全路径,不能写相对路径

*****************************************************************************

下一步,将你需要播放的数据存储在m_playlist之后,对齐进行数据绑定

m_mediaPlayer.put_currentPlaylist(m_playlist);

下一步进行播放

m_control.play();

一般,在进行顺序播放的时候都会设置,是否循环列表播放,可以做以下操作

m_setting.put_autoStart(TRUE);

好了,以上就是对基本功能的介绍了。我对我写的每一句代码负责,只有被我验证过的代码才会讲解给大家,希望会对大家有帮助。

如果有人想要下载关于MediaPlayer的控件类,可以打开以下链接,还是那句话,我对我上传的内容负责,如果有问题大家可以留言讨论~~

wmpSource.zip-C++代码类资源-CSDN下载

MFC中MediaPlayer基本功能使用相关推荐

  1. MFC中 dc.DrawText()与dc.TextOut()从功能上讲有什么区别?

    这根本是两个函数,dc.TextOut(x,y,str)调用的是MFC中CClientDC类的成员函数TextOut,而TextOut(dc,x,y,length)是WIN32的API函数,其中的dc ...

  2. MFC中制作一个似命令行的输入框

    在做一个MFC软件的时候有一个这样的需求,就是要有类似与AutoCad的命令输入框,如下图所示: 本着不重写已有功能的原则,在MFC中发掘了一圈,没发现有可用的现成控件,上网搜了一下,发现有人做过,但 ...

  3. MFC中的几个常用类——CWnd

    2019独角兽企业重金招聘Python工程师标准>>> 1 窗口类 1.1 概述 CObject └CCmdTarget └CWnd CWnd是MFC窗口类的 基类,提供了微软基础类 ...

  4. 实现MFC中Radio Button组绑定同一变量控制

    实现MFC中Radio Button组绑定同一变量控制 总共有八个控件,如果要一个一个绑定变量,并且写响应函数,将要花费很多时间精力,所以想用的方法就是都绑上同一个变量,这样当我点击某一个控件的时候, ...

  5. MFC中的MainFrame Dlg,App,Doc,View的关系

    MFC中的MainFrame Dlg,App,Doc,View的关系 MainFrame: 主框架类 Dlg 是Dialog 的缩写,表示对话框本身 App类就是这个SDI作为"程序&quo ...

  6. MFC中CString.format用法

    MFC中CString.Format的详细用法 收藏  在MFC程序中,使用CString来处理字符串是一个很不错的选择. CString既可以处理Unicode标准的字符串,也可以处理ANSI标准的 ...

  7. duilib进阶教程 -- 在MFC中使用duilib (1)

    由于入门教程的反响还不错,因此Alberl就以直播的形式来写<进阶教程>啦,本教程的前提: 1.请先阅读<仿迅雷播放器教程> 2.要有一定的duilib基础,如果还没,请先阅读 ...

  8. 如何在MFC中读写配置文件

    如何在MFC中读写配置文件 在我们写的程序当中,总有一些配置信息需要保存下来,以便完成程序的功能,最简单的办法就是将这些信息写入INI文件中,程序初始化时再读入.具体应用如下: 一.将信息写入.INI ...

  9. mfc c语言 编辑器,语法高亮编辑控件Scintilla在MFC中的简单使用

    项目中要使用代码编辑器,搜索之后,发现了强大的编辑器控件Scintilla. 1.简介 Scintilla是一款开源的语法高亮编辑器控件,官方网站:http://www.scintilla.org/. ...

最新文章

  1. 亿能 性能测试课程 2013年度 公开课 深圳站
  2. SAP Spartacus 单元测试开发规范
  3. java.lang.NoSuchMethodError: android.app.Notification$Builder.setChannelId
  4. 高并发来袭,面向Google编程的程序员要小心了!
  5. TelephonyManager与PhoneInterfaceManager应用
  6. cartographer探秘第四章之代码解析(五) --- 后端优化 --- 闭环约束1 --- PrecomputationGrid2D
  7. 解决pycharm问题:module 'pip' has no attribute 'main'
  8. 【UVA213】Message Decoding(读入技巧+二进制十进制转换)
  9. 关于阿克曼函数(akermann)非递归算法的一点见解 c++
  10. 油猴子 Tampermonkey
  11. 【美国大学生数学建模比赛】2020C题(总结和原创参赛论文)百度云请自取
  12. 真热闹,华为阿里腾讯加入中文编程争夺,抢风头的却另有其人
  13. 敏捷ACP 常用关键词整理 敏捷ACP 常用知识点整理
  14. 【829】【05参考工具书的使用】
  15. U盘容量由于刻录系统造成容量减少的解决方法
  16. 4路编码器脉冲计数器,8路DO,Modbus TCP模块 WJ96
  17. 【JS案例】分页器——使用原生JavaScript实现
  18. JAVA中类scanf的使用方法
  19. ZigBee的基本概念
  20. 不再惧怕!二叉树结构相关算法总结

热门文章

  1. 类脑计算机器人,机器人的类脑计算是什么?
  2. 认识IE6的隐私让上网冲浪更安全(转)
  3. 用户主要通过计算机软件与计算机进行交流,大学计算机基础(2015版)蔡绍稷,吉根林习题三-答案讲述.doc...
  4. nodejs爬虫爬取 喜马拉雅FM 指定主播歌单并下载
  5. 无人机无线Mesh自组网,CV5200远距离WiFi模组,实时通信传输技术
  6. 现代通信网复习资料(第一章:绪 论)
  7. 超硬核,Nacos实现原理详细讲解
  8. 生猪价格matlab,基于时间序列的BP神经网络猪肉价格预测
  9. Python调用有道、百度、彩云API实现自然语言翻译
  10. PR基础学习(一) 界面初步认识