文档目录

一、日常必会命令

# 查看文件信息
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