FFmpeg 是一个非常强大的多媒体处理工具,可以用来进行视频和音频的转换、剪辑、合并、提取等多种操作。以下是一些常用的 FFmpeg 命令及其功能介绍:
1. 基本命令结构
FFmpeg 的基本命令结构如下:
ffmpeg [全局选项] [输入文件选项] -i 输入文件 [输出文件选项] 输出文件
2. 常用命令
2.1 查看媒体文件信息
使用 ffprobe
或 ffmpeg -i
查看媒体文件的详细信息。
ffprobe -i input.mp4
或
ffmpeg -i input.mp4
2.2 视频格式转换
将一个视频文件从一种格式转换为另一种格式。
ffmpeg -i input.mp4 -c:v libx264 -c:a aac output.mp4
2.3 音频格式转换
将一个音频文件从一种格式转换为另一种格式。
ffmpeg -i input.wav -c:a libmp3lame output.mp3
2.4 提取音频
从视频文件中提取音频并保存为单独的音频文件。
ffmpeg -i input.mp4 -q:a 0 -map a output.mp3
2.5 提取视频
从视频文件中提取视频流(无音频)。
ffmpeg -i input.mp4 -c copy -an output.mp4
2.6 裁剪视频
裁剪视频的指定时间段。
ffmpeg -i input.mp4 -ss 00:00:10 -to 00:00:30 -c copy output.mp4
2.7 合并视频
将多个视频文件合并为一个文件。
ffmpeg -i "concat:input1.mp4|input2.mp4" -c copy output.mp4
或者使用 concat
文件列表:
echo "file 'input1.mp4'" > filelist.txt echo "file 'input2.mp4'" >> filelist.txt ffmpeg -f concat -safe 0 -i filelist.txt -c copy output.mp4
2.8 调整分辨率
将视频文件调整为指定的分辨率。
ffmpeg -i input.mp4 -vf scale=1280:720 output.mp4
2.9 调整比特率
设置视频和音频的比特率。
ffmpeg -i input.mp4 -b:v 1000k -b:a 128k output.mp4
2.10 添加水印
在视频上添加水印。
ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=10:10" output.mp4
2.11 旋转视频
旋转视频 90 度。
ffmpeg -i input.mp4 -vf "transpose=1" output.mp4
2.12 截取视频帧
从视频中截取一帧图像。
ffmpeg -i input.mp4 -ss 00:00:01 -vframes 1 output.jpg
2.13 更改帧率
更改视频的帧率。
ffmpeg -i input.mp4 -r 30 output.mp4
2.14 更改音频采样率
更改音频的采样率。
ffmpeg -i input.mp3 -ar 44100 output.mp3
2.15 更改音频声道数
更改音频的声道数。
ffmpeg -i input.mp3 -ac 2 output.mp3
2.16 静音或删除音频
删除视频中的音频。
ffmpeg -i input.mp4 -c copy -an output.mp4
2.17 添加音频到视频
将音频文件添加到视频文件中。
ffmpeg -i input.mp4 -i audio.mp3 -c copy -shortest output.mp4
2.18 生成缩略图
生成视频的缩略图。
ffmpeg -i input.mp4 -vf fps=1/60 thumbnails_%03d.jpg
3. ffmpeg的filter使用方式
3.1常用filter
3.1.1 缩放 (scale)
调整视频的分辨率。
ffmpeg -i input.mp4 -vf "scale=1280:720" output.mp4
3.1.2 裁剪 (crop)
裁剪视频的一部分。
ffmpeg -i input.mp4 -vf "crop=640:360:0:0" output.mp4
crop=out_w:out_h:x:y
:其中out_w
和out_h
是输出宽度和高度,x
和y
是裁剪区域的起始坐标。
3.1.3 叠加 (overlay)
在视频上叠加另一个视频或图像。ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=10:10" output.mp4
overlay=x:y
:其中x
和y
是叠加位置的坐标。
3.1.4 旋转 (transpose)
旋转视频。
ffmpeg -i input.mp4 -vf "transpose=1" output.mp4
transpose=1
:顺时针旋转90度。transpose=2
:逆时针旋转90度。transpose=3
:顺时针旋转90度并垂直翻转。transpose=4
:逆时针旋转90度并垂直翻转。
3.1.5 淡入淡出 (fade)
添加淡入淡出效果。
ffmpeg -i input.mp4 -vf "fade=t=in:st=0:d=1,fade=t=out:st=59:d=1" -c:a copy output.mp4
fade=t=in:st=0:d=1
:从第0秒开始,持续1秒的淡入效果。fade=t=out:st=59:d=1
:从第59秒开始,持续1秒的淡出效果。
3.1.6 颜色调整 (eq)
调整视频的颜色、亮度、对比度等。
ffmpeg -i input.mp4 -vf "eq=brightness=0.1:contrast=1.5:saturation=1.2" output.mp4
brightness
:亮度。contrast
:对比度。saturation
:饱和度。
3.1.7 模糊 (gblur)
添加高斯模糊效果。
ffmpeg -i input.mp4 -vf "gblur=sigma=5" output.mp4
sigma
:控制模糊程度。
3.1.8 抽取帧 (select)
抽取特定条件的帧。
ffmpeg -i input.mp4 -vf "select='gt(scene,0.4)',setpts=N/FRAME_RATE/TB" -vsync vfr output_%d.jpg
select='gt(scene,0.4)'
:选择场景变化大于0.4的帧。setpts=N/FRAME_RATE/TB
:重新设置时间戳。-vsync vfr
:保持原始帧率。
3.2 常用音频滤镜
3.2.1 音量调整 (volume)
调整音频的音量。
ffmpeg -i input.mp3 -af "volume=0.5" output.mp3
volume=0.5
:将音量降低到50%。
3.2.2 均衡器 (equalizer)
调整音频的频率响应。
ffmpeg -i input.mp3 -af "equalizer=f=1000:t=h:width_type=o:width=2:g=10" output.mp3
f=1000
:中心频率为1000 Hz。t=h
:类型为高通。width_type=o
:带宽类型为八度。width=2
:带宽为2个八度。g=10
:增益为10 dB。
3.2.3 混响 (aecho)
添加混响效果。
ffmpeg -i input.mp3 -af "aecho=0.8:0.88:60:0.4" output.mp3
aecho=in_gain:out_gain:delays:decays
:分别控制输入增益、输出增益、延迟时间和衰减系数。
3.2.4 动态范围压缩 (compand)
压缩音频的动态范围。
ffmpeg -i input.mp3 -af "compand=attacks=0:points=-80/-80|-40/-40|0/-30|20/-20|40/-20|60/-20|80/-20:gain=10" output.mp3
attacks=0
:攻击时间为0。points
:定义压缩点。gain=10
:增益为10 dB。
3.3. 复杂滤镜链
多个滤镜可以组合成一个复杂的滤镜链。
ffmpeg -i input.mp4 -vf "scale=1280:720,crop=1000:1000:100:100,transpose=1,fade=t=in:st=0:d=1,fade=t=out:st=59:d=1" -c:a copy output.mp4
3.4. 使用 filter_complex
对于更复杂的操作,可以使用 filter_complex
选项。
ffmpeg -i input.mp4 -i watermark.png -filter_complex "[0:v][1:v]overlay=10:10,format=yuv420p[v]; [0:a]volume=0.8[a]" -map "[v]" -map "[a]" output.mp4
[0:v]
和[1:v]
分别表示第一个和第二个输入文件的视频流。[0:a]
表示第一个输入文件的音频流。overlay=10:10
将水印叠加在视频上。format=yuv420p
确保输出格式兼容性。volume=0.8
调整音频音量。
4. 总结
FFmpeg 是一个极其强大的工具,适用于各种音视频处理任务。通过上述命令,你可以完成大多数常见的音视频处理需求。如果你有更具体的需求或遇到问题,可以通过查阅 FFmpeg 的官方文档或社区资源来获取更多信息。