音频元数据

时长/比特率/采样率/通道

412 次访问
AUDIO METADATA · BROWSER LOCAL

音频元数据查看器

查看 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 秒完成校验,避免被平台降质或拒收。

对比矩阵本工具 vs 竞品 vs 传统方法

维度本工具竞品 A(MediaInfo Online)传统方法(命令行 FFmpeg)
数据隐私纯浏览器,零上传上传文件到在线服务器本地执行,无网络传输
处理速度1 秒内3-10 秒(含上传时间)1-3 秒(需手动敲命令)
操作门槛拖拽或点击,即拖即用需选择文件、等待上传需安装 FFmpeg 并记忆参数
离线可用是(页面加载后断网仍可用)
批量处理单文件单文件支持脚本批量处理
文件大小限制受浏览器内存限制(通常 2GB 以内)通常 200MB-2GB无限制
输出信息丰富度时长/比特率/采样率/通道同左 + 编码器/容器/流信息同左 + 可自定义输出字段

使用指南

上手步骤 · 输入输出 · 避坑提示

输入输出示例7 个典型场景,覆盖常规、边界与易错

输入输出说明
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:用户上传了非音频文件

常见错误对照8 个常踩的坑 · 错误 → 修复

1. 把时长格式传成 HH:MM:SS 而非秒数

错误
00:03:45
修复
225

音频元数据工具要求时长以秒为单位(整数或浮点数),HH:MM:SS 格式会被解析为字符串,导致计算错误或 NaN

2. 比特率单位混用 kbps 与 bps

错误
320000
修复
320

工具默认比特率单位为 kbps(千位每秒),传入 bps 原始值(如 320000)会被误认为 320000 kbps,结果偏差 1000 倍

3. 采样率写成小数而非整数

错误
44.1
修复
44100

采样率标准值为整数 Hz(如 44100、48000),传入 44.1 会被当作 44 Hz,导致输出严重失真

4. 通道数写成字符串 'stereo' 而非数字

错误
stereo
修复
2

工具接受整数通道数(1=单声道,2=立体声,6=5.1环绕),字符串 'stereo' 无法被数值解析,返回 null

5. 文件大小与时长混用(以为比特率=文件大小/时长)

错误
文件大小 10MB,时长 60s → 比特率=10/60=0.166 MB/s
修复
比特率 = (文件大小字节 × 8) / 时长秒 / 1000,单位 kbps

忘记字节转比特(×8)和单位换算(÷1000),直接 MB/s 当作 kbps 会差 8000 倍

6. 采样率与比特率单位混淆(Hz vs kHz)

错误
采样率 48 kHz 写成 48000 kHz
修复
48000

工具内部使用 Hz,传入 kHz 值(如 48)会被当作 48 Hz,远低于正常音频范围

7. 时长计算时忽略小数秒

错误
时长 3 分 45.5 秒 → 只传 225
修复
225.5

工具支持浮点数秒,截断小数会导致码率/压缩比计算偏差,尤其对短音频影响显著

8. 通道数传 0 或负数

错误
0
修复
1 或 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)。

原理图

选择音频文件MP3 / WAV / FLACFFmpeg WASM 解析读取文件二进制流提取元数据时长 / 比特率 / 采样率 / 通道格式化展示表格 / 标签 / 复制全部在浏览器内完成不上传任何数据到服务器
用户操作 本地处理(浏览器内) 输出结果

开发者集成

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
# 通道数: 2
package 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
// 通道数: 2

常见问题

8 个高频疑问

上传的音频文件会不会被服务器保存?隐私安全吗?
本工具采用 FFmpeg WASM 纯浏览器端处理,音频文件全程不离开本地设备。点击上传后,文件通过 WebAssembly 在浏览器内解码并提取元数据,所有计算在内存中完成,关闭页面即清除。可以打开浏览器开发者工具(F12)的网络面板确认:上传文件后没有任何 HTTP 请求外发到服务器。如需绝对放心,可在断网环境下使用,工具依然正常工作。
为什么我上传的 flac 文件显示采样率是 0?
采样率显示为 0 通常有两种原因:1)文件头部损坏或非标准编码(如某些录音笔输出的非标 FLAC),FFmpeg 无法解析元数据区块;2)文件扩展名与真实格式不匹配,比如把 MP3 后缀改为 .flac。建议先用格式工厂或 MediaInfo 确认文件本身编码正常,或换用同一音频的原始 WAV 文件上传对比。
音频时长显示跟播放器里的不一样,差了好几秒,以哪个为准?
播放器显示的时长通常是「播放时长」,包含首尾静音和淡入淡出;本工具读取的是 FFmpeg 解析的「容器时长」,基于音频帧数 × 每帧时长计算得出,是纯音频数据的物理长度。两者差异常见于:1)文件末尾有 1-3 秒静音尾部(播放器自动跳过);2)VBR 编码的 MP3,部分播放器对时长估算有 ±2 秒误差。以 FFmpeg 解析值为准,它是音频工程领域的标准参考值。
比特率显示 320kbps,但听起来音质很差,是不是数据不准?
320kbps 只代表编码时的目标比特率,不等于实际音质。一个 64kbps 的 MP3 被转码成 320kbps 后,比特率会显示 320,但原始损失的频段信息无法恢复——这叫「有损转有损」的音质劣化。本工具读取的是当前文件的编码参数,不是原始音质评分。如果怀疑是假高码率,可以对比该文件的频谱图:真 320kbps 的 16kHz 以上频段应有丰富信息,假转码则高频区一片空白。
最大支持多大的音频文件?上传几十分钟的录音会不会卡死?
纯浏览器端处理受限于设备内存,通常建议单文件不超过 500MB。对于 44.1kHz/16bit 立体声 WAV,约对应 45 分钟时长;MP3 压缩后可达 3-4 小时。超过 1GB 的文件在低内存设备(如 4GB RAM 手机)上可能导致浏览器标签页崩溃。如果经常处理大文件,建议改用桌面版专业工具如 MediaInfo 或 ffprobe 命令行。
这个工具跟格式工厂/MediaInfo 读出来的元数据有什么区别?
核心数据(时长、比特率、采样率、通道数)来源都是 FFmpeg 底层解析,理论结果一致。差异在于:1)格式工厂侧重转码,元数据展示为辅助功能,有时会省略部分流信息;2)MediaInfo 能显示更详细的编码参数(如编码器版本、延迟设置),本工具聚焦四个常用字段,更轻量且无需安装;3)在线工具无需下载安装包,但大文件受浏览器内存限制。如果只查基本参数,本工具足够;如需深入分析编码细节,建议用 MediaInfo。
为什么我上传的 m4a 文件显示通道数是 1,但我的耳机左右声道都有声音?
通道数 1 表示该音频流是单声道(Mono),但很多播放器在播放单声道文件时会自动「双耳复制」到左右声道,导致听起来像立体声。可以通过以下方式确认:1)用 Audacity 打开文件,查看波形图——单声道只有一条波形;2)播放时拔掉一只耳机,如果左右耳听到完全一样的内容,就是单声道。本工具显示的是音频流的真实通道数,不是播放器的模拟效果。
工具提示「不支持的文件格式」,但我的文件确实是 mp3,怎么回事?
常见原因:1)文件扩展名被修改过(如 .wav 改为 .mp3),但内部编码仍是 PCM 或其他格式,FFmpeg 按扩展名猜测解码器失败;2)文件头部损坏或截断,常见于未完整下载的音频文件;3)极少数 DRM 加密的音频文件(如某些音乐平台下载的受保护格式)。建议先用十六进制编辑器查看文件头:真正的 MP3 文件头以 0xFFFB 或 0xFFF3 开头,WAV 为 RIFF,FLAC 为 fLaC。
选择 打开 +新窗口 esc关闭