用C语言播放mp3格式的音乐

前言

之前有写过在c程序里添加背景音乐,用的是PlaySound这个函数不过这个函数是只能播放wav格式的音乐。
这次是用mciSendString函数可以用来播放MP3格式的音乐。
用这个函数的时候下载的音乐格式一定要是MP3的,
但是网易云下载的音乐虽然是MP3格式的但是在这个函数是播放不了的,因为下载的音乐其实是flac格式,
所以播放不了,所以大家要在qq音乐下载才可以播放。

如何用c语言插入(背景)音乐

mciSendString函数简介

mciSendString是用来播放多媒体文件的API指令,可以播放MPEG,AVI,WAV,MP3,等等,
需要的头文件#include <mmsystem.h>

基本的播放音乐模板

#include<windows.h>
#include<mmsystem.h>
#pragma comment(lib,"Winmm.lib")
int main(void)
{
	mciSendString("open 1.mp3 alias bkmusic", NULL, 0, NULL);
	//open指令打开需要播放的音乐,alias后面制定了前面文件路径的别名,以后想要操作这个文件直接使用这个别名就可以了.
	//如果音乐文件和我们的debug文件夹在同一目录下,就可以像我这样不用写路径,直接音乐名。
	//如果音乐文件不是上面的情况就得写清楚路径。
	//例: D盘下的demo目录有一个叫1.MP3的文件
	//mciSendString("open D:\\demo\\1.mp3 alias bkmusic", NULL, 0, NULL);
	mciSendString("play bkmusic repeat", NULL, 0, NULL);     //循环播放音乐
	system("pause");
	return 0;
}
mciSendString("stop bkmusic", NULL, 0, NULL);		//停止播放音乐
mciSendString("close bkmusic", NULL, 0, NULL);		//关闭音乐

各种报错的解决办法

问题如下:
在这里插入图片描述
解决如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

上述问题好像只有vs版本的编译器才会出现。vc6.0不会出现上述错误。

如果各位小伙伴,还有问题。可以用我已经弄好的模板。
我已经上机测试,都是没问题的。

vc6.0 播放音乐项目模板
链接:https://pan.baidu.com/s/1Qa8sJJKxAwbqHW0Es1m8fA 
提取码:m88a 
vs2010 播放音乐项目模板
链接:https://pan.baidu.com/s/16nlP62c7HmNJAQn0AnznSg 
提取码:62q5 

Win10系统 vs 2019打开vs 2017、vs 2010等低版本.sln文件方法

C语言播放背景音乐MP3需要使用相应的库来实现。一个常用的库是libmad,它可以解码MP3文件。下面是一个简单的示例代码,演示如何使用libmad播放背景音乐MP3: ```c #include <stdio.h> #include <mad.h> #define BUFSIZE 4096 int main() { FILE *fp; struct mad_stream stream; struct mad_frame frame; struct mad_synth synth; mad_timer_t timer; unsigned char buf[BUFSIZE]; int read, ret; // 打开MP3文件 fp = fopen("background.mp3", "rb"); if (fp == NULL) { printf("无法打开MP3文件\n"); return -1; } // 初始化libmad结构体 mad_stream_init(&stream); mad_frame_init(&frame); mad_synth_init(&synth); // 读取和解码MP3数据 while (1) { // 从文件中读取数据 read = fread(buf, 1, BUFSIZE, fp); if (read == 0) { break; } // 将数据提供给libmad进行解码 mad_stream_buffer(&stream, buf, read); ret = mad_frame_decode(&frame, &stream); if (ret != 0) { printf("解码错误\n"); break; } // 合成音频 mad_synth_frame(&synth, &frame); // 播放音频(这里只是简单的输出PCM数据) for (int i = 0; i < synth.pcm.length; i++) { putchar(synth.pcm.samples[0][i]); } } // 清理libmad结构体 mad_synth_finish(&synth); mad_frame_finish(&frame); mad_stream_finish(&stream); // 关闭文件 fclose(fp); return 0; } ``` 这段代码使用libmad库读取并解码MP3文件,并将合成的PCM数据简单地输出到控制台。你可以将PCM数据通过合适的方式进行播放,比如使用音频库或API进行播放。 请注意,这只是一个简单的示例,对于更复杂的音频播放需求,可能需要使用更专业的音频处理库或API来实现。
评论 68
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值