ffmpeg-audio-processing
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseFFmpeg 音频处理技能 · 实用场景示例
FFmpeg 音频处理技能 · 实用场景示例
目标:提供最常用、最实用的 FFmpeg 音频处理命令,按需求频次从高到低排序
目标:提供最常用、最实用的 FFmpeg 音频处理命令,按需求频次从高到低排序
音频属性查看
音频属性查看
bash
undefinedbash
undefined查看音频属性
查看音频属性
ffmpeg -i input.mp3 2>&1
undefinedffmpeg -i input.mp3 2>&1
undefined音频格式转换(最常用)
音频格式转换(最常用)
bash
undefinedbash
undefinedMP3 转 WAV(无损)
MP3 转 WAV(无损)
ffmpeg -i input.mp3 output.wav
ffmpeg -i input.mp3 output.wav
WAV 转 MP3(高质量,VBR 0)
WAV 转 MP3(高质量,VBR 0)
ffmpeg -i input.wav -q:a 0 output.mp3
ffmpeg -i input.wav -q:a 0 output.mp3
WAV 转 MP3(中等质量,192kbps CBR)
WAV 转 MP3(中等质量,192kbps CBR)
ffmpeg -i input.wav -b:a 192k output.mp3
ffmpeg -i input.wav -b:a 192k output.mp3
任意格式转 AAC(适合视频配音)
任意格式转 AAC(适合视频配音)
ffmpeg -i input.mp3 -c:a aac -b:a 256k output.m4a
ffmpeg -i input.mp3 -c:a aac -b:a 256k output.m4a
任意格式转 OGG(开源格式)
任意格式转 OGG(开源格式)
ffmpeg -i input.mp3 -c:a libvorbis -q:a 4 output.ogg
ffmpeg -i input.mp3 -c:a libvorbis -q:a 4 output.ogg
任意格式转 FLAC(无损压缩)
任意格式转 FLAC(无损压缩)
ffmpeg -i input.wav -c:a flac output.flac
undefinedffmpeg -i input.wav -c:a flac output.flac
undefined音频压缩
音频压缩
bash
undefinedbash
undefinedMP3 压缩(VBR 2,平衡质量与大小)
MP3 压缩(VBR 2,平衡质量与大小)
ffmpeg -i input.mp3 -q:a 2 output_compressed.mp3
ffmpeg -i input.mp3 -q:a 2 output_compressed.mp3
MP3 压缩(VBR 4,更小体积)
MP3 压缩(VBR 4,更小体积)
ffmpeg -i input.mp3 -q:a 4 output_small.mp3
ffmpeg -i input.mp3 -q:a 4 output_small.mp3
AAC 压缩(128kbps,适合网络传输)
AAC 压缩(128kbps,适合网络传输)
ffmpeg -i input.m4a -c:a aac -b:a 128k output_compressed.m4a
ffmpeg -i input.m4a -c:a aac -b:a 128k output_compressed.m4a
批量压缩 MP3
批量压缩 MP3
for file in *.mp3; do
ffmpeg -i "$file" -q:a 2 "compressed_$file"
done
undefinedfor file in *.mp3; do
ffmpeg -i "$file" -q:a 2 "compressed_$file"
done
undefined音频裁剪
音频裁剪
bash
undefinedbash
undefined从第 30 秒开始,截取 1 分钟
从第 30 秒开始,截取 1 分钟
ffmpeg -i input.mp3 -ss 00:00:30 -t 00:01:00 -c copy output.mp3
ffmpeg -i input.mp3 -ss 00:00:30 -t 00:01:00 -c copy output.mp3
从开始到第 2 分钟
从开始到第 2 分钟
ffmpeg -i input.mp3 -to 00:02:00 -c copy output.mp3
ffmpeg -i input.mp3 -to 00:02:00 -c copy output.mp3
从第 1 分钟到结束
从第 1 分钟到结束
ffmpeg -i input.mp3 -ss 00:01:00 -c copy output.mp3
ffmpeg -i input.mp3 -ss 00:01:00 -c copy output.mp3
精确裁剪(重新编码,更准确)
精确裁剪(重新编码,更准确)
ffmpeg -i input.mp3 -ss 00:00:10 -to 00:00:40 -c:a libmp3lame -q:a 0 output.mp3
undefinedffmpeg -i input.mp3 -ss 00:00:10 -to 00:00:40 -c:a libmp3lame -q:a 0 output.mp3
undefined音频拼接
音频拼接
bash
undefinedbash
undefined快速拼接(不重新编码,格式必须一致)
快速拼接(不重新编码,格式必须一致)
首先创建 filelist.txt:
首先创建 filelist.txt:
file 'audio1.mp3'
file 'audio1.mp3'
file 'audio2.mp3'
file 'audio2.mp3'
file 'audio3.mp3'
file 'audio3.mp3'
ffmpeg -f concat -safe 0 -i filelist.txt -c copy output.mp3
ffmpeg -f concat -safe 0 -i filelist.txt -c copy output.mp3
重新编码拼接(格式不同时使用)
重新编码拼接(格式不同时使用)
ffmpeg -f concat -safe 0 -i filelist.txt -c:a libmp3lame -q:a 0 output.mp3
undefinedffmpeg -f concat -safe 0 -i filelist.txt -c:a libmp3lame -q:a 0 output.mp3
undefined音量调整
音量调整
bash
undefinedbash
undefined音量加倍
音量加倍
ffmpeg -i input.mp3 -filter:a "volume=2.0" output.mp3
ffmpeg -i input.mp3 -filter:a "volume=2.0" output.mp3
音量减半
音量减半
ffmpeg -i input.mp3 -filter:a "volume=0.5" output.mp3
ffmpeg -i input.mp3 -filter:a "volume=0.5" output.mp3
音量增加 3dB
音量增加 3dB
ffmpeg -i input.mp3 -filter:a "volume=3dB" output.mp3
ffmpeg -i input.mp3 -filter:a "volume=3dB" output.mp3
音量降低 6dB
音量降低 6dB
ffmpeg -i input.mp3 -filter:a "volume=-6dB" output.mp3
ffmpeg -i input.mp3 -filter:a "volume=-6dB" output.mp3
自动归一化音量(让声音大小一致)
自动归一化音量(让声音大小一致)
ffmpeg -i input.mp3 -filter:a "loudnorm" output.mp3
ffmpeg -i input.mp3 -filter:a "loudnorm" output.mp3
查看当前音量最大值
查看当前音量最大值
ffmpeg -i input.mp3 -filter:a "volumedetect" -f null /dev/null
undefinedffmpeg -i input.mp3 -filter:a "volumedetect" -f null /dev/null
undefined从视频提取音频
从视频提取音频
bash
undefinedbash
undefined提取为 MP3(高质量)
提取为 MP3(高质量)
ffmpeg -i video.mp4 -q:a 0 -map a audio.mp3
ffmpeg -i video.mp4 -q:a 0 -map a audio.mp3
提取为 WAV(无损,适合编辑)
提取为 WAV(无损,适合编辑)
ffmpeg -i video.mp4 -vn -acodec pcm_s16le -ar 44100 -ac 2 audio.wav
ffmpeg -i video.mp4 -vn -acodec pcm_s16le -ar 44100 -ac 2 audio.wav
提取为 AAC
提取为 AAC
ffmpeg -i video.mp4 -c:a aac -b:a 256k audio.m4a
ffmpeg -i video.mp4 -c:a aac -b:a 256k audio.m4a
只提取某段音频(从第 10 秒到第 30 秒)
只提取某段音频(从第 10 秒到第 30 秒)
ffmpeg -i video.mp4 -ss 00:00:10 -to 00:00:30 -q:a 0 audio.mp3
undefinedffmpeg -i video.mp4 -ss 00:00:10 -to 00:00:30 -q:a 0 audio.mp3
undefined音频混音
音频混音
bash
undefinedbash
undefined两个音频混合(背景音乐 + 人声)
两个音频混合(背景音乐 + 人声)
ffmpeg -i background.mp3 -i voice.mp3 -filter_complex "amix=inputs=2:duration=longest" output.mp3
ffmpeg -i background.mp3 -i voice.mp3 -filter_complex "amix=inputs=2:duration=longest" output.mp3
两个音频混合,调整音量(背景音乐 0.3,人声 1.0)
两个音频混合,调整音量(背景音乐 0.3,人声 1.0)
ffmpeg -i background.mp3 -i voice.mp3 -filter_complex "[0:a]volume=0.3[a0];[1:a]volume=1.0[a1];[a0][a1]amix=inputs=2:duration=longest" output.mp3
undefinedffmpeg -i background.mp3 -i voice.mp3 -filter_complex "[0:a]volume=0.3[a0];[1:a]volume=1.0[a1];[a0][a1]amix=inputs=2:duration=longest" output.mp3
undefined音频淡入淡出
音频淡入淡出
bash
undefinedbash
undefined开头 3 秒淡入
开头 3 秒淡入
ffmpeg -i input.mp3 -af "afade=t=in:st=0:d=3" output.mp3
ffmpeg -i input.mp3-af "afade=t=in:st=0:d=3" output.mp3
结尾 3 秒淡出
结尾 3 秒淡出
ffmpeg -i input.mp3 -af "afade=t=out:st=57:d=3" output.mp3
ffmpeg -i input.mp3 -af "afade=t=out:s=57:d=3" output.mp3
开头 3 秒淡入,结尾 3 秒淡出(总长 60 秒)
开头 3秒淡入,结尾3秒淡出(总长60秒)
ffmpeg -i input.mp3 -af "afade=t=in:st=0:d=3,afade=t=out:st=57:d=3" output.mp3
undefinedffmpeg -i input.mp3 -af "afade=t=in:st=0:d=3,afade=t=out:st=57:d=3" output.mp3
undefined音频声道处理
音频声道处理
bash
undefinedbash
undefined立体声转单声道
立体声转单声道
ffmpeg -i input.mp3 -ac 1 output_mono.mp3
ffmpeg -i input.mp3 -ac 1 output_mono.mp3
单声道转立体声
单声道转立体声
ffmpeg -i input.mp3 -ac 2 output_stereo.mp3
ffmpeg -i input.mp3 -ac 2 output_stereo.mp3
交换左右声道
交换左右声道
ffmpeg -i input.mp3 -af "channelmap=channel_layout=stereo:map=FL-FR|FR-FL" output_swapped.mp3
ffmpeg -i input.mp3 -af "channelmap=channel_layout=stereo:map=FL-FR|FR-FL" output_swapped.mp3
只保留左声道
只保留左声道
ffmpeg -i input.mp3 -af "pan=mono|c0=FL" output_left.mp3
ffmpeg -i input.mp3 -af "pan=mono|c0=FL" output_left.mp3
只保留右声道
只保留右声道
ffmpeg -i input.mp3 -af "pan=mono|c0=FR" output_right.mp3
undefinedffmpeg -i input.mp3 -af "pan=mono|c0=FR" output_right.mp3
undefined音频采样率调整
音频采样率调整
bash
undefinedbash
undefined改为 44100 Hz(CD 质量)
改为44100 Hz(CD质量)
ffmpeg -i input.mp3 -ar 44100 output.mp3
ffmpeg -i input.mp3 -ar 44100 output.mp3
改为 48000 Hz(视频常用)
改为48000 Hz视频常用)
ffmpeg -i input.mp3 -ar 48000 output.mp3
ffmpeg -i input.mp3 -ar 48000 output.mp3
改为 22050 Hz(降低采样率,减小体积)
改为22050 Hz(降低采样率,减小体积)
ffmpeg -i input.mp3 -ar 22050 output.mp3
undefinedffmpeg -i input.mp3 -ar 22050 output.mp3
undefined音频静音检测与移除
音频静音检测与移除
bash
undefinedbash
undefined检测静音部分
检测静音部分
ffmpeg -i input.mp3 -af "silencedetect=n=-50dB:d=1" -f null /dev/null
ffmpeg -i input.mp3 -af "silencedetect=n=-50dB:d=1" -f null /dev/null
移除开头静音
移除开头静音
ffmpeg -i input.mp3 -af "silenceremove=start_periods=1:start_duration=1:start_threshold=-50dB" output.mp3
ffmpeg -i input.mp3 -af "silenceremove=start_periods=1:start_duration=1:start_threshold=-50dB" output.mp3
移除结尾静音
移除结尾静音
ffmpeg -i input.mp3 -af "silenceremove=stop_periods=1:stop_duration=1:stop_threshold=-50dB" output.mp3
ffmpeg -i input.mp3 -af "silenceremove=stop_periods=1:stop_duration=1:stop_threshold=-50dB" output.mp3
移除开头和结尾静音
移除开头和结尾静音
ffmpeg -i input.mp3 -af "silenceremove=start_periods=1:start_duration=1:start_threshold=-50dB:stop_periods=1:stop_duration=1:stop_threshold=-50dB" output.mp3
undefinedffmpeg -i input.mp3 -af "silenceremove=start_periods=1:start_duration=1:start_threshold=-50dB:stop_periods=1:stop_duration=1:stop_threshold=-50dB" output.mp3
undefined音频去噪降噪
音频去噪降噪
bash
undefinedbash
undefined基础降噪(afftdn,频域降噪,适合大多数场景)
基础降噪(afftdn,频域降噪,适合大多数场景)
ffmpeg -i input.mp3 -af "afftdn" output.mp3
ffmpeg -i input.mp3 -af "afftdn" output.mp3
强力降噪(afftdn 调整参数)
强力降噪(afftdn调整参数)
ffmpeg -i input.mp3 -af "afftdn=nf=-20:tn=-15" output.mp3
ffmpeg -i input.mp3 -af "afftdn=-nf=-20:tn=-" output.mp3
高通滤波(去除低频噪音,如电流声、嗡嗡声)
高通滤波(去除低频噪音,如电流声、嗡嗡声)
ffmpeg -i input.mp3 -af "highpass=f=80" output.mp3
ffmpeg -i input.mp3 -af "highpass=f=80" output.mp3
低通滤波(去除高频噪音,如嘶嘶声)
低通滤波(去除高频噪音,如嘶嘶声)
ffmpeg -i input.mp3 -af "lowpass=f=10000" output.mp3
ffmpeg -i input.mp3 -af "lowpass=f=10000" output.mp3
带通滤波(只保留人声频率范围 300-3400Hz)
带通滤波(只保留人声频率范围300-3400Hz)
ffmpeg -i input.mp3 -af "bandpass=f=1850:width=3100" output.mp3
ffmpeg -i input.mp3 -af "bandpass=f=1850:width=3100" output.mp3
组合降噪(高通 + afftdn,效果更好)
组合降噪(高通+afftdn,效果更好)
ffmpeg -i input.mp3 -af "highpass=f=80,afftdn" output.mp3
ffmpeg -i input.mp3 -af "highpass=f=80,afftdn" output.mp3
降噪强度调节(0-1,0.5 为中等强度)
降噪强度调节(0-1,0.5为中等强度)
ffmpeg -i input.mp3 -af "afftdn=nr=0.5" output.mp3
ffmpeg -i input.mp3 -af "afftdn=nr=0.5" output.mp3
去除齿音(deesser,适合人声)
去除齿音(deesser,适合人声)
ffmpeg -i input.mp3 -af "deesser" output.mp3
ffmpeg -i input.mp3 -af "deesser" output.mp3
强力去齿音(调整参数)
强力去齿音(调整参数)
ffmpeg -i input.mp3 -af "deesser=i=0.5:m=0.8" output.mp3
undefinedffmpeg -i input.mp3 -af "deesser=i=0.5:m=0.8" output.mp3
##去呼吸声与去回声
```bash去呼吸声与去回声
减少呼吸声(使用compand动态压缩)
bash
undefinedffmpeg -i input.mp3 -af "compand=attacks=0.3:decays=1:points=-80/-80|-20/-20|0/-20" output.mp3
减少呼吸声(使用 compand 动态压缩)
去除轻微回声(使用aecho滤镜反向处理)
ffmpeg -i input.mp3 -af "compand=attacks=0.3:decays=1:points=-80/-80|-20/-20|0/-20" output.mp3
ffmpeg -i input.mp3 -af "aecho=0.8:0.88:60:0.4" output.mp3
去除轻微回声(使用 aecho 滤镜反向处理)
减少房间混响(使用afftdn的降噪特性)
ffmpeg -i input.mp3 -af "aecho=0.8:0.88:60:0.4" output.mp3
ffmpeg -i input.mp3 -af "afftdn=tn=-10" output.mp3
减少房间混响(使用 afftdn 的降噪特性)
组合处理:去呼吸+去齿音+降噪
ffmpeg -i input.mp3 -af "afftdn=tn=-10" output.mp3
ffmpeg -i input.mp3 -af "compand=attacks=0.3:decays=1:points=-80/-80|-20/-20|0/-20,deesser,afftdn" output.mp3
##音高修正与变速变调
```bash组合处理:去呼吸 + 去齿音 + 降噪
使用rubberband变速不变调(推荐,音质最好)
ffmpeg -i input.mp3 -af "compand=attacks=0.3:decays=1:points=-80/-80|-20/-20|0/-20,deesser,afftdn" output.mp3
undefined#2倍速,音调不变
ffmpeg -i input.mp3 -af "rubberband=tempo=2.0" output.mp3
#0.5倍速,音调不变
ffmpeg -i input.mp3 -af "rubberband=tempo=0.5" output.mp3
音高修正与变速变调
变调不变速(升调2个半音)
bash
undefinedffmpeg -i input.mp3 -af "rubberband=pitch=2.0" output.mp3
使用 rubberband 变速不变调(推荐,音质最好)
变调不变速(降调3个半音)
2倍速,音调不变
—
ffmpeg -i input.mp3 -af "rubberband=tempo=2.0" output.mp3
ffmpeg -i input.mp3 -af "rubberband=pitch=-3.0" output.mp3
#同时变速和变调(1.5倍速,升调1个半音)
ffmpeg -i input.mp3 -af "rubberband=tempo=1.5:pitch=1.0" output.mp3
0.5倍速,音调不变
使用asetrate简单变速(会同时变调)
ffmpeg -i input.mp3 -af "rubberband=tempo=0.5" output.mp3
#2倍速(音调也会升高)
ffmpeg -i input.mp3 -af "asetrate=44100*2,aresample=44100" output.mp3
变调不变速(升调 2 个半音)
降调不变速(使用atempo+asetrate组合)
—
降调1个半音,速度不变
ffmpeg -i input.mp3 -af "rubberband=pitch=2.0" output.mp3
ffmpeg -i input.mp3 -filter_complex "[0:a]asetrate=44100*0.94387[a];[a]atempo=1/0.94387" output.mp3
变调不变速(降调 3 个半音)
音高修正模式(rubberband的不同模式)
—
音乐模式(默认)
ffmpeg -i input.mp3 -af "rubberband=pitch=-3.0" output.mp3
ffmpeg -i input.mp3 -af "rubberband=pitch=2.0:formants=crisp" output.mp3
同时变速和变调(1.5倍速,升调 1 个半音)
人声模式
ffmpeg -i input.mp3 -af "rubberband=tempo=1.5:pitch=1.0" output.mp3
ffmpeg -i input.mp3 -af "rubberband=pitch=2.0:formants=shifted" output.mp3
undefined使用 asetrate 简单变速(会同时变调)
音频倒放
2倍速(音调也会升高)
—
ffmpeg -i input.mp3 -af "asetrate=44100*2,aresample=44100" output.mp3
bash
undefined降调不变速(使用 atempo + asetrate 组合)
音频倒放
降调 1 个半音,速度不变
—
ffmpeg -i input.mp3 -filter_complex "[0:a]asetrate=44100*0.94387[a];[a]atempo=1/0.94387" output.mp3
ffmpeg -i input.mp3 -filter:a "areverse" output_reversed.mp3
undefined音高修正模式(rubberband 的不同模式)
音频变速
音乐模式(默认)
—
ffmpeg -i input.mp3 -af "rubberband=pitch=2.0:formants=crisp" output.mp3
bash
#2倍速播放
ffmpeg -i input.mp3 -filter:a "atempo=2.0" output_2x.mp3
#0.5倍速播放(慢放)
ffmpeg -i input.mp3 -filter:a "atempo=0.5" output_0.5x.mp3
#1.5倍速播放
ffmpeg -i input.mp3 -filter:a "atempo=1.5" output_1.5x.mp3人声模式
音频分割
ffmpeg -i input.mp3 -af "rubberband=pitch=2.0:formants=shifted" output.mp3
undefinedbash
undefined音频倒放
将音频分割成多个5分钟的片段
bash
undefinedffmpeg -i input.mp3 -c copy -segment_time 00:05:00 -f segment -reset_timestamps 1 output_%03d.mp3
音频倒放
按指定时间点分割
ffmpeg -i input.mp3 -filter:a "areverse" output_reversed.mp3
undefinedffmpeg -i input.mp3 -t 00:05:00 -c copy part1.mp3
ffmpeg -i input.mp3 -ss 00:05:00 -c copy part2.mp3
undefined音频变速
批量处理
bash
undefinedbash
undefined2倍速播放
批量转换为MP3
ffmpeg -i input.mp3 -filter:a "atempo=2.0" output_2x.mp3
for file in *.wav *.flac .m4a; do
if [ -f "$file" ]; then
ffmpeg -i "$file" -q:a 0 "${file%.}.mp3"
fi
done
0.5倍速播放(慢放)
批量压缩
ffmpeg -i input.mp3 -filter:a "atempo=0.5" output_0.5x.mp3
for file in *.mp3; do
ffmpeg -i "$file" -q:a 2 "compressed_$file"
done
1.5倍速播放
批量提取音频(从视频)
ffmpeg -i input.mp3 -filter:a "atempo=1.5" output_1.5x.mp3
undefinedfor file in *.mp4 *.mkv .avi; do
if [ -f "$file" ]; then
ffmpeg -i "$file" -q:a 0 "${file%.}.mp3"
fi
done
undefined音频分割
参数速查表
—
常用音频编码参数
bash
undefined| 参数 | 说明 |
|---|---|
| MP3 VBR 最高质量 |
| MP3 VBR 高质量 |
| MP3 VBR 中等质量 |
| 192kbps CBR |
| AAC 编码 |
| MP3 编码 |
| FLAC 无损编码 |
| 直接复制流,不重新编码 |
将音频分割成多个 5 分钟的片段
常用音频滤镜参数
ffmpeg -i input.mp3 -c copy -segment_time 00:05:00 -f segment -reset_timestamps 1 output_%03d.mp3
| 滤镜 | 说明 |
|---|---|
| 音量加倍 |
| 自动归一化音量 |
| 3秒淡入 |
| 3秒淡出 |
| 2倍速 |
| 音频倒放 |
| 混合两个音频 |
| 检测静音 |
| 移除静音 |
| 频域降噪(基础) |
| 强力降噪 |
| 高通滤波(去低频噪音) |
| 低通滤波(去高频噪音) |
| 带通滤波(人声范围) |
| 去齿音 |
| 动态压缩(去呼吸声) |
| 变速不变调 |
| 变调不变速 |
| 变速(同时变调) |
按指定时间点分割
—
ffmpeg -i input.mp3 -t 00:05:00 -c copy part1.mp3
ffmpeg -i input.mp3 -ss 00:05:00 -c copy part2.mp3
undefined—
批量处理
—
bash
undefined—
批量转换为 MP3
—
for file in *.wav *.flac .m4a; do
if [ -f "$file" ]; then
ffmpeg -i "$file" -q:a 0 "${file%.}.mp3"
fi
done
—
批量压缩
—
for file in *.mp3; do
ffmpeg -i "$file" -q:a 2 "compressed_$file"
done
—
批量提取音频(从视频)
—
for file in *.mp4 *.mkv .avi; do
if [ -f "$file" ]; then
ffmpeg -i "$file" -q:a 0 "${file%.}.mp3"
fi
done
undefined—
参数速查表
—
常用音频编码参数
—
| 参数 | 说明 |
|---|---|
| MP3 VBR 最高质量 |
| MP3 VBR 高质量 |
| MP3 VBR 中等质量 |
| 192kbps CBR |
| AAC 编码 |
| MP3 编码 |
| FLAC 无损编码 |
| 直接复制流,不重新编码 |
—
常用音频滤镜参数
—
| 滤镜 | 说明 |
|---|---|
| 音量加倍 |
| 自动归一化音量 |
| 3秒淡入 |
| 3秒淡出 |
| 2倍速 |
| 音频倒放 |
| 混合两个音频 |
| 检测静音 |
| 移除静音 |
| 频域降噪(基础) |
| 强力降噪 |
| 高通滤波(去低频噪音) |
| 低通滤波(去高频噪音) |
| 带通滤波(人声范围) |
| 去齿音 |
| 动态压缩(去呼吸声) |
| 变速不变调 |
| 变调不变速 |
| 变速(同时变调) |
—