音频元数据查看器
查看 MP3 / WAV / FLAC 等音频文件的完整元数据 · 时长 / 比特率 / 采样率 / 声道 · 浏览器本地解析
时长/比特率/采样率/通道
查看 MP3 / WAV / FLAC 等音频文件的完整元数据 · 时长 / 比特率 / 采样率 / 声道 · 浏览器本地解析
所有信息在浏览器本地解析 · 不会上传文件
采样率(Sample Rate):每秒采样次数。CD 标准 44100 Hz,DVD / 视频 48000 Hz,语音通话 8000-16000 Hz。一般 ≥ 22050 Hz 即可保证清晰。
比特率(Bit Rate):每秒数据量,kbps 单位。MP3 常用 128/192/320 kbps;FLAC 等无损一般 600-1500 kbps。
声道数(Channels):1 = 单声道(mono),2 = 立体声(stereo),多声道环绕(5.1 / 7.1)等。
位深(Bit Depth):每个采样点的精度。16-bit 是 CD 标准;24-bit 用于专业录音;32-bit float 用于母带处理。
RMS 能量:均方根值,反映音频平均响度。值越接近 1 越响。一般 0.1-0.3 是正常对话音量。
峰值(Peak):音频中最大瞬时振幅。接近 1.0 容易爆音;接近 0 说明音频太弱。
了解工具定位 · 使用场景 · 对比优势
独立音乐人在上传歌曲至流媒体平台前,需确保音频文件符合平台规范(如 Spotify 要求 320kbps CBR、44.1kHz)。本工具一键读取时长、比特率、采样率、通道数,对比平台标准快速定位问题:比特率低于 256kbps 则音质不达标,采样率非 44.1kHz 可能被重采样导致延迟,通道数非立体声则需重新导出。省去手动打开专业 DAW 的繁琐,发行前 30 秒完成合规检查。
视频剪辑师从网上下载了大量配乐和音效,导入剪辑软件后才发现音频采样率不统一(48kHz vs 44.1kHz),导致工程文件报错或播放变调。本工具批量读取文件夹内所有音频的采样率和比特率,快速标记不一致的文件,剪辑师据此统一转换或替换素材,避免后期混音时出现爆音、变调等问题,节省至少 20 分钟的排查时间。
有声书制作团队在交付前需确认每个章节音频的编码参数一致:统一为 128kbps CBR、44.1kHz、单声道。本工具逐章节读取元数据,自动比对通道数——若某章节误导出为立体声,文件体积翻倍但听感无提升,反而增加平台存储成本。工具在 3 秒内输出差异报告,制作人直接定位问题章节重新导出,保证整书参数统一。
游戏开发团队在打包前需检查所有音频资源:背景音乐必须为 44.1kHz 立体声(避免播放时 CPU 实时重采样),音效必须为 22050Hz 单声道(减小包体)。本工具扫描整个 assets 目录,列出每个音频文件的采样率与通道数,标记不符合规范的资源(如误将 44100Hz 音效放入 UI 点击文件夹)。开发者在打包前批量修正,避免游戏运行时出现卡顿或包体超标。
播客主播在上传至 Apple Podcasts 或喜马拉雅前,需确认音频参数:通常要求 64-128kbps CBR、44100Hz、单声道(人声为主)。本工具读取文件后直接显示比特率与采样率,若发现比特率低于 64kbps(人声模糊)或高于 128kbps(文件过大上传慢),主播可立即调整导出设置。无需打开 Audacity 查看属性,上传前 10 秒完成校验,避免被平台降质或拒收。
| 维度 | 本工具 | 竞品 A(MediaInfo Online) | 传统方法(命令行 FFmpeg) |
|---|---|---|---|
| 数据隐私 | 纯浏览器,零上传 | 上传文件到在线服务器 | 本地执行,无网络传输 |
| 处理速度 | 1 秒内 | 3-10 秒(含上传时间) | 1-3 秒(需手动敲命令) |
| 操作门槛 | 拖拽或点击,即拖即用 | 需选择文件、等待上传 | 需安装 FFmpeg 并记忆参数 |
| 离线可用 | 是(页面加载后断网仍可用) | 否 | 是 |
| 批量处理 | 单文件 | 单文件 | 支持脚本批量处理 |
| 文件大小限制 | 受浏览器内存限制(通常 2GB 以内) | 通常 200MB-2GB | 无限制 |
| 输出信息丰富度 | 时长/比特率/采样率/通道 | 同左 + 编码器/容器/流信息 | 同左 + 可自定义输出字段 |
上手步骤 · 输入输出 · 避坑提示
| 输入 | 输出 | 说明 |
|---|---|---|
| https://example.com/sample.mp3 | 时长: 3分42秒 | 比特率: 320 kbps | 采样率: 44100 Hz | 通道: 立体声 | 典型场景:常见 MP3 文件,CD 音质标准 |
| https://example.com/audio.wav | 时长: 1分08秒 | 比特率: 1411 kbps | 采样率: 48000 Hz | 通道: 立体声 | 典型场景:无损 WAV 文件,高采样率专业录音 |
| https://example.com/speech.aac | 时长: 10分15秒 | 比特率: 64 kbps | 采样率: 22050 Hz | 通道: 单声道 | 典型场景:语音播客,低比特率单声道节省空间 |
| https://example.com/silence.mp3 | 时长: 0分00秒 | 比特率: 128 kbps | 采样率: 44100 Hz | 通道: 立体声 | 边界 case:空文件(0 时长),比特率仍显示 |
| https://example.com/5ch.flac | 时长: 2分30秒 | 比特率: 1024 kbps | 采样率: 96000 Hz | 通道: 5.1 环绕声 | 边界 case:多声道 FLAC,通道数超过 2 |
| https://example.com/verylong.mp3 | 时长: 99时59分59秒 | 比特率: 128 kbps | 采样率: 44100 Hz | 通道: 立体声 | 边界 case:超长文件,接近 100 小时上限 |
| not_an_audio_file.txt | 错误:无法解析文件格式,仅支持常见音频格式(mp3/wav/flac/aac/ogg) | 易错 case:用户上传了非音频文件 |
00:03:45225音频元数据工具要求时长以秒为单位(整数或浮点数),HH:MM:SS 格式会被解析为字符串,导致计算错误或 NaN
320000320工具默认比特率单位为 kbps(千位每秒),传入 bps 原始值(如 320000)会被误认为 320000 kbps,结果偏差 1000 倍
44.144100采样率标准值为整数 Hz(如 44100、48000),传入 44.1 会被当作 44 Hz,导致输出严重失真
stereo2工具接受整数通道数(1=单声道,2=立体声,6=5.1环绕),字符串 'stereo' 无法被数值解析,返回 null
文件大小 10MB,时长 60s → 比特率=10/60=0.166 MB/s比特率 = (文件大小字节 × 8) / 时长秒 / 1000,单位 kbps忘记字节转比特(×8)和单位换算(÷1000),直接 MB/s 当作 kbps 会差 8000 倍
采样率 48 kHz 写成 48000 kHz48000工具内部使用 Hz,传入 kHz 值(如 48)会被当作 48 Hz,远低于正常音频范围
时长 3 分 45.5 秒 → 只传 225225.5工具支持浮点数秒,截断小数会导致码率/压缩比计算偏差,尤其对短音频影响显著
01 或 2通道数必须 ≥1,0 或负数在 FFmpeg 后端会触发断言错误,返回空结果
公式推导 · 流程图解 · 依据出处
S = B × C × T × N
S — 未压缩音频文件大小(字节)B — 采样位数(位/样本)C — 声道数(单声道=1,立体声=2)T — 时长(秒)N — 采样率(样本/秒,如 44100)一段 3 分钟立体声 CD 音质音频:B=16 位,C=2,T=180 秒,N=44100 Hz。S = 16 × 2 × 180 × 44100 = 254,016,000 字节 ≈ 242.2 MB。这是 PCM/WAV 格式的原始数据量,实际 MP3/AAC 压缩后约为 3-5 MB。
适用于未压缩 PCM/WAV/FLAC 格式的原始音频大小估算。不适用于有损压缩格式(MP3/AAC/OGG),因压缩算法会大幅减小体积。公式基于数字音频采样定理(Nyquist-Shannon)。
3 种主流语言 · 复制即用
import subprocess
import json
# 使用 ffprobe 读取音频文件元数据
filepath = "sample.mp3"
cmd = [
"ffprobe",
"-v", "quiet",
"-print_format", "json",
"-show_format",
"-show_streams",
filepath
]
result = subprocess.run(cmd, capture_output=True, text=True)
data = json.loads(result.stdout)
# 提取第一个音频流
stream = next(s for s in data["streams"] if s["codec_type"] == "audio")
# 输出核心元数据
print(f"时长: {float(stream.get('duration', 0)):.2f}s")
print(f"比特率: {int(stream.get('bit_rate', 0)) // 1000}kbps")
print(f"采样率: {stream.get('sample_rate', 'N/A')}Hz")
print(f"通道数: {stream.get('channels', 'N/A')}")
# 示例输出(sample.mp3 为 44.1kHz 立体声 128kbps 的 3 秒文件):
# 时长: 3.00s
# 比特率: 128kbps
# 采样率: 44100Hz
# 通道数: 2package main
import (
"encoding/json"
"fmt"
"os/exec"
"strings"
)
// ffprobe 输出的 JSON 结构(简化)
type Stream struct {
CodecType string `json:"codec_type"`
Duration string `json:"duration"`
BitRate string `json:"bit_rate"`
SampleRate string `json:"sample_rate"`
Channels int `json:"channels"`
}
type FFProbeOutput struct {
Streams []Stream `json:"streams"`
}
func main() {
filepath := "sample.mp3"
cmd := exec.Command("ffprobe",
"-v", "quiet",
"-print_format", "json",
"-show_streams",
filepath,
)
out, err := cmd.Output()
if err != nil {
panic(err)
}
var data FFProbeOutput
json.Unmarshal(out, &data)
// 找到第一个音频流
for _, s := range data.Streams {
if s.CodecType == "audio" {
fmt.Printf("时长: %ss\n", s.Duration)
fmt.Printf("比特率: %sbps\n", s.BitRate)
fmt.Printf("采样率: %sHz\n", s.SampleRate)
fmt.Printf("通道数: %d\n", s.Channels)
break
}
}
}
// 编译运行:go run main.go
// 依赖:系统需安装 ffmpeg(含 ffprobe)const { execSync } = require('child_process');
// 使用 ffprobe 读取音频元数据(Node.js 环境)
const filepath = 'sample.mp3';
const cmd = `ffprobe -v quiet -print_format json -show_streams "${filepath}"`;
const stdout = execSync(cmd, { encoding: 'utf-8' });
const data = JSON.parse(stdout);
// 提取第一个音频流
const stream = data.streams.find(s => s.codec_type === 'audio');
if (stream) {
console.log(`时长: ${parseFloat(stream.duration).toFixed(2)}s`);
console.log(`比特率: ${Math.round(parseInt(stream.bit_rate) / 1000)}kbps`);
console.log(`采样率: ${stream.sample_rate}Hz`);
console.log(`通道数: ${stream.channels}`);
}
// 运行:node script.js
// 依赖:系统安装 ffmpeg(含 ffprobe)
// 示例输出(44.1kHz 立体声 128kbps 的 3 秒文件):
// 时长: 3.00s
// 比特率: 128kbps
// 采样率: 44100Hz
// 通道数: 28 个高频疑问
「制作工具」下的其他工具