在C中播放mp3文件

时间:2015-01-23 16:33:51

标签: c mp3 libcurl audio-player

我想在互联网上播放mp3文件而不下载它们。所以,我使用libcurl将它作为内存中的流来获取,如下所示:

static size_t use_data(void *ptr, size_t size, size_t nmemb, FILE *stream) {
     /* stream is NULL */
     /* What to do with the stream of data ? */
}

CURLcode download_file(const char *url, const char *path, curl_progress_callback progress) {
    CURL *curl;
    CURLcode res = 0;
    FILE *fp;
    if ((curl = curl_easy_init())) {
        if (progress) {
            curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 0);
            curl_easy_setopt(curl, CURLOPT_PROGRESSFUNCTION, progress);
        }
        curl_easy_setopt(curl, CURLOPT_URL, url);
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, use_data);
        res = curl_easy_perform(curl);
        /* always cleanup */
        curl_easy_cleanup(curl);
        fclose(fp);
    }
    return res;
}

如何解析内存中的流以播放声音?

1 个答案:

答案 0 :(得分:2)

对你来说最简单的方法就是使用轻量级MP3解码库。例如,minimp3可以完成它的工作,只包含2个文件。

http://keyj.emphy.de/minimp3

API非常简单,可在此处找到用法示例:https://github.com/corporateshark/PortAMP/tree/master/src/Decoders/MP3