媒体控制接口(Media Control Interface,缩写MCI)是由微软和IBM开发的一个高级应用程序接口(API),功能是控制连接到一台Windows或其他计算机的多媒体外部设备(例如播放机、音频控制器)MCI使编写某些类别的多媒体程序(例如播放各类媒体文件、录制声音)变得非常简单,只需将命令作为字符串传递。
使用MCI媒体技术播放声音我们有两种方式:
- 使用命令方式,这种方式比较复杂
- 使用字符串的方式
使用到的函数
MciSendString()
// 出错返回非零值(错误代码)可用mciGetErrorString获得错误的文本描述
MCIERROR mciSendString(
LPCTSTR lpszCommand, // 指向以null结尾的命令字符串:”命令 设备[ 参数]”
LPTSTR lpszReturnString,// 指向接收返回信息的缓冲区,为NULL时不返回信息
UINT cchReturn, // 上述缓冲区的大小
HANDLE hwndCallback // 在命令串中含notify时,它指定一个回调窗口的句柄, 一般为NULL
);
注意:在使用此函数之前,需要加载和映入mmsystem.h的库文件
#include <MMSystem.h>
#pragma comment(lib,"Winmm.lib")
mciSendString是用来播放多媒体文件的API指令,可以播放MPEG,AVI,WAV,MP3,等等,下面我们来介绍一下它的使用方法:
在介绍使用方法之前,先说明xxx表示的是声音文件的所在位置
1、打开多媒体文件。
mciSendString(_T("play xxx"), NULL, 0, NULL);
2、播放多媒体文件。
mciSendString("play xxx",buf,sizeof(buf),NULL);
3、如果想全屏播放:
mciSendString("play xxxfullscreen",buf,sizeof(buf),NULL);
4、暂停播放。
mciSendString("pause xxx",buf,sizeof(buf),NULL);
5,停止播放。
mciSendString("stop xxx",buf,sizeof(buf),NULL);
6,关闭媒体设备文件。
mciSendString("closs xxx",buf,sizeof(buf),NULL);
7,得到所播放文件的长度。
char sPosition[256];
long lLength;
mciSendString("Status xxx length", sPosition, 255,0);
lLength=strtol(sPosition, NULL, 10);
其中lLength就是所播放文件的长度。注意:该长度单位是毫秒。
8,得到所播放文件的声音大小。
char chVolume[256];
long lVolume;
mciSendString("status xxx volume",chVolume,255,0);lVolume=strtol(chVolume,NULL,10);
其中lVolume就是所播放文件的声音大小。
9,到你指定的位置播放。
CString step1;long lPosition;
lPosition=100;
step1.Format("seek xxx to %ld",lPosition);
mciSendString(step1.GetBuffer(step1.GetLength()),buf,sizeof(buf),0);
其中lPosition就是要到的播放位置,可以由你指定。
9,其他一些关于MCI的操作。
record 录音
save 保存
capacity 查询MCI媒体设备的带载能力
info 设备的信息