从视频里抽音频:容器与编码的差异、流复制 vs 重编码

· 约 4 分钟 🎙️ 视频提取音频

把视频里的音频”抽出来”看着简单——选时间段、选格式、点导出。但底层做的事其实包括”理解原视频用什么编码”、“决定要不要解码”、“重新编码到目标格式”几个步骤。这篇讲清容器与编码的关系、流复制和重编码的取舍、本工具的实际行为。

容器(container)vs 编码(codec)

视频文件的扩展名描述的是容器,容器里装的才是编码

容器视频编码(典型)音频编码(典型)
.mp4 / .m4vH.264 / H.265AAC
.movH.264 / ProResAAC / PCM
.webmVP9 / AV1Opus / Vorbis
.mkvH.264 / H.265 / AV1AAC / Opus / FLAC / DTS
.aviXVID / DivXMP3 / AC3
.flvH.264AAC / MP3

实际意义:你看到的 .mp4 文件,里面音轨大概率是 AAC——这是手机录像、剪映、达芬奇、Premiere 的默认。

两条路线:流复制 vs 重编码

原视频 (MP4 + AAC)

  ├─ 流复制 (copy) ──→ .m4a (仍是 AAC)
  │   • 极快(IO 瓶颈,5 分钟视频 < 1 秒)
  │   • 零质量损失
  │   • 但只能输出和原编码相同的格式

  └─ 重编码 (re-encode) ──→ MP3 / WAV / AAC(不同编码)
      • 慢(CPU 瓶颈,5 分钟视频 5-30 秒)
      • 重新编码会有有损损失(除非选 WAV)
      • 可输出任意目标格式 + 精确切时间段

本工具的选择:始终重编码

维度本工具行为
引擎ffmpeg.wasm(浏览器本地)
输出编码总是重新编码(无 copy 模式)
输出格式MP3 / WAV / AAC
时间段裁切样本级精确
处理速度5 分钟视频约 5-15 秒
输入格式MP4 / MOV / WebM / MKV / AVI 等

为什么不做流复制

  1. 用户大多数想要 MP3——这必然要从 AAC 重编码
  2. 时间段裁切要样本级精确——必须重编码
  3. 工具简单确定性优于”快几秒”——5 分钟视频差几秒无所谓

想要极速流复制:用桌面 ffmpeg 命令行:

ffmpeg -i video.mp4 -vn -c:a copy audio.m4a

输出格式选什么

用途推荐
兼容性优先(邮件附件、嵌入文章、发微信)MP3 192k
苹果生态、自己听M4A(AAC 192k)
后续要剪辑 / 加滤镜WAV(避免链式有损)
转写文字 / 输入 ASRMP3 96k(讲话足够)
学习外语 / 反复听MP3 192k

默认推荐:MP3 192k——所有设备都能播、体积合理、音质对讲话/音乐都够。

时间段裁切的精度

本工具支持指定起止时间——精度到毫秒:

输入实际处理
0:3030.0 秒
1:30.590.5 秒
0:01:3090 秒

实际切点精度

  • WAV:样本级精确(44100 Hz → 22.7μs)
  • MP3 / AAC:重编码引入新帧边界,但起止点对齐到样本,不会差一整帧(< 1ms)

想要绝对样本级:导出 WAV,自己处理。

体积估算

按照”码率 × 时长”线性增长:

码率1 分钟10 分钟1 小时
MP3 96k720 KB7.2 MB43 MB
MP3 128k960 KB9.6 MB58 MB
MP3 192k1.4 MB14 MB86 MB
MP3 320k2.4 MB24 MB144 MB
AAC 192k1.4 MB14 MB86 MB
WAV 44.1k10 MB100 MB600 MB

经验:1 小时讲座选 MP3 96k 够(讲话),1 小时音乐至少 192k。

几个常见踩坑

1. 视频”没声音”或音轨为空

源视频本身就没有音轨——监控录像、屏幕截录、纯无声片头都可能。先在播放器里确认有声音再来抽。

2. 多音轨视频只抽了一条

电影、纪录片常有多语言音轨(国语、英语、导演评论)。本工具只取默认那条(通常第一条)——想抽其他音轨需要桌面 ffmpeg:

ffmpeg -i movie.mkv -map 0:a:1 -c:a copy track2.aac

3. 加密视频抽不出

iTunes 购买的 m4v、Netflix 离线缓存有 DRM 保护——任何工具都解不开(合法层面)。

4. 提取后是 .aac 扩展名播放器不认

本工具 AAC 输出是裸 AAC 流(.aac 扩展名),部分播放器不识别。改成 .m4a 扩展名手动包到 MP4 容器 或重新转成 MP3。

当前工具的真实边界

维度实际能力
输入容器MP4 / MOV / WebM / MKV / AVI / FLV / WMV / 3GP
输入音频编码AAC / Opus / Vorbis / MP3 / AC3(基本)/ 其他多数浏览器原生支持的
输出格式MP3 / WAV / AAC(128/192/320 kbps)
时间段裁切起止时间,样本级精确
多音轨选择不支持(取默认音轨)
DRM 加密不支持
处理位置浏览器本地(不上传)

一句话总结

视频里的音频通常是 AAC 编码 + 容器(MP4/MOV/WebM);理论最快是流复制(直接搬到 .m4a),但本工具为了支持 MP3 / WAV / 时间段裁切始终重编码——慢几秒换来格式确定性;要 MP3 选 192k,要无损选 WAV,要小选 96k 讲话足够。

❓ 常见问题

MP4 视频里的音频本来是什么格式?为什么要"重编码"?

绝大多数 MP4 / MOV 视频的音轨是 AAC 编码(移动端拍摄、剪映 / 达芬奇 / Premiere 默认输出几乎都是 AAC)。理论上最高效的做法是流复制(stream copy)——直接把 AAC 数据从 MP4 容器里"取出来"放到 .m4a 容器,无任何重编码、瞬间完成、零损失。实际为什么很多工具都重编码:(1) 用户想要 MP3 输出(兼容性最广)——AAC 不能直接复制成 MP3,必须解码 + 重编码;(2) 想要时间段裁切("只要 1:30 到 3:00")——精确切点常落在 frame 中间,必须重编码才能精确;(3) 用户想要 WAV(无损 PCM)——必须解码到原始样本。本工具的选择:始终重编码(输出 MP3 / WAV / AAC),换来格式确定性,代价是处理时间——典型 5 分钟视频提取约 3-10 秒。

输出选 MP3 还是 AAC(M4A)?

默认 MP3,除非有特定理由。(1) MP3 兼容性最广(车载音响、老 MP3 播放器、嵌入式设备),但同码率音质略差;(2) AAC 同码率音质更好,移动端原生支持,苹果生态首选;(3) WAV 无损但体积大(1 分钟约 10MB)。实务:(1) 嵌入文章 / 邮件附件 / 发微信 → MP3 192k;(2) 自己存档 / 苹果设备播放 → AAC(M4A);(3) 后续要剪辑 / 加效果 / 上传 DAW 软件 → WAV,避免有损链式损失。本工具的输出:选 AAC 输出的是裸 AAC 流(.aac 扩展名),不是 M4A 容器。MP3 安全选——所有平台都能播。

视频时长 1 小时音轨竟然 30MB?我以为应该更小

1 小时音轨 30MB 完全正常。算法:MP3 192kbps × 3600 秒 = 691,200 kbit ≈ 86 MB;MP3 128kbps 约 57 MB。为什么觉得"应该更小":人对音频体积的直觉常基于歌曲(3-4 分钟,几 MB),但电影 / 课程 / 播客是连续 1 小时以上,按时长线性涨。估算公式:(1) MP3 128k → 1 分钟约 1MB;(2) MP3 192k → 1 分钟约 1.5MB;(3) MP3 320k → 1 分钟约 2.5MB;(4) WAV 16-bit/44.1kHz → 1 分钟约 10MB;(5) AAC 192k → 1 分钟约 1.4MB(比 MP3 同码率小 5-10%)。想要更小:(1) 选低码率(讲话类 96k 够);(2) 只提取需要的时间段(本工具支持起止时间);(3) 输出 AAC 比 MP3 省 5-10%。

为什么有的视频"提取音频"失败或音轨不全?

几个常见原因:(1) 视频本身没音轨——纯演示 / 监控录像 / 屏幕截录可能就是无声的,本工具会提示空音频;(2) 多音轨视频(电影常见,国语 + 英语 + 评论),ffmpeg 默认只提取第一条,需要手动指定 -map;本工具没有多音轨选择 UI,只取默认音轨;(3) 视频用了不常见编码(AC3 / DTS / TrueHD,常见于蓝光 rip),ffmpeg.wasm 编译时未必带这些解码器;(4) DRM 保护——iTunes 购买的 m4v、Netflix 离线缓存等加密视频解不开;(5) 损坏的容器——下载中断的 mp4 索引(moov atom)位置错误,需要先用 untrunc 之类工具修复。实务:(1) 简单的 mp4 / mov / webm / mkv 都没问题;(2) 多音轨需求 → 桌面 ffmpeg 命令行;(3) 加密内容只能合法源头解决(购买无 DRM 版本)。

"流复制"为什么这么快?我能用吗?

流复制 = 不解码不重编码,直接把数据从一个容器搬到另一个容器。命令对比:(1) 重编码 ffmpeg -i in.mp4 -c:a libmp3lame -b:a 192k out.mp3 —— 解码 AAC、重新编码 MP3,慢;(2) 流复制 ffmpeg -i in.mp4 -vn -c:a copy out.m4a —— 直接把 AAC 数据搬到 M4A 容器,瞬间完成。速度差:1 小时视频流复制约 2-5 秒(IO 瓶颈),重编码约 30-90 秒(CPU 瓶颈)。本工具的选择:始终重编码——理由:(1) 三个输出格式(MP3 / WAV / AAC)都和原 AAC 不一定能直接复制;(2) 时间段裁切需要重编码精确;(3) 输出格式确定性优先于速度。想要流复制:(1) 只在桌面命令行 ffmpeg 里能轻松做到;(2) 部分付费工具如 Audio Hijack(Mac)支持;(3) 在线工具大多和本工具一样统一重编码。实务:(1) 视频时长 < 1 小时本工具几秒到几十秒搞定,无所谓;(2) 几小时的录课 / 播客考虑桌面工具流复制;(3) 流复制后 .m4a 在所有平台都能播。

同一个视频抽出来的 MP3 和 AAC,码率为什么都设了 192k 但听起来不一样?

因为编码器不同。(1) MP3 用 LAME 编码器(业界事实标准),192kbps 的实际可变码率约 ±5%;(2) AAC 用 ffmpeg 内置的 native AAC 编码器(不是最强的 fdk-aac,因为 fdk-aac 协议不兼容自由开源软件分发),192kbps 实测音质大约相当于 fdk-aac 的 160k。听感差异来源:(1) 高频细节——AAC 比 MP3 处理得更精细;(2) 立体声宽度——AAC 的 IS(强度立体声)保留得更好;(3) 瞬态——MP3 在 192k 已经能很好处理瞬态,AAC native 略弱于 fdk-aac。实务:(1) 兼容性优先 → MP3 192k 安心选;(2) 音质优先且不在意 + 几 KB 体积 → 也选 MP3 192k(因为本工具用 native AAC,不一定胜过 LAME MP3);(3) 未来本工具如果换成 fdk-aac 会更清晰,但目前差异不大。

时间段裁切(起止时间)会精确到帧吗?

不会精确到样本,但精确到 ~1ms 级别。MP3 / AAC 是帧编码:MP3 一帧 26ms(44.1kHz / 1152 样本),AAC 一帧 21ms(44.1kHz / 1024 样本)。FFmpeg 的 -ss + 重编码组合:(1) 先解码到原始 PCM 样本;(2) 在指定时刻精确切;(3) 重新编码成目标格式——这步会引入新的帧边界,但起止点都对齐到样本,不是丢一整帧。和"流复制时切"的差:纯流复制(不重编码)切只能在帧边界切,可能比指定时刻晚 0-26ms;重编码切是样本级精确。实务:(1) 提取一段台词、一首歌:精度足够;(2) 拼接多段且在意"无缝衔接"——重编码切之后还可能有第一帧的编码 silence,需要用 -af aresample=async=1 之类处理;(3) 想样本级精确(科学分析、字幕同步):导出 WAV 自己处理。

视频里能不能只抽出"对话"过滤掉背景音乐?

本工具不能——这需要"声源分离"(source separation),属于 AI 范畴。原理:训练一个神经网络区分 "人声" 与 "背景",从混合信号中估计两者各自波形。主流方案:(1) Spleeter(Deezer 开源,CPU 可跑)——分离 2/4/5 条轨,对流行歌效果好;(2) Demucs(Meta 开源)——比 Spleeter 更准但慢;(3) iZotope RX(商业)——好莱坞影视后期常用;(4) Adobe Podcast Enhance(云服务,免费)——专门优化讲话场景,去背景噪声;(5) Lalal.ai(云)——按时长付费。实务:(1) 想要纯净对话上 Adobe Podcast Enhance(直接上传,几秒返回);(2) 想要去掉电影对话留下 BGM 上 Spleeter / Demucs;(3) 本工具只做格式转换 + 时间段切,不做内容分离。

🎙️ 打开 视频提取音频 从视频提取音轨·MP3/WAV/AAC·时间段截取·全程本地不上传