windows mp3 decode library c c++ [closed]

人走茶凉 提交于 2019-11-30 17:07:21

mpg123 is fine. I can see you have troubles with getting static library (.lib).

There are 2 ways to get the lib:

  1. Build the source code. It's much more flexible, but it's a bit tricky. If you download the sources, you can find a port to VS2010 by the path: ports\MSVC++\2010. But in this case you will face with issues of installing YASM and playing around with build configurations (seems the configurations are not properly adjusted in the source code package).
  2. Use the lib tool by converting the .def file. You don't need sources as the binary packages already contain the .h and the .def files. I will explain in details:

    1. Download the binaries (win32 or win64) and extract let's say to D:\mpg123 folder.
    2. Run from Start -> Microsoft Visual Studio 2010 -> Visual Studio Tools -> Visual Studio Command Prompt (2010).
    3. Go to your folder cd D:\mpg123, D: and run the line: lib /def:libmpg123-0.dll.def (or however the def file is called).
    4. Now you have the desired .lib file libmpg123-0.dll.lib in your folder.

But notice, that the 'Framework and References' property page is used to set references to .NET Framework assemblies, COM components, or external projects (MSDN), in your case you should specify additional linker dependency in your project [Configuration Properties => Linker => Input => Additional Dependencies].

the answer from Olexander works great, thank you so much

i have one small thing to add, when you download mpg123-1.15.1-x86.zip

you'll see libmpg123-0.dll (the dll) and libmpg123-0.dll.def the thing used to make the .lib as described above. its better to change the name to libmpg123-0.def otherwise it will look for a dll called libmpg123-0.dll.dll which isn't nice

beside that, it works great. i can't believe this info wasn't on the internet years ago. thanks Olexander and thanks stackoverflow

FYI, here's a simple mp3 decoder using mpg123

#include "mpg123/mpg123.h"

#define INBUFF  16384
#define OUTBUFF 32768


void loadMp3File(const char* filename)
{
    mpg123_handle *mh;
    unsigned char *buffer;
    size_t buffer_size;
    size_t done;
    int err;

    int channels, encoding;
    long rate;

    mpg123_init();
    mh = mpg123_new(NULL, &err);
    buffer_size = mpg123_outblock(mh);
    buffer = (unsigned char*) malloc(buffer_size * sizeof(unsigned char));

    /* open the file and get the decoding format */
    mpg123_open(mh, filename);
    mpg123_getformat(mh, &rate, &channels, &encoding);

    /* set the output format and open the output device */
    int m_bits = mpg123_encsize(encoding);
    int m_rate = rate;
    int m_channels = channels;


    /* decode and play */
    for (int totalBtyes = 0 ; mpg123_read(mh, buffer, buffer_size, &done) == MPG123_OK ; ) {
        totalBtyes += done;
    }


    /* clean up */
    free(buffer);
    mpg123_close(mh);
    mpg123_delete(mh);
    mpg123_exit();

}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!