一、日常必会命令#
# 查看文件信息
ffprobe input.mp4
ffprobe -v quiet -print_format json -show_streams input.mp4 # JSON 格式
# 格式转换
ffmpeg -i input.avi -c:v libx264 -c:a aac output.mp4
# 截取片段(从 10 秒开始,持续 5 秒)
ffmpeg -i input.mp4 -ss 10 -t 5 -c copy output.mp4
# 缩放到 720p
ffmpeg -i input.mp4 -vf scale=-1:720 output.mp4
# 推流到 RTMP
ffmpeg -i input.mp4 -c:v libx264 -preset ultrafast -f flv rtmp://server/live/stream
# 桌面推流(Windows)
ffmpeg -f gdigrab -i desktop -c:v libx264 -preset ultrafast -tune zerolatency -f flv rtmp://localhost/live/test
# 拉流并保存
ffmpeg -i rtmp://server/live/stream -c copy record.mp4
二、直播延迟优化#
# ❌ 默认配置(高延迟,高质量)
ffmpeg -i input -c:v libx264 -f flv rtmp://server/live
# ✅ 低延迟配置
ffmpeg -i input -c:v libx264 \
-preset ultrafast \ # 最快的编码速度
-tune zerolatency \ # 零延迟优化
-g 15 \ # 每 15 帧一个关键帧
-bf 0 \ # 不要 B 帧
-f flv rtmp://server/live/stream
# 各参数的延迟影响:
# -preset ultrafast ↓延迟 ↑文件体积(编码快,但压缩率低)
# -preset medium 平衡点
# -preset veryslow ↑延迟 ↓文件体积(编码慢,但压缩率高)
# 直播必须用 ultrafast 或 veryfast