【精选】使用mciSendString()函数的相关问题 您所在的位置:网站首页 播放命令怎么写 【精选】使用mciSendString()函数的相关问题

【精选】使用mciSendString()函数的相关问题

2023-11-14 08:26| 来源: 网络整理| 查看: 265

使用mciSendString()函数的相关问题 函数功能

mciSendString() 函数可以将它看做是一个API指令的合集,用于播放一些多媒体文件,可以是音乐、视频。

那么什么是API指令? 通俗地解释,就是一些设计包装好的功能函数。比如常见的abs函数(用于得到一个式子的绝对值)、fopen、fread等,能够对文件进行相应的操作。而mciSendString也有它独有的功能。我们可以使用它,在你的程序中播放音乐。

函数用法

函数原型

MCIERROR mciSendString ( LPCTSTR lpszCommand//带有命令功能的字符串 LPTSTR lpszReturnString, UINT cchReturn, HANDLE hwndcallback )

这样的函数原型看上去颇为复杂,其实简单使用时并没有想象中的如此恐怖。

让我们换个角度来看

mciSendString(操作,文件位置,NULL,0,NULL) 这里的操作一般有open,play,close三种文件位置就是你想打开的多媒体文件在电脑中的路径而后面的NULL,0,NULL 基本属于固定格式

具体使用

先open,再play,最后close

如下

mciSendString("open D:\\music.mp3 alias m",NULL,0,NULL); mciSendString("play m",NULL,0,NULL); mciSendString("close m",NULL,0,NULL);

第一行open中,能注意到文件后面跟了一个alias,它的意思是别名,作动词也是“亦名,也叫作”的意思,也就是后续可以将music.mp3这么一条字符串简写成“m”。

还值得注意的是第二行play m的后面还可以加上特定的指令,如repeat,wait。像上面什么都不加的指令就只会播放该文件一遍。而repeat能够重复播放。

close是关闭播放完的文件,方便后续打开。

掌握以上内容后,还没结束,会发现运行时会出现各种报错,主要可能出现以下问题。

问题解析

文件路径的写法有误。

比如我在D盘中放了一个music的MP3文件,套用mciSendString函数该怎么写?是***D:\music.mp3***吗?需要引起注意:正常的路径确实是一道反斜杠,但是在程序中容易和转义字符\n,\b,\t等搞混。所以和打印一句话时处理打印双引号的方法类似:

printf("他大声说:\"啊对对对!\"\n");

即在写文件路径时,需要将单反斜杠变成双反斜杠。

未加上相应头文件

#pragma comment(lib,"Winmm.lib")

这条语句的作用是引用Windows Multimedia API。只有引用了才能使用对应功能嘛。这就解决了以下报错 3. 实参形参不兼容问题

每个人使用的编译器不同,默认的标准和选项也不同,有些可能会碰到以下问题 在这里插入图片描述 这都是因为项目属性中关于字符集,默认使用的是Unicode字符集。那么如何解决报错?有以下方法

在mciSendString()中的引号前加上L或者_T,使得参数兼容一劳永逸:

在上方的“项目”→最底下的“项目属性”→配置属性中的“高级”一栏→将字符集中的使用Unicode字符集 改成 使用多字节字符集。

函数通过运行但无法播放问题

可能有很多人跟我有一样的困惑,明明以上的问题都注意到了,设置改了,头文件加了,路径也写对了,但是还是无法播放。

笔者试了很多次,总结了以下两点:

可再次试验性检查以上几点有无错误,尝试在play操作后面,添加wait指令(如果原本就添了repeat就替换一下),并且在该语句之后添加system(“pause”);语句,然后运行观察,是否成功播放,如果成功,则上述无误。至于为什么直接repeat放不出来,像是还没有播放就已经结束的原因。而wait指令——等待播放完再关闭正好避免了这一点。

主动更改多媒体文件路径,开始笔者用一个特定且特别长的路径,万万播放不出来,后来实验发现,如果将文件就放在该项目文件里,成功的几率就会大很多,而且可以不用写路径,直接敲文件名就行,如下:

mciSendString("open music.mp3 alias m",NULL,0,NULL);

以上总结了一些实验性的成果,希望对你有所帮助。

PS:还有一点很多博主已经提到过,这里再说一下,mciSendString函数是可以播放多媒体文件,常见的有mp3格式,但是网易云的格式不同, 在这里插入图片描述

​ 是ncm格式,好像只能在网易云app里才能播放,似乎不只有音频内容,还 有封面、歌词等,所以用mciSendString是打不开的。

查相关资料的时候,发现一个博主用这个函数模拟了一个mp3随身听的程序,很有意思,有时间也试着做一个,到时候再写一篇博客。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有