求libmpg123.so.0的使用方法.该怎么解决

求高手帮我看看,打开来是这样的,是不是中毒了,怎么解决_百度知道求LibMPG123的使用方法。该怎么处理 - VC当前位置:& &&&求LibMPG123的使用方法。该怎么处理求LibMPG123的使用方法。该怎么处理&&网友分享于:&&浏览:52次求LibMPG123的使用方法。。。本帖最后由 mm 于
03:04:27 编辑
最近我写的程序要灵活播放mp3,播放好多不到1秒的小mp3文件。
DirectShow定位不准,有的文件打开就从一半开始播放。。。一共就不足秒,这。。。
但是下载下来了LibMPG123,编辑了dll文件。。。但是现在只是勉强能用来播放mp3而已。。。
问下有没有办法像CDXGraph类一样的现成的类?
//&mp3_to_wav.cpp&:&定义控制台应用程序的入口点。
#include&"stdafx.h"
static&int&which&=&0;
static&BYTE&buffer[8192];
static&BYTE&outbuf[2][1638400];
static&HWAVEOUT&_ghWaveOut&=&NULL;
static&HANDLE&_ghEvent&=&NULL;
static&WAVEHDR&WaveHdr[2];
static&int&playSetup(long&rate,&int&chanel)
int&err&=&0;
WAVEFORMATEX&
waveform.wFormatTag&=WAVE_FORMAT_PCM;
waveform.nChannels&=
waveform.nSamplesPerSec&=
waveform.nAvgBytesPerSec=rate*
waveform.nBlockAlign&=rate*chanel/8;
waveform.wBitsPerSample&=16;
waveform.cbSize&=0;
_ghEvent&=&CreateEvent(NULL,&FALSE,&FALSE,&NULL);
err&=&waveOutOpen(&_ghWaveOut,&WAVE_MAPPER,&&waveform,&(DWORD)_ghEvent,&0,&CALLBACK_EVENT);
memset(WaveHdr,&0,&sizeof(WaveHdr));
WaveHdr[1].dwLoops&=&1;
WaveHdr[0].dwLoops&=&1;
waveOutPrepareHeader(_ghWaveOut,&&WaveHdr[1],&sizeof(WAVEHDR));
waveOutPrepareHeader(_ghWaveOut,&&WaveHdr[0],&sizeof(WAVEHDR));
static&int&playAudio(const&BYTE&buf[],&int&len)
int&err&=&0;
LPWAVEHDR&pWaveHdr&=&&WaveHdr[which];
pWaveHdr-&lpData&=&(LPSTR)(LPTSTR)buf&;
pWaveHdr-&dwBufferLength&=&
err&=&waveOutWrite&(_ghWaveOut,&pWaveHdr,&sizeof&(WAVEHDR));
pWaveHdr&=&&WaveHdr[which];
while(pWaveHdr-&dwFlags&==&0x12){
WaitForSingleObject(_ghEvent,&-1);
static&int&decode_file(mpg123_handle&*mh,&char&*path)
FILE&*fp&=&fopen(path,&"rb");
if&(fp&==&NULL){
return&-1;
while(feof(fp)&==&0){
n&=&fread(buffer,&1,&sizeof(buffer),&fp);
err&=&mpg123_decode(mh,&buffer,&n,&outbuf[which],&1638400,&&done);
if&(err&==&MPG123_NEW_FORMAT){
int&channels,&
mpg123_getformat(mh,&&rate,&&channels,&&enc);
printf("new&format\n");
playSetup(rate,&channels);
playAudio(outbuf[which],&done);
while&(err!=MPG123_NEED_MORE&&&&err!=MPG123_ERR){
err&=&mpg123_decode(mh,&NULL,&0,&outbuf[which],&1638400,&&done);
playAudio(outbuf[which],&done);
if&(err&==&MPG123_ERR){
printf("err&=&%s\n",&mpg123_strerror(mh));
waveOutReset(_ghWaveOut);
waveOutClose(_ghWaveOut);
fclose(fp);
int&_tmain(int&argc,&_TCHAR*&argv[])
int&err&=&0;
mpg123_init();
mpg123_handle&*mh&=&mpg123_new(NULL,&&err);
assert(mh&!=&NULL);
err&=&mpg123_open_feed(mh);
assert(err&==&MPG123_OK); 共&2&页:
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有3647人阅读
android(90)
Windows(72)
iphone(16)
ipad(17)
ipod(22)
wince(26)
//初始化操作
mpg123_init();//初始化库
m = mpg123_new(NULL, &ret);//创建对象
mpg123_param(m, MPG123_VERBOSE, 2, 0);//解码设置
mpg123_open_feed(m);//打开
//解码操作
ret = mpg123_decode(m,buf,len,out,OUTBUFF,&size);//解码
mpg123_getformat(m, &rate, &channels, &enc);
//关闭接口
mpg123_delete(m);
mpg123_exit();
  以上代码我只是添加一些注释,官方提供源码中有详细例子。以上接口可用于任何平台。
&版权所有,禁止转载.
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:304373次
积分:4856
积分:4856
排名:第4116名
原创:174篇
转载:60篇
评论:89条
第一次参与“博客之星”的评选。希望大家多多支持,投出宝贵一票! PS:每天都可以投一票。
投票投票地址:
投票首页:
(3)(2)(2)(1)(2)(1)(1)(1)(1)(2)(5)(2)(6)(3)(3)(4)(1)(4)(2)(1)(2)(3)(6)(6)(12)(12)(14)(6)(12)(16)(13)(6)(9)(14)(19)(12)(7)(12)(2)(1)(4)(1)(1)【原】VC++编译mpg123
平时用VC++的机会不多,有些东西用过很久后容易忘,在这里记录一下吧。
首先解压mpg123的源文件工程,整个文件夹里src是mpg123.exe的工程,src/libmpg123才是mp3解码器的源文件,如果只需要mp3解码部分,使用这个文件夹里的文件就可以了,在ports/MSVC++文件夹中有一些预设的编译环境,其中就包括vs2008,当然还有vs2008clr不过这个clr是c++的,语言到今天已经有很大改动,就不理会了,使用vs2008的工程可以直接将需要的文件加载进来,但有几处需要更改。
源文件是1.20(or
1.21)的,这里(好像是1.20)有一个官方BUG,就是在MSVC++下的mpg123.h头文件中,"EXPORT"
已经过时,应该替换成"MPG123_EXPORT",否则编译失败,另,需要从网上下载一个stdint.h头文件添加在编译时报错的头文件中,另外在mpg123.h中添加ssize_t的定义,缺失的这些东西是linux下的,微软的C库中没有。
其他没什么,VS2008下基本就可以编译通过了。
另外,如果要将解码器部分放置在自己的工程中,有两种方式:
1。把libmpg123文件夹中的文件全部复制到新工程下。
2。使用其提供的源文件编译出lib文件,然后讲dll和lib链接入工程。
当然,应该遵守其源代码开放协议。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。}

我要回帖

更多关于 mpg123.dll 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信