MFC中MediaPlayer基本功能使用
首先介绍下,当前文章中的基本功能
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基本功能使用相关推荐
- MFC中 dc.DrawText()与dc.TextOut()从功能上讲有什么区别?
这根本是两个函数,dc.TextOut(x,y,str)调用的是MFC中CClientDC类的成员函数TextOut,而TextOut(dc,x,y,length)是WIN32的API函数,其中的dc ...
- MFC中制作一个似命令行的输入框
在做一个MFC软件的时候有一个这样的需求,就是要有类似与AutoCad的命令输入框,如下图所示: 本着不重写已有功能的原则,在MFC中发掘了一圈,没发现有可用的现成控件,上网搜了一下,发现有人做过,但 ...
- MFC中的几个常用类——CWnd
2019独角兽企业重金招聘Python工程师标准>>> 1 窗口类 1.1 概述 CObject └CCmdTarget └CWnd CWnd是MFC窗口类的 基类,提供了微软基础类 ...
- 实现MFC中Radio Button组绑定同一变量控制
实现MFC中Radio Button组绑定同一变量控制 总共有八个控件,如果要一个一个绑定变量,并且写响应函数,将要花费很多时间精力,所以想用的方法就是都绑上同一个变量,这样当我点击某一个控件的时候, ...
- MFC中的MainFrame Dlg,App,Doc,View的关系
MFC中的MainFrame Dlg,App,Doc,View的关系 MainFrame: 主框架类 Dlg 是Dialog 的缩写,表示对话框本身 App类就是这个SDI作为"程序&quo ...
- MFC中CString.format用法
MFC中CString.Format的详细用法 收藏 在MFC程序中,使用CString来处理字符串是一个很不错的选择. CString既可以处理Unicode标准的字符串,也可以处理ANSI标准的 ...
- duilib进阶教程 -- 在MFC中使用duilib (1)
由于入门教程的反响还不错,因此Alberl就以直播的形式来写<进阶教程>啦,本教程的前提: 1.请先阅读<仿迅雷播放器教程> 2.要有一定的duilib基础,如果还没,请先阅读 ...
- 如何在MFC中读写配置文件
如何在MFC中读写配置文件 在我们写的程序当中,总有一些配置信息需要保存下来,以便完成程序的功能,最简单的办法就是将这些信息写入INI文件中,程序初始化时再读入.具体应用如下: 一.将信息写入.INI ...
- mfc c语言 编辑器,语法高亮编辑控件Scintilla在MFC中的简单使用
项目中要使用代码编辑器,搜索之后,发现了强大的编辑器控件Scintilla. 1.简介 Scintilla是一款开源的语法高亮编辑器控件,官方网站:http://www.scintilla.org/. ...
最新文章
- 亿能 性能测试课程 2013年度 公开课 深圳站
- SAP Spartacus 单元测试开发规范
- java.lang.NoSuchMethodError: android.app.Notification$Builder.setChannelId
- 高并发来袭,面向Google编程的程序员要小心了!
- TelephonyManager与PhoneInterfaceManager应用
- cartographer探秘第四章之代码解析(五) --- 后端优化 --- 闭环约束1 --- PrecomputationGrid2D
- 解决pycharm问题:module 'pip' has no attribute 'main'
- 【UVA213】Message Decoding(读入技巧+二进制十进制转换)
- 关于阿克曼函数(akermann)非递归算法的一点见解 c++
- 油猴子 Tampermonkey
- 【美国大学生数学建模比赛】2020C题(总结和原创参赛论文)百度云请自取
- 真热闹,华为阿里腾讯加入中文编程争夺,抢风头的却另有其人
- 敏捷ACP 常用关键词整理 敏捷ACP 常用知识点整理
- 【829】【05参考工具书的使用】
- U盘容量由于刻录系统造成容量减少的解决方法
- 4路编码器脉冲计数器,8路DO,Modbus TCP模块 WJ96
- 【JS案例】分页器——使用原生JavaScript实现
- JAVA中类scanf的使用方法
- ZigBee的基本概念
- 不再惧怕!二叉树结构相关算法总结
热门文章
- 类脑计算机器人,机器人的类脑计算是什么?
- 认识IE6的隐私让上网冲浪更安全(转)
- 用户主要通过计算机软件与计算机进行交流,大学计算机基础(2015版)蔡绍稷,吉根林习题三-答案讲述.doc...
- nodejs爬虫爬取 喜马拉雅FM 指定主播歌单并下载
- 无人机无线Mesh自组网,CV5200远距离WiFi模组,实时通信传输技术
- 现代通信网复习资料(第一章:绪 论)
- 超硬核,Nacos实现原理详细讲解
- 生猪价格matlab,基于时间序列的BP神经网络猪肉价格预测
- Python调用有道、百度、彩云API实现自然语言翻译
- PR基础学习(一) 界面初步认识