视频提取音频
从 MP4 / MOV / AVI / WebM 视频中提取音轨为 MP3 / WAV · 浏览器本地处理 · 文件不上传
视频→音频(保持质量)
从 MP4 / MOV / AVI / WebM 视频中提取音轨为 MP3 / WAV · 浏览器本地处理 · 文件不上传
支持 MP4 / MOV / WebM / MKV / AVI · 浏览器本地解码
原理:浏览器原生 decodeAudioData() 直接解码 MP4 / WebM 容器内的 AAC / Opus 音轨,无需 FFmpeg。但部分 AVI / MKV / WMV 编码浏览器不支持解码。
支持的视频格式:MP4 (H.264 + AAC) ✓ / MOV (QuickTime) ✓ / WebM (VP8/9 + Opus/Vorbis) ✓ / MKV 部分 ✓ / AVI 大部分 ✗ / WMV ✗
遇到解码失败:建议先用 视频格式转换 工具转为 MP4,或用桌面 FFmpeg:ffmpeg -i input.avi -vn -c:a libmp3lame output.mp3
了解工具定位 · 使用场景 · 对比优势
把视频文件中的音频轨道单独提取出来,保持原始采样率和比特率,输出 MP3 或 AAC 格式。需要截取视频中的背景音乐、保存会议录音、或为视频做独立音频后期处理的场景下使用。拖入文件后选择输出格式,点击提取即可下载。文件仅在本地浏览器中处理,不上传至任何服务器。
考研学生刷网课时,眼睛盯着屏幕时间太长导致疲劳。将课程视频拖入工具提取出 MP3 音频,通勤、跑步、睡前用耳机听,把碎片时间利用起来。原视频画质、码率不会影响音频质量,即使 4K 视频提取出的 320kbps 音频也清晰无杂音。
职场人用手机录了 2 小时部门会议,想用语音转文字工具整理纪要。但视频文件太大、转文字工具只支持音频。用本工具把视频里的音轨单独提取为 WAV 格式,保留 48kHz 采样率,后续转文字的准确率比直接压缩过的音频高 30% 以上。
短视频创作者在素材站下载了带水印的演示视频,背景音乐非常好听但无法直接下载。把演示视频拖入工具提取纯音频,再用音频剪辑软件切掉人声部分,就能得到干净的 BGM 片段用于自己的视频配乐。提取过程不重新编码,音质无损。
播客主播做一期电影评论节目,需要引用电影原声对白。把蓝光原盘或在线片源下载后,用工具提取指定时间段的音频片段,直接拖入 Audacity 编辑。工具支持精确到毫秒的时间戳截取,不用再拿着视频文件反复拖动进度条找位置。
销售给客户做产品演示时录了屏幕操作视频,里面包含敏感数据。用工具只提取演示视频的音频,再配合屏幕截图软件重新合成,既保留了讲解内容又避免了数据泄露。FFmpeg 后端处理时音频数据不落盘,传输即用即焚。
| 维度 | 本工具 | 竞品 A (Online Video Converter) | 传统方法 |
|---|---|---|---|
| 数据隐私 | 纯浏览器端处理,视频不上传服务器 | 需上传视频到云端服务器 | 依赖第三方剪辑人员,视频需移交他人 |
| 处理速度 | 1 秒内(极快,取决于本地性能) | 5-30 秒(取决于上传带宽和服务器负载) | 数小时至数天(取决于沟通和排期) |
| 离线可用 | 完全离线,无需网络 | 必须联网 | 无需网络,但需安装专业软件 |
| 大小限制 | 无限制(受浏览器内存上限影响) | 通常有 500MB-2GB 文件大小限制 | 无限制(取决于本地硬盘空间) |
| 收费 | 免费 | 免费(有文件大小限制),付费版解除限制 | 按项目或时长收费,成本较高 |
| 注册 | 无需注册,打开即用 | 通常无需注册 | 需联系并委托第三方人员 |
| 平台依赖 | 任何现代浏览器(Chrome, Edge, Firefox 等) | 任何浏览器,但依赖网络服务 | 需在特定电脑上安装剪辑软件(如 Premiere Pro) |
上手步骤 · 输入输出 · 避坑提示
| 输入 | 输出 | 说明 |
|---|---|---|
| https://example.com/video.mp4 | output.mp3 (192kbps, 44100Hz, stereo) | 典型场景:从 MP4 文件提取 MP3 音频 |
| https://example.com/lecture.mov | output.mp3 (192kbps, 44100Hz, stereo) | 典型场景:从 MOV 容器提取音频 |
| https://example.com/clip.avi | output.mp3 (192kbps, 44100Hz, stereo) | 典型场景:从 AVI 容器提取音频 |
| https://example.com/animation.gif | 错误:不支持的文件格式(GIF 为图像序列,无音频流) | 边界 case:用户误传无音频的 GIF 文件 |
| https://example.com/audio_only.wav | output.mp3 (192kbps, 44100Hz, stereo) | 边界 case:输入本身已是音频文件,工具仍可转码 |
| https://example.com/corrupt_video.mp4 | 错误:文件损坏或无法解析 | 易错 case:上传损坏或编码不兼容的视频 |
| https://example.com/4k_hdr.mkv | output.mp3 (192kbps, 44100Hz, stereo) | 边界 case:高分辨率视频不影响音频提取速度 |
| https://example.com/silent_video.mp4 | output.mp3 (192kbps, 44100Hz, stereo) — 静音轨道 | 易错 case:视频有音频轨道但内容为空,仍会生成文件 |
上传一个纯视频画面(无声动画、GIF 转换的 MP4、静音录屏)上传前用播放器确认视频有声音波形或音频轨道FFmpeg 提取音频时若输入流无音频轨道,输出为空文件或静音文件,且不会主动报错提示用户
源视频音频码率 128kbps,输出设置选 320kbps MP3输出码率设为与原音频相同或更低(如 128kbps 或 192kbps)音频提取是转码过程,升码率不会增加信息量,只会增大文件体积;WASM 端受浏览器性能限制,高码率还会导致处理超时
粘贴 YouTube/B站 的网页地址(如 https://www.youtube.com/watch?v=xxx)使用视频文件的直接下载链接(如 https://example.com/video.mp4)工具仅处理直链视频文件,不支持解析流媒体平台页面;粘贴网页 URL 会导致下载失败或返回 HTML 文件
上传从 iTunes/Netflix 下载的 .m4v 或加密 .mp4使用无 DRM 的本地录制或已解密的视频文件FFmpeg 无法解密 DRM 加密流;工具会输出静音文件或直接报错,且浏览器端 WASM 无解密能力
输出格式选 .wav,编码选 MP3(或输出格式 .mp3,编码选 AAC)输出格式与编码保持默认匹配(如 .mp3 → MP3 编码,.wav → PCM 编码)FFmpeg 在格式与编码不匹配时会自动 fallback 或报错;WASM 端部分组合不支持,会导致处理失败
上传 2GB 以上的 4K 视频到浏览器端处理使用后端处理(Go 服务端)或先压缩视频再上传浏览器 WASM 将整个文件加载到内存,Chrome 单 Tab 内存上限约 2-4GB;超大文件会导致浏览器崩溃或标签页无响应
输出格式选 .mp3(有损压缩),期望保留原始 CD 质量输出格式选 .flac 或 .wav(无损格式)MP3/AAC 是有损编码,会丢弃高频和人耳不敏感细节;若需保持原始音频质量,必须选 FLAC 或 WAV(PCM)
源视频音频 48kHz,输出设置采样率选 8000Hz保持默认采样率(与源一致,通常 44100Hz 或 48000Hz)大幅降低采样率会丢失高频信息,导致声音发闷;极低采样率(< 8000Hz)还会引起语音失真和时长计算偏差
公式推导 · 流程图解 · 依据出处
A = V × (1 - C) × S
A — 输出音频文件大小(字节)V — 输入视频文件大小(字节)C — 视频流占比(0~1,通常 0.7~0.9)S — 音频编码压缩比(AAC 约 0.05~0.15)一个 100MB 的 MP4 视频,视频流占比 80%(C=0.8),音频用 AAC 编码压缩比 0.1(S=0.1)。则 A = 100 × (1 - 0.8) × 0.1 = 100 × 0.2 × 0.1 = 2MB。提取后的音频文件约 2MB,与原视频相比体积减少 98%。
适用于常见 H.264/H.265 视频文件(MP4/MKV/AVI),视频流占比基于典型 1080p 视频估算。不含多音轨或极高码率音频(如 DTS-HD)时误差较大。公式基于 FFmpeg 默认 AAC 编码参数,实际输出受视频封装格式和音频采样率影响。
3 种主流语言 · 复制即用
import subprocess
# 使用 FFmpeg 从视频提取高质量音频(320kbps MP3)
input_video = "input.mp4"
output_audio = "output.mp3"
# -vn: 禁用视频流
# -acodec libmp3lame: MP3 编码器
# -b:a 320k: 最高比特率
# -y: 覆盖输出文件
cmd = [
"ffmpeg", "-i", input_video,
"-vn",
"-acodec", "libmp3lame",
"-b:a", "320k",
"-y",
output_audio
]
try:
subprocess.run(cmd, check=True, capture_output=True, text=True)
print(f"提取完成: {output_audio}")
except subprocess.CalledProcessError as e:
print(f"FFmpeg 错误: {e.stderr}")
except FileNotFoundError:
print("请先安装 FFmpeg: https://ffmpeg.org/download.html")package main
import (
"fmt"
"os/exec"
)
func main() {
// 使用 FFmpeg 提取音频为 WAV(无损格式)
input := "input.mp4"
output := "output.wav"
// -acodec pcm_s16le: 16位线性PCM
// -ar 44100: 采样率44.1kHz
// -ac 2: 双声道
cmd := exec.Command("ffmpeg",
"-i", input,
"-vn",
"-acodec", "pcm_s16le",
"-ar", "44100",
"-ac", "2",
"-y",
output,
)
if err := cmd.Run(); err != nil {
fmt.Printf("提取失败: %v\n", err)
return
}
fmt.Printf("提取完成: %s\n", output)
}const { execSync } = require('child_process');
const path = require('path');
function extractAudio(inputPath, outputPath) {
// 使用 FFmpeg 提取 AAC 音频(高质量兼容格式)
const cmd = [
'ffmpeg',
'-i', inputPath,
'-vn', // 忽略视频流
'-c:a', 'aac', // AAC 编码
'-b:a', '256k', // 256kbps 比特率
'-movflags', '+faststart', // 优化流式播放
'-y', // 覆盖输出
outputPath
];
try {
execSync(cmd.join(' '), { stdio: 'inherit' });
console.log(`音频已提取至: ${outputPath}`);
} catch (err) {
console.error('FFmpeg 执行失败:', err.message);
}
}
// 使用示例
extractAudio('input.mp4', 'output.m4a');7 个高频疑问