You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Tika Parser获取FLAC音频文件的时长元数据?

获取FLAC音频时长元数据(Apache Tika 1.24)

结论

你在调试中看到的xmpDM:duration元数据键,就是对应FLAC文件详情里的音频时长信息。

提取时长的方法

直接通过Metadata对象的get方法获取该键的值即可,该值通常是以秒为单位的浮点数,可根据需求转换为时分秒格式:

String durationStr = metadata.get("xmpDM:duration");
if (durationStr != null) {
    double durationSeconds = Double.parseDouble(durationStr);
    long minutes = (long) (durationSeconds / 60);
    double seconds = durationSeconds % 60;
    System.out.printf("音频时长:%d分%.2f秒%n", minutes, seconds);
}

优化后的完整测试代码

你的原始代码未处理异常和资源关闭,建议使用try-with-resources自动管理输入流,避免资源泄漏:

import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.AutoDetectParser;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.Parser;
import org.apache.tika.sax.BodyContentHandler;
import org.xml.sax.ContentHandler;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;

public class FlacDurationTest {
    public void getFlacDuration(String path) {
        try (InputStream input = new FileInputStream(new File(path))) {
            Parser parser = new AutoDetectParser();
            ContentHandler handler = new BodyContentHandler();
            Metadata metadata = new Metadata();
            ParseContext context = new ParseContext();

            parser.parse(input, handler, metadata, context);

            // 提取并打印时长
            String durationStr = metadata.get("xmpDM:duration");
            if (durationStr != null) {
                double durationSeconds = Double.parseDouble(durationStr);
                long minutes = (long) (durationSeconds / 60);
                double seconds = durationSeconds % 60;
                System.out.printf("FLAC音频时长:%d分%.2f秒%n", minutes, seconds);
            } else {
                System.out.println("未提取到时长元数据");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        new FlacDurationTest().getFlacDuration("path/to/your/flac/file.flac");
    }
}

补充说明

  • AutoDetectParser会自动识别FLAC文件类型,调用对应解析器提取元数据,xmpDM:duration是XMP规范定义的时长字段,与文件详情显示的长度完全匹配。
  • 若需要其他音频元数据,比如采样率、比特率,可通过metadata.get("xmpDM:audioSampleRate")、metadata.get("xmpDM:bitrate")等键获取。

内容的提问来源于stack exchange,提问作者xxestter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 06:25:37