FFmpeg 音频处理从入门到凑合听:转格式、剪音频、混音、降噪我全记下来了(附 VidDown 工具集介绍)

音视频开发之旅(66) - 音频变速不变调的原理 音频变速不变调的原理 阅读详情

FFmpeg 音频处理从入门到凑合听:转格式、剪音频、混音、降噪我全记下来了(附 VidDown 工具集介绍)

之前那几篇 FFmpeg 博客都讲视频,这次专门写一篇音频的。起因是上个月做了个播客剪辑的小工具,要把嘉宾的录音降噪、调音量、拼成一条,再加个背景音乐。折腾下来发现 FFmpeg 处理音频比视频简单得多(滤镜少,速度快),但坑也不少——比如音量归一化、多音轨选择、格式兼容性。这篇把常用的音频命令和踩过的坑全记下来。

本文由 VidDown 提供支持

一、音频处理的基本概念(一句话版)

  • 采样率(sample rate):常见 44100 Hz(CD 质量)、48000 Hz(视频常用)。
  • 声道(channels):单声道(mono)、立体声(stereo)、5.1 等。
  • 码率(bitrate):128k、192k、320k,越高越清晰,文件越大。
  • 编码格式:MP3、AAC、Opus、FLAC(无损)、PCM(原始)。
  • 容器:MP3、M4A、FLAC、WAV(PCM 封装)。

FFmpeg 里音频相关的参数前缀一般是 -a(audio)或直接复用 -c:a。

二、安装(快速过)

FFmpeg 安装看第一篇博客。确保编译时带了常用音频编码器:

ffmpeg -encoders | grep -E "mp3|aac|libopus"

如果没有 libmp3lame 或 aac,用完整版二进制。

三、常用音频参数速查

参数	含义	例子
-c:a	音频编码器	-c:a libmp3lame
-b:a	音频码率	-b:a 128k
-ar	采样率	-ar 44100
-ac	声道数	-ac 1(单声道)
-af	音频滤镜	-af "volume=2.0"
-vn	不包含视频	提取纯音频
-map 0:a:0	选第一个输入的第一个音频流	多音轨时用

四、基础转换命令

4.1 格式转换(不改变质量)

# MP3 转 M4A(AAC)
ffmpeg -i input.mp3 -c:a aac -b:a 192k output.m4a
# FLAC 转 MP3(无损 → 有损)
ffmpeg -i input.flac -c:a libmp3lame -b:a 320k output.mp3
# 任意格式转 WAV(PCM,无损,巨大)
ffmpeg -i input.mp3 output.wav

4.2 从视频中提取音频

# 提取为 MP3(质量中等)
ffmpeg -i video.mp4 -vn -c:a libmp3lame -b:a 192k audio.mp3
# 提取为 AAC(更小)
ffmpeg -i video.mp4 -vn -c:a aac -b:a 128k audio.m4a
# 提取原始音频流(不编码,直接复制)
ffmpeg -i video.mp4 -vn -c:a copy audio.aac

踩坑:-c:a copy 要求视频里的音频编码格式是你想要的容器支持的。比如 MP4 里的 AAC 可以直接改后缀为 .aac,但 YouTube 下载的 opus 不能直接塞进 MP3 容器。

五、常用滤镜(音频特效)

5.1 音量调节(volume)

# 音量翻倍
ffmpeg -i input.mp3 -af "volume=2.0" output.mp3
# 降低一半
ffmpeg -i input.mp3 -af "volume=0.5" output.mp3
# 用分贝表示(增加 10dB)
ffmpeg -i input.mp3 -af "volume=10dB" output.mp3

5.2 音量归一化(loudnorm / dynaudnorm)
使用 loudnorm(EBU R128 标准,适合统一响度):

ffmpeg -i input.wav -af loudnorm=I=-16:LRA=11:TP=-1.5 output.wav

参数解释:

1、I:整体响度(-16 适合播客,-23 适合电视)
2、LRA:响度范围
3、TP:真峰值上限

使用 dynaudnorm(简单动态音频归一化):

ffmpeg -i input.mp3 -af dynaudnorm output.mp3

踩坑:loudnorm 第一次跑可以加 -af loudnorm=print_format=json 打印分析结果,再用测量值做第二次处理。直接跑可能会让峰值过载。

5.3 淡入淡出(afade)

# 淡入 3 秒
ffmpeg -i input.mp3 -af "afade=t=in:st=0:d=3" output.mp3
# 淡出 5 秒,从第 60 秒开始
ffmpeg -i input.mp3 -af "afade=t=out:st=60:d=5" output.mp3

5.4 降噪(高切 / 低切)
去除低频哼声(高通滤波):

ffmpeg -i input.mp3 -af "highpass=f=80" output.mp3
去除高频嘶声(低通滤波):
bash
ffmpeg -i input.mp3 -af "lowpass=f=3000" output.mp3
更高级的降噪需要 afftdn(FFT 降噪),先采集噪声样本:
bash
# 提取前 0.5 秒作为噪声样本
ffmpeg -i input.wav -ss 0 -t 0.5 noise.wav
# 应用降噪
ffmpeg -i input.wav -i noise.wav -af "afftdn=sn" output.wav

5.5 变速不变调(atempo)

# 加速 20%(1.2 倍速)
ffmpeg -i input.mp3 -af "atempo=1.2" output.mp3
# 减速 20%(0.8 倍速)
ffmpeg -i input.mp3 -af "atempo=0.8" output.mp3
# 变调不变速(rubberband 需要单独编译,一般用 asetrate 会变时长)

踩坑:atempo 范围是 0.5 到 2.0。需要更快的可以链式调用:atempo=2.0,atempo=2.0 实现 4 倍速。

六、实战命令(我每天都用)

6.1 把一段长录音剪出精彩片段(不重新编码)

ffmpeg -i recording.mp3 -ss 00:01:30 -to 00:03:45 -c copy clip.mp3

-c copy 速度飞快但可能切割点不精确(关键帧问题)。如果要求精确到毫秒,去掉 -c copy 重新编码。

6.2 合并多个音频文件
先创建 list.txt:

file 'part1.mp3'
file 'part2.mp3'
file 'part3.mp3'

然后:

ffmpeg -f concat -safe 0 -i list.txt -c copy merged.mp3

踩坑:所有文件的编码格式、采样率、声道数必须一致,否则拼接后有奇怪杂音。可以先用 ffmpeg -i input -ar 44100 -ac 2 统一格式。

6.3 背景音乐 + 人声混合(overlay 音频)
把背景音乐音量降低,和人声混在一起:

ffmpeg -i voice.mp3 -i bgm.mp3 -filter_complex "[1:a]volume=0.3[b];[0:a][b]amix=duration=longest" output.mp3

amix=duration=longest 表示按最长的音频长度混合(不会截断)。

6.4 声道分离与合并
提取左声道(mono):

ffmpeg -i stereo.mp3 -af "pan=mono|c0=c0" left.mp3

把两个单声道合并为一个立体声:

ffmpeg -i left.mp3 -i right.mp3 -filter_complex "[0:a][1:a]amerge" -ac 2 output.mp3

6.5 给音频添加封面图片(做成带封面的 MP3)

ffmpeg -i audio.mp3 -i cover.jpg -map 0:a -map 1:v -c copy -id3v2_version 3 output.mp3

七、问题汇总(全部真实踩过)

  1. 转出来的 MP3 播放器不识别
    原因:可能是 ID3 标签版本问题,或者编码时用了不标准的参数。
    解决:加 -id3v2_version 3 -write_id3v1 1 参数,或者改用 -c:a libmp3lame 明确指定编码器。

  2. 音量归一化后,有些地方反而更小声了
    原因:loudnorm 会整体压缩动态范围,如果原始音频有很响的片段,会把整体拉低。
    解决:先手动剪辑掉过响的段落,或者用 dynaudnorm 替代(动态范围保持更好)。

  3. 合并音频时出现“采样率不一致”错误
    错误信息:[concat @ …] Input link in1 parameters (sample rate) do not match。
    解决:先统一采样率:

ffmpeg -i input1.mp3 -ar 44100 tmp1.mp3
ffmpeg -i input2.mp3 -ar 44100 tmp2.mp3
# 再合并
  1. 背景音乐和人声混合后,人声发闷
    原因:背景音乐在中频段和人声重叠。
    解决:在背景音乐上做 EQ 衰减中频(1000-4000Hz):
ffmpeg -i voice.wav -i bgm.wav -filter_complex "[1:a]afftfilt=real='re * (1 + 0.5*sin(2*PI*2000*t))'[e];[0:a][e]amix" output.wav

更简单:直接用专业音频软件(Audacity)处理,FFmpeg 的 EQ 不够直观。

  1. 从视频提取音频后,时长变短了
    原因:视频最后一帧带静音,或者有垃圾数据。
    解决:用 ffmpeg -i video.mp4 -vn -c:a copy -map 0:a audio.aac 直接复制不重新编码;如果还短,用 -copyts 保留时间戳。

  2. 想把 MP3 转成单声道减少体积,但声音变形
    原因:左右声道相位相反,下混时相互抵消。
    解决:用 -af “pan=mono|c0=c0+c1” 强制相加而不是取平均。

  3. ffmpeg 提示 No such filter: ‘loudnorm’
    原因:FFmpeg 版本太老(4.x 之前的版本没有 loudnorm)。
    解决:升级 FFmpeg 到 4.0 以上,或者用 dynaudnorm 替代。

八、一点小建议

1、处理音频时,尽量先用 WAV 无损格式作为中间文件,避免反复压缩损失质量。最后再转成 MP3/AAC。
2、音量归一化推荐 loudnorm,参数先跑一次分析模式 -af loudnorm=print_format=json,看测量结果再微调。
3、批量处理:写个脚本循环,每个文件单独处理,避免一次性吃太多内存。
4、音视频分离再合并时,注意时间戳对齐。可以先导出音频时间戳 ffprobe 检查。
写这篇的时候我又翻车了:想把一段 5.1 声道的 AC3 转成双声道的 MP3,结果出来的全是杂音。后来发现需要先 -ac 2 下混,再指定编码器。最终命令:

ffmpeg -i 5.1.ac3 -ac 2 -c:a libmp3lame -b:a 192k stereo.mp3

声音终于正常了。

音频处理比视频简单,但细节一样不能错。记住 -c:a、-b:a、-af、-map 就够日常用了。剩下的遇到再查文档,别硬背。

最后推荐一个我的音频转换别名:

alias mp3-to-m4a='for f in *.mp3; do ffmpeg -i "$f" -c:a aac -b:a 128k "${f%.mp3}.m4a"; done'
alias loudnorm-podcast='ffmpeg -i "$1" -af loudnorm=I=-16:LRA=11:TP=-1.5 -ar 44100 -ac 2 "$1"_norm.mp3'

存到 .bashrc 里,省得每次敲一堆参数。

ffmpeg音频处理-java实现 FFmpeg的equalizer(均衡器)滤镜是一个强大的音频滤波器,用于调节音频信号中各个频率的增益。通过操控不同频率的增益,均衡器可以提升或衰减音频信号中特定频段的音量,从而改变音频的整体音色或突出某些频率范围。均衡器滤镜常用于音频处理,如增强人声、去除背景噪声或调整音乐音色,以达到更好的听觉效果。FFmpeg的volumedetect滤镜是一个用于检测音频文件中音量信息的滤镜。通过分析音频文件,volumedetect能够提供详细的音量统计数据,包括最大音量、平均音量和音量峰值等。 阅读详情

相关推荐

音频倍速(变速不变调)的实现

背景:         项目需要,开发一款自己的安卓端播放器,其中需要有一个视频倍速播放的功能。需要实现的效果是变速不变调。项目基于FFMpeg和WebRtc,通过FFMpeg从网络读取视频流,经过解封装、解复用分离成音频数据包和视频数据包。并分别对音视频数据包进行解码,解码完成之后的音频PCM(44100Hz,16bit,MONO)数据通过WebRtc提供的接口抛给AudioTrack,视

小伙儿在这儿烤地瓜 2万+

全面解析 VidDown:一个免费、纯净、全能的在线工具站

全面解析 VidDown:一个免费、纯净、全能的在线工具站

zlcentos的博客 3567

告别瞎猜!用通达信L2资金流向函数,手把手教你识别主力动向(附实战公式)

本文详细解析通达信L2资金流向函数,手把手教你构建主力动向监控系统。通过分档数据解析、委买委卖攻防解读及实战公式应用,帮助投资者精准识别主力建仓与虚假拉升信号,提升股票交易决策效率。

weixin_26908317的博客 2032

FFplay文档解读-20-音频过滤器五

合唱类似于具有短延迟的回声效果,但是对于回声,延迟是恒定的,伴随合唱,使用正弦或三角调制来改变它。因此,延迟的声音将听起来更慢或更快,即在原始声音周围调谐的延迟声音,就像在合唱中,其中一些声音略微偏离键。攻击是指音量的增加,衰减指的是音量的减少。使用更大的窗口导致更强的平滑效果,因此导致更少的增益变化,即更慢的增益适应。相反,使用较小的窗口导致较弱的平滑效果,因此导致更多的增益变化,即更快的增益适应。特别是,对于音频文件中的前几帧,前面的帧是未知的。并且,类似地,对于音频文件中的最后几帧,后续帧是未知的。

irainsa的博客 784

AI学习记录 - transformer的位置编码的理解

先看三角函数为什么可以,我们看下三角函数的图像先提一个点:位置信息肯定是唯一的,或者是在很长的文字当中,起码重复度不会太高,x轴代表位置,y轴代表叠加上去的值1、假设只使用一个三角函数sin,我们将第2和第14两个位置输入到sin,他们的值很像,在神经网络的训练中,很容易把第2个位置和第14个位置当成是一个位置,不满足我们上面说到的要求位置唯一性。sin2sin14。

weixin_43954090的博客 1410

100天精通Python(数据分析篇)——第53天:初识pandas模块_基础介绍

一、初始pandas 1. 什么是pandas? 2. 为什么要学习pandas? 3. pandas的优势 4. 下载安装pandas 二、Pandas的数据类型 1. Series 2. DataFrame

努力让自己发光,对的人才能迎着光而来 17万+

【音频处理】Loudness Normalization 响度均衡算法简介

关于响度的概念,以及响度标准化 EBU R.128 的讨论,网上已经有很多优秀的博客了,我就不再赘述了。音频 响度标准化 EBU R.128关于响度的拾遗看完这些介绍,你对响度或多或少已经有了些概念,它是对声音强度的一种描述,它是一种「主观」的心理量,影响因素包括很多,例如信号持续时长、频率特征、声场特性等等。为了测量出音频的响度,有很多组织提出了不同的标准,今天我们要介绍的是由 EBU(European Broadcasting Union,欧洲广播联盟)提出的 EBU-R128 标准。

记录学习的过程 9433

【教程4>第4章>第12节】通过FPGA实现基于FFT变换的频偏估计和补偿

基于FFT变换的频偏估计和补偿,其基本原理如下:而频偏补偿的目的是将频偏后的信号频谱移回原来的位置。

FPGA/MATLAB学习教程/源码/项目合作开发 879

这周学点变速不变调、变调不变速

参考博客:https://www.cnblogs.com/welen/p/3782896.html 人的发音器官包括:肺、器官、喉(声带)、咽、鼻和口等。喉以上的部分称为声道,随着发音的不同其形状是变化的,喉的部分称为声门。在发音器官中,肺和气管是整个系统的能源,喉是主要声音生成的机构,声道负责对生成的声音进行调制。语音是由空气流激励声道最后从嘴唇或鼻腔或同时从嘴唇和鼻腔辐射出来而...

fishllife的博客 8336

STM32+FreeRTOS环境下LwIP协议栈移植详解

本文详细介绍了在STM32F407ZGT6平台上移植轻量级TCP/IP协议栈LwIP的过程。使用FreeRTOS操作系统和LAN8720A以太网PHY芯片,通过STM32CubeMX生成基础工程配置。重点包括LwIP源码的获取与工程集成、关键配置文件的编写(如lwipopts.h)、操作系统适配层sys_arch.c的实现,以及以太网接口驱动ethernetif.c的移植。文章特别强调内存管理、中断优先级、硬件校验和等关键配置项的注意事项,为基于STM32和LwIP的嵌入式网络开发提供了实用参考。

电脑管家 732

YOLOv8改进,YOLOv8主干网络替换为FasterNet(全网独发手把手教学,助力涨点)

FasterNet的整体架构由四个分层阶段组成,每个阶段包含一组FasterNet模块,并在前面加一个嵌入或合并层。最后三层用于特征分类。每个FasterNet模块内部,一个PConv层后跟两个PWConv层,为了保持特征多样性并降低延迟,归一化和激活层仅在中间层之后进行,其中,PConv 是一种快速高效的卷积操作,通过仅对部分输入通道应用卷积滤波器,而保持其余通道不变,从而减少了计算量和内存访问。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 2006

Linux,使用FFmpeg进行MKV视频音量自适应调整

FFmpeg 是一款开源的多媒体处理工具,支持视频、音频的转换、编辑、处理等功能。它几乎支持所有常见的音视频格式,并提供丰富的滤镜和功能,适用于各种专业和日常的音视频处理场景。dynaudnorm对于一些更复杂的场景,你可以进一步自定义dynaudnorm通过FFmpeg的dynaudnorm滤镜,你可以轻松实现音量自适应调整,为视频的音频处理提供高效的解决方案。这不仅提升了视频的播放体验,还能为你在处理音视频项目时节省大量时间和精力。

q742971636的博客 1077

把 ABAP ALE Change Pointers 讲透:从 CDHDR/CDPOS 到 BDCP2,再到 RBDMIDOC 的自动分发链路

摘要:SAP ALE Change Pointers机制在系统集成中实现业务变更与数据分发的解耦。它记录业务对象变更(如SAP主数据修改),但不立即发送,而是由后续分发逻辑决定发送时机和方式。该机制包含两层:Change Documents记录审计级变更明细,Change Pointers标记需分发的关键变更。配置核心包括全局开关、消息类型激活和字段选择。典型应用如零售价格条件变更自动推送至POS系统,通过BDCP2表存储待处理队列,由RBDMIDOC程序定时评估生成IDoc。运维需关注定期清理和性能优化,

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 196

ffmpeg调整音频音量踩坑

前一阵用Flutter结合ffmpeg做了一个音视频合并功能,记录一下遇到的问题。

唯鹿的博客 6520

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

可以下视频的浏览器 VideoDown

摘要:推荐一款由吾爱出品的浏览器,支持直接下载在线观看的视频。用户可通过网盘链接下载(百度网盘地址:https://pan.baidu.com/s/11ipsWQd_ehbj_4aUzvfQxA,提取码:se7b)。该浏览器功能实用,使用体验良好,值得一试。(49字)

hbqjzx的专栏 578

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

FFmpeg入门教程(非常详细)从零基础入门到精通,看完这一篇就够了。

FFmpeg全称为Fast Forward Moving Picture Experts Group,于2000年诞生,是一款免费,开源的音视频编解码工具及开发套件。它的功能强大,用途广泛,大量用于视频网站和商业软件(比如 Youtube 和 iTunes)。FFmpeg 本身是一个庞大的项目,包含许多组件和库文件,最常用的是它的命令行工具example:对输入视频缩放至320:240:ffmpeg -i input.mpg -vf scale=320:240 output.mp4。

Javachichi的博客 9万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

在ff_ffplay.c中AVfilter 音频过滤loudnorm全流程详细分析

以loudnorm为例子,快速了解AVfilter音频过滤一般流程。进而面对其他音频优化需求时,能更快上手。 学习ffmpeg的AVfilter模块化设计,了解c实现复杂滤波器图中各个滤波器协作运行的基本原理。

qq_45130467的博客 676

FFMPEG详解(完整版)

FFMPEG堪称自由软件中最完备的一套多媒体支持库,它几乎实现了所有当下常见的数据封装格式、多媒体传输协议以及音视频编解码器,堪称多媒体业界的瑞士军刀。因此,对于从事多媒体技术开发的工程师来说,深入研究FFMPEG成为一门必不可少的工作,可以这样说,FFMPEG之于多媒体开发工程师的重要性正如kernel之于嵌入式系统工程师一般。几个小知识:FFMPEG项目是由法国人Fabrice Bellard发起的,此人也是著名的CPU模拟器项目QEMU的发起者,同时还是的保持者。

yinshipin007的博客 1万+

FFmpeg常用命令汇总

ffmpeg常用命令

好好学习,天天向上 2万+

VidDown 工具站:免费、本地优先的开发者工具箱

VidDown 可能不是功能最多的工具站,但一定是最让人放心、最省心的之一。我会持续维护下去,让它越来越稳定、越来越好用。如果你还没试过,欢迎访问 www.viddown.cn 体验。版权声明:本文为 VidDown 原创,转载需保留出处。所有工具仅供个人学习使用,请遵守各平台服务条款。

zlcentos的博客 2359

变速不变调方法

语音变速不变调,即语音时长规整,是指不改变原说话人的音调及语义信息,只改变说话人的语速。 语音变速不变调算法有三大类:时域法、频域法、参量法,如表2-1所示。 表2-1 变速不变调算法分类 时域法 频域法 参量法 剪贴法 LSEE-MSTFTM 相位声码器 SOLA、SOLA-FS ...

aig8440的博客 928

vs2013编译ffmpeg之十二 libebur128

libebur128 从https://github.com/jiixyj/libebur128下载代码。 libebur128,响度归一化(Loudness Normalization)标准“EBU R 128”的库。相关资料:http://k.ylo.ph/2016/04/04/loudnorm.html。 ffmpeg-3.0默认支持EBUR128_filter,没有–enable-l...

枫林港的博客 723

VideoDownloader终极指南:5步掌握全平台视频下载利器

VideoDownloader是一款专为开发者、内容创作者和教育工作者设计的全平台视频下载工具,支持M3U8/MP4格式下载、智能断点续传和多任务并发处理。无论你是需要批量保存在线课程,还是构建个人媒体库,这款工具都能提供稳定高效的解决方案。 ## 🚀 快速启动:环境配置与项目集成 ### 第一步:获取项目源码 在开始使用前,首先需要获取项目源码。打开终端,执行以下命令: ```bash

gitblog_00244的博客 535

VidDown 工具集:我把 20+ 个常用开发工具集成到一起,目前免费且本地处理数据

VidDown 当前是一个尽力保持干净、高效、尊重用户隐私的工具集合。我会持续维护它,让它更稳定、更好用。如果你有兴趣,欢迎访问 https://www.viddown.cn 体验。版权声明:本文为 VidDown 原创,转载需保留出处。

zlcentos的博客 1490

ffmpeg音频的基本概念

1. 采样率 采样设备每秒抽取样本的次数 2.音频格式及量化精度(位宽) 每种音频格式有不同的量化精度(位宽),位数越多,表示值就越精确,声音表现自然就越精准。FFMpeg中音频格式有以下几种,每种格式有其占用的字节数信息: 正在上传…重新上传取消 enum AVSampleFormat { AV_SAMPLE_FMT_NONE = -1, AV_SAMPLE_FMT_U8, ///< unsigned 8 bits AV_SAM...

YanWenCheng_的博客 1833
上一篇: 密码生成器 + UUID 生成器:告别“123456”和重复ID的烦恼(附 VidDown 工具集介绍)
下一篇: VLC media player 从入门到藏宝:一个播放器能做的远不止播放
VidDown
博客等级 码龄7年 2粉丝 77原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值