FFmpeg 是一个强大的开源多媒体框架,用于处理音频、视频和其他多媒体文件。它包含了一系列库和命令行工具,可以用于转码、流媒体处理、编辑和播放多媒体内容。
基本概念 #
主要组件 #
- ffmpeg - 命令行工具,用于转换多媒体文件格式
- ffplay - 简单的媒体播放器
- ffprobe - 媒体分析工具
核心库 #
- libavcodec - 音视频编解码库
- libavformat - 多媒体容器格式的复用和解复用
- libavutil - 包含一些公共的工具函数
- libswscale - 图像缩放和色彩空间转换
- libswresample - 音频重采样
基本用法 #
格式转换 #
ffmpeg -i input.mp4 output.avi提取音频 #
ffmpeg -i input.mp4 -vn -acodec copy output.aac提取视频 #
ffmpeg -i input.mp4 -an -vcodec copy output_video.mp4常用参数 #
-i- 指定输入文件-c:v- 设置视频编解码器-c:a- 设置音频编解码器-b:v- 设置视频比特率-b:a- 设置音频比特率-s- 设置分辨率-r- 设置帧率-ss- 设置开始时间-t- 设置持续时间-filter_complex- 应用复杂滤镜
高级功能 #
视频裁剪 #
ffmpeg -i input.mp4 -filter:v "crop=w:h:x:y" output.mp4添加水印 #
ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=10:10" output.mp4视频合并 #
ffmpeg -f concat -i file_list.txt -c copy output.mp4屏幕录制 #
ffmpeg -f avfoundation -i "1:0" output.mkv实际应用示例 #
转换视频为GIF #
ffmpeg -i input.mp4 -vf "fps=10,scale=320:-1:flags=lanczos" -c:v gif output.gif提取视频片段 #
ffmpeg -ss 00:01:30 -i input.mp4 -t 10 -c copy output.mp4调整视频大小 #
ffmpeg -i input.mp4 -vf scale=640:480 output.mp4性能优化 #
- 使用硬件加速(如
-hwaccel cuda) - 选择合适的编解码器
- 调整线程数(
-threads) - 使用预设参数(
-preset)
FFmpeg 的功能非常丰富,以上只是基础介绍。要深入了解,可以参考官方文档或使用 ffmpeg -h full 查看所有选项。