Minggu, 15 Desember 2013

libao + libmpg123 visual studio 2013 sample...

Berikut ini oprekan program c++, idenya datang dari jhony huang http://hzqtc.github.io/2012/05/play-mp3-with-libmpg123-and-libao.html ia ingin memproses file mp3 dengan menggunakan mpg123 library namun audio outputnya menggunakan libao dari xiph.org.





Code: play.cpp

#include <mpg123.h>
#include <ao.h>
#include <malloc.h>
#include <stdlib.h>
#include <windows.h>

#define BITS 8

int main(int argc, char *argv[])
{
    mpg123_handle *mh;
    unsigned char *buffer;
    size_t buffer_size;
    size_t done;
    int err, driver, channels, encoding;
 
    ao_device *dev;
    ao_sample_format format;
    long rate;
    ao_initialize();
    driver = ao_default_driver_id();

// ========= inisial library =============

    mpg123_init();
    mh = mpg123_new(NULL, &err);
    buffer_size = mpg123_outblock(mh);
    buffer = (unsigned char*)malloc(buffer_size * sizeof(unsigned char));
    mpg123_param(mh, MPG123_RESYNC_LIMIT, -1, 0);
    mpg123_open(mh, argv[1]);
    mpg123_getformat(mh, &rate, &channels, &encoding);

    // ************************************

    format.bits = mpg123_encsize(encoding) * BITS;
    format.rate = rate;
    format.channels = channels;
    format.byte_format = AO_FMT_NATIVE;
    format.matrix = 0;

    dev = ao_open_live(driver, &format, NULL);

    while (mpg123_read(mh, buffer, buffer_size, &done) == MPG123_OK)
    {
        ao_play(dev, reinterpret_cast<char*>(buffer), done);
        fprintf(stderr, "Frame: %li\n", mpg123_tellframe(mh));
    }

//===========reinterpret_cast<char*>(buffer) : digunakan untuk mengkonversikan type buffer unsigned char menjadi char.

    /* clean up */

    free(buffer);
    ao_close(dev);
    mpg123_close(mh);
    mpg123_delete(mh);
    mpg123_exit();
    ao_shutdown();

    return 0;
}


code dikompilasi dengan mingw gcc:
gcc -O2 -o play play.c -lmpg123 -lao
 
dapat pula menggunakan code::block dengan menset linker: libmpg123.a  libao.a pada project option dan tentu juga opsi search directory-nya.

jangan lupa download library libao dan libmpg123.

hasil kompilasi adalah play.exe. dapat digunakan dari console command dengan syntax: play.exe namafile.mp3 ----- enter.

Tidak ada komentar:

Posting Komentar