mpg123 1.13.1 调用测试

来源:互联网 发布:知乎关注的专栏在哪里 编辑:程序博客网 时间:2024/06/06 11:46

mingw +msys

 

./configure

make

make install

 

----------------------------------

得到 libmpg123.a

 

---------------------------------

可看行编译/doc/examples中的代码

特别是mpg123_to_wav.c

关键函数:

mpg123_read( mh, buffer, buffer_size, &done );用于将mp3解码出PCM数据

PCM数据大小为buffer_size(建议大小),实际送入buffer中的数据大小为done字节。

通常buffer_size=done,一般只有解码到尾部时,不够了,就有buffer_size>done。

每调用一次,解码下一段,直到解码完毕,小解码片段为4608字节在44100下约播放26ms 所以通过设置的更大一点,比如:buffer_size=buffer_size*114=4608*114 约播放3s。

 

---------------------------------

sndfile仅仅用于简单的WAV格式封装(数据为上面解码出的PCM数据,格式头通过mpg123_getformat等已知)

所以可自己实现wav的封装,而不用sndfile。

 

---------------------------------

对mpg123_to_wav.c简单的扩展应用:

一个完整的mp3解码->PCM数据->低级wavOut***  播放测试(XP ,win7通过),双缓冲,消息处理。

---------------------------------

mingw下编译:

gcc -c  mp3_play.c -Iinclude -Llib -lmpg123 -lwinmm

windres mp3_resource.rc resource.o

gcc mp3_play.o resource.o -Llib -lmpg123 -lwinmm -Wl,-subsystem,windows -o mp3_play.exe

./mp3.play.exe

 

---------------------------------

得到了win32窗体的集成版mp3播放程序(对于调用动态库的更容易,直接vc下编译即可)。

 

 

 上面的可执行文件下载mp3_player 

 

 

 

 

 

 

 

 

 

 

 

 

 

原创粉丝点击