概述
ffmpeg 是一个命令行音视频后期处理软件
1. 裁剪命令
参数说明
-
-i 文件,orgin.mp3 为待处理源文件
-
-ss 裁剪时间,后跟裁剪开始时间,或者开始的秒数
-
-t 裁剪时间
-
output.mp3 为处理结果文件
ffmpeg -i organ.mp3 -ss 00:00:xx -t 120 output.mp3
ffmpeg -i organ.mp3 -ss 360 -t 230 output.mp3
- 合成命令
2.1 混合合成
参数说明
-
-i 文件 1.mp3 和 2.mp3 为待合成的两个源文件
-
-filter_complex 过滤器参数
-
amix=inputs 配置输入的整体样本数
-
duration,first:长度取决于第一个文件,longest:长度取决于时间最长文件,shortest:长度取决于时间最短文件
-
dropout_transition:输入流结束时用于体积重新规范化的过渡时间
-
-f mp3 设置导出文件格式
ffmpeg -i 1.mp3 -i 2.mp3 -filter_complex amix=inputs=2:duration=first:dropout_transition=2 -f mp3 remix.mp3
2.2 连接合成
参数说明
-
concat 合并文件指令
ffmpeg -i "concat:Box01.mp3|Box02.mp3" Box.mp3
ffmpeg -i "concat:headerNew.mp3|006.mp3" -acodec copy demo6.mp3
2.3 淡出效果
参数说明
-
afade 淡入淡出指令
-
从 st 秒开始,经过 d 秒钟的淡出效果
ffmpeg -i bgm3.mp3 -filter_complex afade=t=out:st=16:d=4 bgm31.mp3
2.4 合并背景音和视频
首先需要将原视频的声音删除。这里的文件名需要加上英文引号,如果不加的话,会提示No such file or directory。
ffmpeg -i "audio.mp4" -y -f mp4 -an -codec copy -q:v 1 "audio-无声.mp4"
然后将无声视频和音频融合
ffmpeg -i audio-无声.mp4 -i accompaniment.wav -c:v copy -c:a aac -strict experimental audio-消音.mp4
即可获得消去人声的视频。但笔者口语不好,觉得原视频的语速有些快了,故又调整了视频倍速为0.8倍速。
ffmpeg -i test.mp4 -filter_complex "[0:v]setpts=10/8*PTS[v];[0:a]atempo=0.8[a]" -map "[v]" -map "[a]" test-2.mp4
这条指令同时调整视频倍速和音频倍速,setpts=(倍速的倒数)*PTS[v],atempo=(倍速)[a]
【免费分享】音视频学习资料包、大厂面试题、技术视频和学习路线图,资料包括(C/C++,Linux,FFmpeg webRTC rtmp hls rtsp ffplay srs 等等)有需要的可以点击788280672加群免费领取~
- 转换调整命令
3.1 格式转换
参数说明
-
-i 文件,a.mp3 为待处理源文件
-
-ar 音频抽样率
-
-ac 音频Channel数
-
-f 强制输出格式 例如mp3, wav等
将a.mp3转化程a.wav,设定抽样率为16000
ffmpeg -i a.mp3 -ar 16000 -ac 1 a.wav
将Frozen.mka转化成a.mp3
ffmpeg -i Frozen.mka -ar 16000 -f mp3 a.mp3
3.2 音量调整
参数说明
-
-i 文件,a.mp3 为待处理源文件
音量256为原始音量,如果要调整到两倍音量,则设置为512,调整到一半音量,则设为128,下面为减小一半音量的命令
ffmpeg -i Box.mp3 -vol 128 box3.mp3
使用dB调整音量
ffmpeg -i a.mp3 -af volume=-20dB b.mp3
-
dB的换算公式 1.1 dB = 1.1 倍,2 dB = 1.25倍,3 dB = 1.4倍,6 dB = 2 倍,10 dB = 3 倍,20 dB = 10 倍,30 dB = 30 倍。其它就可以用上述数值换算,并不困难。(反过来 -- 6 dB 就是 1/2 = 0.5) 2.在换算时要把握一个原则,dB数值的相加 等于 倍数的相乘。 例如:40 dB = 20dB + 20 dB = 10 * 10 = 100 倍 -20dB谱宽就是信号衰减到十分之一时的频谱带宽。
3.3 升降调
# 升半音
ffmpeg -i "mine.mkv" -filter_complex "asetrate=48000*2^(1/12),atempo=1/2^(1/12)" "output.mkv"
# 升全音
ffmpeg -i "mine.mkv" -filter_complex "asetrate=48000*2^(2/12),atempo=1/2^(2/12)" "output.mkv"
# 降半音
ffmpeg -i "mine.mkv" -filter_complex "asetrate=48000*2^(-1/12),atempo=1/2^(-1/12)" "output.mkv"
# 降全音
ffmpeg -i "mine.mkv" -filter_complex "asetrate=48000*2^(-2/12),atempo=1/2^(-2/12)" "output.mkv"
3.4 音频速率调整
改变音频速率最简单的方法是直接调整音频的采样率,但是与此同时,这种方法会改变音频的音色。目前一般采用对原音进行重采样,差值等方法来实现。下面这行命令的倍率调整范围为0.5到2。
ffmpeg -i input.mkv -filter:a "atempo=2.0" -vn output.mkv
如果想要再快的话,需要更改命令,通过将多个atempo过滤器串接在一起来绕过这个限制。
ffmpeg -i input.mkv -filter:a "atempo=2.0,atempo=2.0" -vn output.mkv
3.5 视频速率调整
改变视频的播放速率是通过修改视频的表示时间戳(PTS)来实现的。举个简单的例子,如果在时间戳1和2处显示两个连续帧,我们想要加快视频速度,那么这两个时间戳需要分别变为0.5和1。因此,我们必须把他们乘以0.5。
ffmpeg -i input.mkv -r 16 -filter:v "setpts=0.5*PTS" output.mkv
对视频进行加速时,为了不丢帧,可以利用-r 参数指定输出的fps。 一般来说,视频倍速还需要将视频中的音频也一同倍速,通过混合的过滤图实现,命令如下,
ffmpeg -i input.mkv -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" output.mkv
4. 提取命令
4.1 从视频中提取音频
参数说明
-map 提取视频-音频流的序号 -b:a 码率 kb/s -f 强制输出格式 例如mp3, wav等
# 从frozen.mkv中,提取音频文件,保存为audio.1.mp3
ffmpeg -i frozen.mkv -map 0:1 -b:a 64k -f mp3 a.1.mp3
ffmpeg -i frozen.mp4 -q:a 0 -map a audio.mp3
ffmpeg -i frozen.mp4 -vn -codec copy audio.m4a
ffmpeg -i audio.m4a -y -acodec libmp3lame -aq 0 audio.mp3
查看视频,包含的视频流、音频流如下: encoder : libebml v1.2.3 + libmatroska v1.3.0 Duration: 01:42:13.09, start: 0.000000, bitrate: 2954 kb/s Stream #0:0: Video: h264 (High), yuv420p, 1024x576 [SAR 1:1 DAR 16:9], 23.98 fps Stream #0:1(eng): Audio: ac3, 48000 Hz, 384 kb/s (default) title : 英语 Stream #0:2(chi): Audio: ac3, 48000 Hz, 384 kb/s title : 台配 Stream #0:3(chi): Audio: ac3, 48000 Hz, 384 kb/s title : 粤语
查看原音视频文件音轨频率
ffmpeg -i "mine.mkv"
命令执行后找到音轨的Stream,频率为48000Hz;
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 2316x1440, 22449 kb/s, 30 fps, 30 tbr, 600 tbn, 1200 tbc (default)
Metadata:
creation_time : 2022-08-31T02:15:18.000000Z
handler_name : Core Media Video
vendor_id : [0][0][0][0]
encoder : H.264
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 2 kb/s (default)
Metadata:
creation_time : 2022-08-31T02:15:18.000000Z
handler_name : Core Media Audio
vendor_id : [0][0][0][0]
5. 消音命令
参数说明
-
-i 文件,a.mp3 为待处理源文件
-
-ac 音频Channel数
ffmpeg -i file.mp3 -af pan="stereo|c0=c0|c1=-1*c1" -ac 1 karaoke.mp3
原文链接 ffmpeg 常用命令行详解 - 掘金