mciSendString播放音乐

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mciSendString播放音乐相关的知识,希望对你有一定的参考价值。

#include <windows.h>
#include <mmsystem.h>
#pragma comment(lib, "WINMM.LIB")
int main(int argc, char *argv[])

mciSendString("open e://陈奕迅-落花流水.mp3", NULL, 0, NULL);
Sleep(50000);
return 0;

网上一大段复杂的代码看不懂,以上的却又无法播放出音乐……或者说我根本不理解每一句的作用和意思
期待你的帮助!

#include <mmsystem.h>
#pragma comment(lib, "winmm.lib")
上面2行是包含mm库的头文件和 编译时自动链接 winmm 库.
播放语句 要改一下:
去掉 mciSendString(" 。。。); 改用格式:

PlaySound (TEXT("D:\\path\\zzd.wav"), NULL, SND_ASYNC | SND_NODEFAULT);

其中 D:\\path\\zzd.wav 是你自己有的 音乐文件所在地,盘, 路径,文件夹,文件名。
例如,D:\\path\\folder\\music_name.mp3
最好不要用中文路径名,不要用中文文件名,路径名中间不要有空格,路径中单反斜杠用双反斜杠书写。
文件格式 可以是 wma, mp3,wav, 等。

int main(int argc, char *argv[]) 用 int main( ) 就可以了。
用 MS VC++ 6.0 编译器追问

#include
#include
#pragma comment(lib, "WINMM.LIB")
int main()

PlaySound (TEXT("e:\\陈奕迅-落花流水.mp3"), NULL, SND_ASYNC | SND_NODEFAULT);

Sleep(50000);
return 0;

还是没声音……

追答

你把 陈奕迅-落花流水.mp3 rename 或 copy 为 英文ASCII码文件名。例如 cyx.mp3
不要用中文名。

另外 用其它播放器试验一下,看看你的这个 mp3 文件本身 是不是 好的 文件。

参考技术A #include <windows.h>
#include <mmsystem.h>
#pragma comment(lib, "WINMM.LIB")
int main(int argc, char *argv[])

mciSendString(TEXT(" open e:\\\\陈奕迅-落花流水.mp3 alias mysong"), NULL, 0, NULL);
mciSendString(TEXT("play MySong"), NULL, 0, NULL);
Sleep(50000);
return 0;

追问

int main()

mciSendString(TEXT(" open e:\\陈奕迅-落花流水.mp3 alias mysong"), NULL, 0, NULL);
mciSendString(TEXT("play MySong"), NULL, 0, NULL);
Sleep(50000);
return 0;

头文件没变,还是没声音啊

追答

你复制了我的代码吗?我测试到是完全可以的,除了Sleep(50000);符号写错成全角的。其他都是正确了。
唯一不同的就是路径名你确认你的路径没错?

追问

没错……我也没听错……

追答

你把歌名改成全英文不带空格等特殊字符的试试

追问

已经改了,依然不行
同时调整位置,还是不行

追答

你把他放到同一路径,文件名为陈奕迅-落花流水.mp3,试试你的系统是否正常。如果播放不出,就是你的系统问题,而不是编写的问题。

本回答被提问者采纳

mciSendString为啥有的MP3音乐播放不出来

GetShortPathName(szFile,str,sizeof(str));
//mciSendString函数在处理长文件名、中文文件名、空格等会有些问题,用此函数解决这类问题。
ListBox_InsertString(hwnd1,-1,str);
mciSendString(stop,"",0,NULL);
wsprintf(cmd,"play %s",str);
mciSendString(cmd,"",0,NULL);//播放音乐函数
wsprintf(stop,"close %s",str);
wsprintf(abc,"setaudio %s volume to %d",str,v);
mciSendString(abc,"",0,NULL); 用这段去播放音乐的时候,有的音乐可以播,有的就不行,不是文件名和路径问题,是怎么回事啊,照百度百科那样,第一句就说CStatic 没有定义,还有别人说的Dim 也是没有定义,怎么回事啊,我用的是VC6.0 难道我是用错了函数?做一个小播放器,是用什么函数的啊?

参考技术A 如:
TCHAR szBuffer[256] = 0;
TCHAR Buffer[256] = 0;
wsprintf(szBuffer,L"cg.mp3");
wsprintf(Buffer,L"open %s",szBuffer);
mciSendString(Buffer,NULL,0,NULL); //打开设备
wsprintf(Buffer,L"play %s repeat",szBuffer);
mciSendString(Buffer,NULL,0,NULL); //播放

将上面的改为:
TCHAR szBuffer[256] = 0;
TCHAR Buffer[256] = 0;
wsprintf(szBuffer,L"cg.mp3");
wsprintf(Buffer,L"open \"%s\"",szBuffer);
mciSendString(Buffer,NULL,0,NULL); //打开设备
wsprintf(Buffer,L"play \"%s\" repeat",szBuffer);
mciSendString(Buffer,NULL,0,NULL); //播放
参考技术B mciSendString函数,我在实验N次后,发现文件路径不能有空格,如:路径中的文件有“Program Files”这个文件夹包含了空格。这个路径将被视为无效路径而不予执行其他有关操作,同时在播放之前和退出程序之前插入一条关闭指令:mciSendString "close " & 音乐文件, vbNullString, 0, 0 (注:“音乐文件”为全局变量,音乐文件=文件路径+文件名),绝对有好处!

以上是关于mciSendString播放音乐的主要内容,如果未能解决你的问题,请参考以下文章

VB mcisendstring让音乐循环播放

如何用mciSendCommand()/mciSendString() 函数指定声卡播放音乐

c语言如何用mciSendString来实现音乐播放功能

怎样用MFC做一个音乐播放器,可以实现播放,暂停,上一首,下一首和显示播放列表的基本功能。谢谢!

VB mciSendString(Api)怎样实现循环播放音乐?

API函数mciSendString如何顺序播放