用标准C++做一个mp3播放器

张大山No100 2006-07-26 11:01:31
请问哪位高手会用标准 C++ 做一个不要窗口的 mp3 播放器,即播放功能用命令实现,像linux 下的有些命令mp3 模式下的mp3 播放器。(例如用 "mp3playe d:\今天.mp3" 来播放d:\今天.mp3文件。)
小弟最近做一个模块,就是做这个 mp3 播放器,可是一点头绪都没有,请各们大侠给小弟指点指点!
...全文
1506 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
daipeanut 2006-08-02
  • 打赏
  • 举报
回复
mark
gohan 2006-07-29
  • 打赏
  • 举报
回复
楼主我做了一个使用mci方法的程序符合你的标准!
//:音频播放 By Gohan
//在链接是需要附加winmm.lib
#include <iostream>
#include <string>
#include "windows.h"
#include "mmsystem.h"
using namespace std;


main(int argc,char** argv){
// mciSendString("open l.mp3", NULL, 0, NULL);
char returnstr[200]={0};
unsigned long time=0;
if(argc!=2){
cout<<"没有写参数!!参数注明音频路径\n如:c:\\music\\1.mp3"<<endl;
//OnExit();
}else{
string Path(argv[1]);
string::size_type pos=Path.find_first_of('\\',0);
while(pos!=string::npos){
Path.at(pos)='/';
pos=Path.find_first_of('\\',pos);
}
string status="status "+Path+" length";
string play="play "+Path+" wait";
char returnstr[200];
mciSendString(status.c_str(), returnstr,200, NULL);
if (strlen(returnstr)==0) exit(1);
printf("总时长%s毫秒",returnstr);
mciSendString(play.c_str(),returnstr,200,NULL);

}



}
演示程序http://gohan.web178.hezuwang.net/bbs/viewthread.php?tid=2&extra=page%3D1
在我的论坛下载
ray_zhaoxin 2006-07-28
  • 打赏
  • 举报
回复
lame的效果是很不错的,直接有lib可用,使用directsound不一定要用双缓冲,因为你不用混音,一个辅缓冲就够了,但是要处理好lock和播放的间隔,这个是关键
ray_zhaoxin 2006-07-27
  • 打赏
  • 举报
回复
用lame的mp3解码就可以了,播放用directsound,这个是我的专长啊,哈哈
gohan 2006-07-27
  • 打赏
  • 举报
回复
好像用win32 sdk可以实现console的mp3播放,不过标准 c++的库,我不知道可以不
mopyman 2006-07-27
  • 打赏
  • 举报
回复
解码部分跨平台没问题,播放部分跨平台是不可能的,windows和linux的底层音频播放接口是不同的
张大山No100 2006-07-27
  • 打赏
  • 举报
回复
我还没有做,不晓得Lame 的质量,很感谢 mopyman 大哥,给我了很大启示,我会试试看的

我做的目标是做一个在 windows 下可运行,在Linux 下也可以编译运行的程序,也就是在
windows/Linux 可以移植的程序,不知道可不可以实现。
因为我担心做出来不能在Linux 下编译通过
mopyman 2006-07-27
  • 打赏
  • 举报
回复
To ray_zhaoxin(好):
Lame的解码器好用吗?解码质量如何?我用过mpg123,感觉不是很好,某些mp3会出现很大的噪音。
还有,用DirectSound播放的时候要双缓冲或多缓冲吗?我没用,感觉暂停然后重新播放的时候,会出现噪音!
chenhu_doc 2006-07-27
  • 打赏
  • 举报
回复
http://sourceforge.net/

到这里找找。。。。
mapserver 2006-07-26
  • 打赏
  • 举报
回复
关键是音频解码器。
mopyman 2006-07-26
  • 打赏
  • 举报
回复
播放程序在一个单独的线程里,和主程序并行
mopyman 2006-07-26
  • 打赏
  • 举报
回复
这有何难呢,如果自己解码就比较麻烦了,有很多免费的解码器可以用的,mpg123,Lame也有解码器,解码之后windows平台上可以用DirectSound或WaveOut API来播放。这些东西都是现成的,做个能用播放器还是不成问题的。我做过,GUI和Console下播放都没问题,都是用多线程播放的。
OpenHero 2006-07-26
  • 打赏
  • 举报
回复
看mp3的格式
然后看声音处理的一些C++的函数库

或者直接找开源的mp3播放器代码

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧