我的编程空间,编程开发者的网络收藏夹
学习永远不晚

C语言使用mciSendString实现播放音乐功能

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

C语言使用mciSendString实现播放音乐功能

使用 mciSendString 播放音乐

mciSendString 支持 mp3、wma、wav、mid 等多种媒体格式,使用非常简单。这里做一个简单的范例,用 mciSendString 函数播放 MP3 格式的音乐,代码如下:

// 编译该范例前,请把 music.mp3 放在项目文件夹中
// 发布时,请把 music.mp3 和编译的 exe 放在一起
// 编译环境:VC6~VC2019 + EasyX_20210115
//
#include <graphics.h>
#include <conio.h>
// 引用 Windows Multimedia API
#pragma comment(lib, "Winmm.lib")
 
int main()
{
    initgraph(640, 480);
 
    // 打开音乐
    mciSendString(_T("open music.mp3 alias mymusic"), NULL, 0, NULL);
 
    outtextxy(0, 0, _T("按任意键开始播放"));
    _getch();
 
    // 播放音乐
    mciSendString(_T("play mymusic"), NULL, 0, NULL);
 
    outtextxy(0, 0, _T("按任意键停止播放"));
    _getch();
 
    // 停止播放并关闭音乐
    mciSendString(_T("stop mymusic"), NULL, 0, NULL);
    mciSendString(_T("close mymusic"), NULL, 0, NULL);
 
    outtextxy(0, 0, _T("按任意键退出程序"));
    _getch();
    closegraph();
    return 0;
}

简单讲解一下:

一定要引用 Winmm.lib 库文件。这个范例中是通过 #pragma comment 命令引用的,也可以在项目属性中设置,这里不作介绍。

mciSendString 函数的功能很强大,甚至可以播放视频,不过这里就不多作介绍了,详细请参见 MSDN。多数情况只需要用到第一个参数,将另外三个参数置为 NULL, 0, NULL 即可。

第一个参数是多媒体命令字符串,不区分大小写。程序中,先要通过 open 命令打开 background.mp3,并用 alias 指定了别名为“mymusic”,这样在之后的代码中就可以方便的通过“mymusic”这个别名访问该音乐了。当然,并不是必须要指定别名,每次通过文件名访问也是可以的。

open 后面的 mp3 用绝对路径或相对路径都可以。

然后就是:play mymusic 开始播放,stop mymusic 停止播放,close mymusic 关闭文件。

如果需要同时播放多个音乐,请为不同的音乐指定不同的别名,然后分别操作即可。

不再需要播放的音乐,请记得用 close 命令关闭。

另外还有一个 PlaySound 函数也可以用来播放声音,不过可惜不支持 mp3 / wma,这里就不多做介绍了。

一些有用的多媒体命令:

从头播放 xxx:

"play xxx from 0"

循环播放 .mp3 文件(.wma 文件同样可以):

"open xxx.mp3"
"play xxx.mp3 repeat"

循环播放 .wav 文件(.mid 文件同样可以):

"open xxx.wav type MPEGVideo"
"play xxx.wav repeat"

关闭当前程序打开的所有多媒体文件:

"close all"

如果文件名中有空格,需要用双引号引起来文件名(注意转义):

mciSendString("open \"D:\\My Music\\俞丽拿 梁祝 化蝶.mp3\" alias mymusic", NULL, 0, NULL);

使用 mciSendCommand 播放音乐

mciSendCommand 与 mciSendString 的功能类似,只是控制方式略有区别。因此,对 mciSendCommand 不做过多介绍,只看一个使用例子吧。以下范例实现 mp3 的循环播放:

// 该范例演示使用 mciSendCommand 函数循环播放 mp3
// 编译环境:VC2008~VC2019 + EasyX_20210115
//
#include <graphics.h>
#include <Digitalv.h>
#include <conio.h>
#pragma comment(lib, "winmm.lib")
 
int main()
{
    initgraph(640, 480);
 
    // 打开音乐文件
    MCI_OPEN_PARMS mciOpenParms;
    mciOpenParms.lpstrDeviceType = L"sequencer";
    mciOpenParms.lpstrElementName = L"R:\\Downloads\\test.mp3";
    mciSendCommand(NULL, MCI_OPEN, MCI_OPEN_ELEMENT | MCI_WAIT, DWORD_PTR(&mciOpenParms));    // 打开指定媒体文件
    UINT wDeviceID = mciOpenParms.wDeviceID;    // 返回的 Device ID 需要保存下来,以便实现后续控制
 
    outtextxy(0, 0, L"按任意键开始播放");
    _getch();
 
    // 播放音乐
    MCI_PLAY_PARMS mciPlayParms;
    mciSendCommand(wDeviceID, MCI_PLAY, MCI_DGV_PLAY_REPEAT, DWORD_PTR(&mciPlayParms));
 
    outtextxy(0, 0, L"按任意键停止播放");
    _getch();
 
    // 停止播放并关闭音乐
    mciSendCommand(wDeviceID, MCI_STOP, 0, NULL);    // 停止播放
    mciSendCommand(wDeviceID, MCI_CLOSE, 0, NULL);    // 关闭音乐
 
    outtextxy(0, 0, L"按任意键退出程序");
    _getch();
    closegraph();
    return 0;
}

解决某些 MP3 无法播放的问题

有些 mp3 无法用 mciSendString 播放,是因为用了比较大的封面,我测试过一个 mp3 的封面尺寸是 1824x1824,直接无法播放。将封面尺寸修改为 500x500,顺利播放。当然,更简单的办法是直接移除封面。这里给大家推荐个工具:Mp3tag,官网:https://www.mp3tag.de,Mp3tag 的操作方法非常简单,点点鼠标就能搞定,这里不再详述。

使用 PlaySound 函数播放音乐

PlaySound 可以用来播放 wav 和系统声音,使用很简单,一些常用的用法如下:

// 注意:
// 1. 需要使用预编译指令 #pragma comment(lib, "winmm.lib") 链入库文件
// 2. 第一个参数是字符串,注意使用程序中约定的字符集,例如 Unicode 字符集需要在字符串前面加 L
//
PlaySound("C:\\SOUNDS\\BELLS.WAV", NULL, SND_SYNC);                // 播放 Bells.wav,并等待直到播放结束
PlaySound("C:\\SOUNDS\\BELLS.WAV", NULL, SND_ASYNC);            // 后台播放 Bells.wav,函数立即返回
PlaySound("SystemExclamation", NULL, SND_ASYNC);                // 后台播放系统定义的 SystemExclamation 声音
PlaySound("C:\\SOUNDS\\BELLS.WAV", NULL, SND_LOOP | SND_ASYNC);    // 后台循环播放 Bells.wav
PlaySound(NULL, NULL, 0);                                        // 停止后台播放

到此这篇关于C语言使用mciSendString实现播放音乐功能的文章就介绍到这了,更多相关C语言mciSendString播放音乐内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

C语言使用mciSendString实现播放音乐功能

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

C语言使用mciSendString实现播放音乐功能

mciSendString 支持 mp3、wma、wav、mid 等多种媒体格式,使用非常简单。这篇文章就来为大家介绍一下C语言如何使用mciSendString实现播放音乐功能,需要的可以参考一下
2023-02-14

怎么使用C语言实现音乐播放器

本文小编为大家详细介绍“怎么使用C语言实现音乐播放器”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用C语言实现音乐播放器”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。介绍该程序是一个小的DEMO,实现了以
2023-07-05

java使用JMF实现音乐播放功能

JMF实际上是Java的一个类包。JMF 2.1.1技术提供了先进的媒体处理能力,从而扩展了Java平台的功能。这些功能包括:媒体捕获、压缩、流转、回放,以及对各种主要媒体形式和编码的支 持,如M-JPEG、H.263、MP3
2023-05-31

C语言如何实现音乐播放器

本文小编为大家详细介绍“C语言如何实现音乐播放器”,内容详细,步骤清晰,细节处理妥当,希望这篇“C语言如何实现音乐播放器”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。实例代码如下:#include
2023-06-08

C语言实现音乐播放器的示例代码

这篇文章主要和大家分享了一个C语言的小DEMO,可以实现音乐播放器功能,文中的示例代码讲解详细,具有一定的借鉴价值,需要的可以参考一下
2023-02-26

python实现闹钟定时播放音乐功能

可以使用Python的time模块和pygame库来实现闹钟定时播放音乐的功能。首先,需要安装pygame库:```pip install pygame```然后,可以按照以下代码来实现闹钟定时播放音乐的功能:```pythonimport
2023-08-16

如何使用html实现音乐播放

小编给大家分享一下如何使用html实现音乐播放,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在html中可以使用“
2023-06-07

Android语音播放功能怎么实现

Android平台上可以使用MediaPlayer或者SoundPool来实现语音播放功能。使用MediaPlayer实现语音播放功能:首先在AndroidManifest.xml文件中添加以下权限:然后在Activity的代码中创建Med
2023-10-22

PHP怎么实现音乐播放器的隐藏功能

要实现音乐播放器的隐藏功能,可以使用PHP结合JavaScript来实现。首先,在PHP中定义一个变量来表示音乐播放器的隐藏状态,例如$hidden。默认情况下,$hidden的值为false,表示音乐播放器是可见的。然后,在页面中使用Ja
2023-08-29

python怎么实现闹钟定时播放音乐功能

要实现闹钟定时播放音乐的功能,可以使用Python的标准库中的time和os模块,以及第三方库pygame。下面是一个简单的示例代码:```pythonimport timeimport osfrom pygame import mixer
2023-08-17

怎么在Android中利用SeekBar实现音乐播放器功能

怎么在Android中利用SeekBar实现音乐播放器功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一.Demo简介 利用AIDL为Activity绑定服务,利用Han
2023-05-31

C#如何实现语音播报功能

这篇文章主要介绍“C#如何实现语音播报功能”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C#如何实现语音播报功能”文章能帮助大家解决问题。环境:window10vs2019 16.5.5.netfr
2023-06-29

Android使用Service及BroadcastReceiver实现音乐播放器

播放音乐,我们需要在AndroidManifest.xml文件添加权限创建Service,需要在AndroidManifest.xml文件配置现在我们创建了一个叫做MusicService的Service,它是继承Service类的 话不多
2022-06-06

C++ Qt如何实现音视频播放功能

这篇文章将为大家详细讲解有关C++ Qt如何实现音视频播放功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。由于最近着手的Qt项目需要视频播放 自己做的时候踩了很多坑 避免以后踩坑 故在此记
2023-06-21

使用java怎么制作一个音乐播放器功能

这期内容当中小编将会给大家带来有关使用java怎么制作一个音乐播放器功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。具体内容如下package baidu;import java.awt.*;impor
2023-05-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录