如何使用 LibFlac 从 Flac 文件获取元数据信息

发布于 2024-12-27 05:48:23 字数 1400 浏览 1 评论 0原文

我正在将 Flac 文件解码为波形文件。解码文件后,我通过此代码获取流信息

void metadata_callback(const FLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data)
{
    (void)decoder, (void)client_data;


    /* print some stats */
    if(metadata->type == FLAC__METADATA_TYPE_STREAMINFO) {
        /* save for later */
        total_samples = metadata->data.stream_info.total_samples;
        sample_rate = metadata->data.stream_info.sample_rate;
        channels = metadata->data.stream_info.channels;
        bps = metadata->data.stream_info.bits_per_sample;

        fprintf(stderr, "sample rate    : %u Hz\n", sample_rate);
        fprintf(stderr, "channels       : %u\n", channels);
        fprintf(stderr, "bits per sample: %u\n", bps);
#ifdef _MSC_VER
        fprintf(stderr, "total samples  : %I64u\n", total_samples);
#else
        fprintf(stderr, "total samples  : %llu\n", total_samples);
#endif

}

现在我想获取元数据,例如专辑名称、图片、艺术家姓名。

为此,我尝试了这段代码

FLAC__StreamMetadata *tags;
        FLAC__bool success = FLAC__metadata_get_tags(infilePath, &tags);

        if (success) {
            printf("Got stream information");
            printf("metadata %u",tags->data.vorbis_comment.num_comments);
        }else {
            printf("Failed to get stream information");
        }

,但我在控制台上得到零,即 0。请帮忙。

I am decoding Flac files in to wave files . After decoding file , I am getting stream info by this code

void metadata_callback(const FLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data)
{
    (void)decoder, (void)client_data;


    /* print some stats */
    if(metadata->type == FLAC__METADATA_TYPE_STREAMINFO) {
        /* save for later */
        total_samples = metadata->data.stream_info.total_samples;
        sample_rate = metadata->data.stream_info.sample_rate;
        channels = metadata->data.stream_info.channels;
        bps = metadata->data.stream_info.bits_per_sample;

        fprintf(stderr, "sample rate    : %u Hz\n", sample_rate);
        fprintf(stderr, "channels       : %u\n", channels);
        fprintf(stderr, "bits per sample: %u\n", bps);
#ifdef _MSC_VER
        fprintf(stderr, "total samples  : %I64u\n", total_samples);
#else
        fprintf(stderr, "total samples  : %llu\n", total_samples);
#endif

}

Now I want to fetch metadata such as album name, picture ,artist name.

For this I tried this code

FLAC__StreamMetadata *tags;
        FLAC__bool success = FLAC__metadata_get_tags(infilePath, &tags);

        if (success) {
            printf("Got stream information");
            printf("metadata %u",tags->data.vorbis_comment.num_comments);
        }else {
            printf("Failed to get stream information");
        }

But I am getting Zero i.e 0 on console. Please help .

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文