音频剪辑器
可视化波形拖选起止时间 · 精确裁剪音频片段 · MP3 / WAV 导出
起止时间裁剪/无损
可视化波形拖选起止时间 · 精确裁剪音频片段 · MP3 / WAV 导出
MP3 / WAV / FLAC / AAC / OGG · 不上传
选区:在波形上按住鼠标左键拖动选取片段。选区范围将高亮显示,起止时间自动填入下方输入框。
精确调整:直接在 "起始 / 结束" 输入框输入时间(格式 m:ss.ms 如 1:23.45),波形会实时同步。
淡入淡出:避免突兀截断,建议起始加 0.05-0.2 秒淡入,结束加 0.1-0.5 秒淡出。
无损剪辑:本工具会重新编码为目标格式。要 100% 无损可选 WAV 输出(导出的是原始 PCM 样本切片)。
了解工具定位 · 使用场景 · 对比优势
指定音频文件的起止时间,裁剪出想要的片段,不重新编码,保持原始音质。播客剪辑、会议录音截取、音乐铃声制作,直接输入开始时间和时长或结束时间即可。文件在浏览器本地处理,不上传服务器。
播客制作人录制了 2 小时对谈,中间嘉宾分享了一段 8 分钟的干货,需要单独剪出来作为预告片。本工具直接输入起止时间戳,无损截取目标段落,不重新编码,10 秒内生成独立音频文件,省去拖拽时间线的麻烦。
网课老师录制 45 分钟课程,开头 3 分钟是调试麦克风的杂音,结尾 2 分钟是下课闲聊。本工具设定起始时间 00:03:00、结束时间 00:42:00,一键裁掉无用段落,保留纯教学内容,无需导入专业软件。
视频创作者需要一段 15 秒的 BGM 高潮部分,但原曲 3 分钟。本工具精准定位副歌起止秒数(如 00:45-01:00),无损裁剪出高潮片段,直接用于短视频配乐,不损失音质,也不需要在剪辑软件里反复试听对齐。
收到同事发来的 5 分钟语音消息,中间有 2 分钟空白和重复。本工具标记有效内容的起止时间,裁掉空白段后导出精简版语音,方便转文字或直接转发给其他同事,减少对方收听时间。
音乐制作人下载了一段 30 秒的采样音效,但前 5 秒是渐入的淡入效果,不符合素材需求。本工具从第 5 秒开始裁剪,直接获取后半段稳定音量的部分,保持无损格式,方便直接拖入音轨使用。
| 维度 | 本工具 | 竞品 A(Online Audio Cutter) | 传统方法(Audacity) |
|---|---|---|---|
| 数据隐私 | 纯浏览器处理,文件不上传服务器 | 需上传文件至服务器处理 | 本地安装软件,文件不离开电脑 |
| 处理速度 | 1 秒内完成裁剪 | 取决于文件大小和网络,通常 5-30 秒 | 需启动软件、导入文件、导出,数分钟 |
| 离线可用 | 需联网加载,处理过程在本地 | 全程需联网 | 完全离线可用 |
| 文件大小限制 | 受浏览器内存限制,通常 200MB 以内 | 通常有 50-200MB 上传限制 | 无限制,取决于本地硬件 |
| 收费 | 免费 | 免费版有文件大小/时长限制,Pro 版收费 | 免费开源 |
| 注册要求 | 无需注册,打开即用 | 无需注册 | 无需注册 |
| 平台兼容 | 任何现代浏览器(桌面/移动端) | 浏览器,但移动端体验较差 | 仅桌面端(Windows/macOS/Linux) |
上手步骤 · 输入输出 · 避坑提示
| 输入 | 输出 | 说明 |
|---|---|---|
| 00:00:00 - 00:01:30 | 裁剪后的音频文件(时长 1 分 30 秒) | 典型场景:截取音频的开头 90 秒 |
| 00:02:15 - 00:03:45 | 裁剪后的音频文件(时长 1 分 30 秒) | 典型场景:截取音频中间的某一段 |
| 00:00:00 - 00:00:00 | 错误提示:起止时间相同,无效裁剪 | 边界 case:起止时间相等,裁剪区间为零 |
| 00:05:00 - 00:02:00 | 错误提示:起始时间晚于结束时间 | 易错 case:用户误将起止顺序颠倒 |
| 00:00:00 - 02:00:00 | 裁剪后的音频文件(时长 2 小时) | 边界 case:截取时长接近或等于原文件总时长 |
| 00:00:00.500 - 00:00:01.200 | 裁剪后的音频文件(时长 0.7 秒) | 边界 case:支持毫秒级精度裁剪 |
开始 00:00:00,结束 00:01:30(想剪 1 分 30 秒)开始 00:00:00,结束 00:01:30(想剪到 1 分 30 秒位置)或使用时长模式输入 00:01:30工具参数是绝对时间点(timestamp)而非相对时长。如果填了时长,实际裁剪出的片段长度 = 时长 - 起点,而非期望的时长值。
1:30,500 或 01:3001:30.500(英文冒号 + 英文句点)FFmpeg 的时间解析器只认英文冒号:和英文句点.。中文冒号:或逗号,会被当作非法字符,导致解析失败或静默截断。
开始 00:05:00,结束 00:03:00开始 00:03:00,结束 00:05:00FFmpeg 的 -ss 和 -to 参数要求开始时间 ≤ 结束时间。反序输入会输出空文件或报错,因为时间区间长度为负。
开始 00:01:00,结束留空开始 00:01:00,结束 00:02:00 或确认工具默认行为(通常截到文件末尾)部分实现中缺省结束时间 = 文件末尾,但用户预期可能只是剪掉开头保留剩余。不明确填写结束时间会导致输出长度与预期不符。
一个 30 秒的音频,填结束 00:01:00结束 00:00:30 或更小FFmpeg 遇到超出文件时长的 -to 值不会报错,只会输出到文件末尾。用户以为剪了 60 秒,实际只有 30 秒。
00:01:30.1234(4 位毫秒)00:01:30.123(最多 3 位毫秒)FFmpeg 时间格式支持最多 3 位毫秒(.SSS)。4 位或更多会被截断或解析为错误值,导致裁剪位置偏差。
想只保留前 10 秒但让声音变快,在裁剪工具里调时间参数先用裁剪工具截取片段,再用变速/变调工具处理裁剪工具只改变起止时间,不改变播放速度或音高。修改时间参数(如 00:01:00→00:00:30)不会加速音频,只会缩短片段。
对 MP3 文件填开始 00:01:23.456(毫秒级精度)对 WAV / FLAC 等无损格式使用毫秒精度;MP3 接受 00:01:23(秒级)MP3 等有损压缩格式的帧结构(每帧约 26ms)导致无法精确到毫秒级裁剪。FFmpeg 会就近对齐到帧边界,实际裁剪点可能偏差数十毫秒。
公式推导 · 流程图解 · 依据出处
T_out = T_in - (T_end - T_start)
T_out — 输出音频时长(秒)T_in — 输入音频原始时长(秒)T_start — 裁剪起始时间点(秒)T_end — 裁剪结束时间点(秒)一段 120 秒的音频,从第 10 秒裁剪到第 50 秒。则 T_in=120,T_start=10,T_end=50。T_out = 120 - (50 - 10) = 80 秒。输出音频保留 0-10 秒和 50-120 秒两段,总时长 80 秒。
适用于无损裁剪(不重新编码),仅支持连续时间段裁剪。不支持多段拼接或交叉淡化。基于 FFmpeg 的 -ss 和 -to 参数实现,精度受输入音频容器格式影响(MP3 约 ±0.02 秒,WAV 精确到采样点)。
3 种主流语言 · 复制即用
import subprocess
# 使用 FFmpeg 进行无损音频裁剪(不重新编码)
input_file = "input.mp3"
output_file = "output.mp3"
start_time = "00:01:30" # 起始时间(时:分:秒)
duration = "00:00:45" # 裁剪时长
cmd = [
"ffmpeg",
"-i", input_file, # 输入文件
"-ss", start_time, # 起始时间
"-t", duration, # 裁剪时长
"-c", "copy", # 复制编码(无损)
output_file
]
result = subprocess.run(cmd, capture_output=True, text=True)
if result.returncode != 0:
print("裁剪失败:", result.stderr)
else:
print(f"已生成 {output_file}")package main
import (
"fmt"
"os/exec"
)
func main() {
// 使用 FFmpeg 进行无损音频裁剪
inputFile := "input.mp3"
outputFile := "output.mp3"
startTime := "00:01:30"
duration := "00:00:45"
cmd := exec.Command("ffmpeg",
"-i", inputFile,
"-ss", startTime,
"-t", duration,
"-c", "copy", // 复制编码,不重新压缩
outputFile,
)
output, err := cmd.CombinedOutput()
if err != nil {
fmt.Printf("裁剪失败: %s\n", err)
return
}
fmt.Printf("已生成 %s\n", outputFile)
_ = output
}const { execSync } = require('child_process');
// 使用 FFmpeg 进行无损音频裁剪(Node.js 环境)
const inputFile = 'input.mp3';
const outputFile = 'output.mp3';
const startTime = '00:01:30';
const duration = '00:00:45';
try {
execSync(
`ffmpeg -i "${inputFile}" -ss ${startTime} -t ${duration} -c copy "${outputFile}"`,
{ stdio: 'inherit' }
);
console.log(`已生成 ${outputFile}`);
} catch (err) {
console.error('裁剪失败:', err.message);
}8 个高频疑问