写点什么

MFC|MediaPlayer 基本功能使用

  • 2022 年 10 月 07 日
    河北
  • 本文字数:1554 字

    阅读完需:约 5 分钟

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();
复制代码

获取视频播放的控件信息以及视频播放器的设置信息,后续在进行控制播放以及页面风格时会用到。


直接启动程序默认的视频播放器,会发现默认的视频播放器中会有一个菜单栏,但是在属性中无法去除,效果如下图所示:

几经查找资料才得以解决,如果有需要的友友们,可以记录下来,实在是太隐蔽了!


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

m_mediaPlayer.put_uiMode(L"None");
复制代码

下面,我来介绍下对于 MediaPlayer 视频播放器中一些简单功能实现

1:播放单一视频

m_mediaPlayer.put_URL(m_strSelPlay);
复制代码

使用当前函数时,唯一需要注意的是:一定要记住参数写视频的绝对路径,千万不可以写相对路径!!

2:暂停播放视频

m_control.pause();
复制代码

在程序使用过程中,暂停当前视频后,想要再继续播放此视频时,就不能使用第一个步骤中的 put_URL 方法了,应该用下面这句:

m_control.play();
复制代码

3:停止视频播放

m_control.stop();
复制代码

4:快进后退视频

当前操作是快进整个视频,使用该功能后视频以快速方式进行播放,对应代码如下:

m_control.fastForward();
复制代码

当前操作的是后退整个视频,对应代码如下:

m_control.fastReverse();
复制代码

5:指定视频的播放速度

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

double dRate = 1.3;m_setting.put_rate(dRate);
复制代码

6:音量设置

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

在这里,有一种特殊情况,叫做静音。

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

//静音设置m_setting.put_mute(true);//非静音设置m_setting.put_mute(false);
复制代码

7:视频播放模式

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

分别对应的设置,如下所示:

//顺序播放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);
复制代码


用户头像

书山有路勤为径,学海无涯苦作舟 2022.07.01 加入

擅长语言:C++ 涉及语言:Python

评论

发布
暂无评论
MFC|MediaPlayer基本功能使用_c++_中国好公民st_InfoQ写作社区