使用FFmpeg剪辑视频的详细指南

掌握FFmpeg进行视频剪辑、合并、转码等操作

一、FFmpeg简介

FFmpeg是一个功能强大的多媒体处理工具,支持视频剪辑、视频转码、视频编辑、音频处理、添加文字、视频拼接、拉流推流直播等功能。通过不同的FFmpeg命令可以编程完成不同的视频剪辑功能。

二、FFmpeg安装

# macOS系统 brew install ffmpeg # Ubuntu/Debian系统 sudo apt install ffmpeg # Windows系统 # 直接去 ffmpeg.org 下载安装包,解压后配置环境变量

三、FFmpeg核心逻辑

FFmpeg的核心逻辑只有一个:输入→处理→输出

ffmpeg [输入选项] -i input.mp4 [输出选项] output.mp4

四、常见视频剪辑场景

1. 视频转码

# 将MOV视频转成MP4视频 ffmpeg -i input.mov output.mp4 # 修改帧率为24 ffmpeg -i input.mp4 -r 24 -an output.mp4 # 指定视频编码 ffmpeg -i input.mp4 -c:v libx264 -c:a aac output.mp4

2. 视频裁剪(剪辑)

# 从第10秒开始,截取20秒 ffmpeg -ss 00:00:10 -i input.mp4 -t 00:00:20 -c copy output.mp4 # 从第1分10秒开始,截取20秒 ffmpeg -ss 00:01:10 -i input.mp4 -t 00:00:20 output.mp4 # 使用更精确的裁剪(重新编码) ffmpeg -ss 00:00:10 -i input.mp4 -t 00:00:20 -c:v libx264 -c:a aac output.mp4

3. 视频缩放

# 将视频变为480x360 ffmpeg -i input.mp4 -vf scale=480:360 output.mp4 # 保持宽高比缩放 ffmpeg -i input.mp4 -vf scale=-1:360 output.mp4

4. 视频拼接

# 方法1:使用concat demuxer # 先创建文件列表 # file 'part1.mp4' # file 'part2.mp4' # file 'part3.mp4' ffmpeg -f concat -safe 0 -i filelist.txt -c copy output.mp4 # 方法2:使用concat filter ffmpeg -i part1.mp4 -i part2.mp4 -filter_complex "[0:v][1:v]concat=n=2:v=1:a=1" output.mp4

5. 提取音频

# 提取音频为MP3 ffmpeg -i input.mp4 -vn -acodec libmp3lame output.mp3 # 提取音频为AAC ffmpeg -i input.mp4 -vn -acodec aac output.aac

6. 添加水印

# 添加文字水印 ffmpeg -i input.mp4 -vf "drawtext=text=' watermark ':fontcolor=white:fontsize=24:x=10:y=10" output.mp4 # 添加图片水印 ffmpeg -i input.mp4 -i logo.png -filter_complex "overlay=10:10" output.mp4

7. 视频加速/减速

# 视频加速2倍 ffmpeg -i input.mp4 -vf "setpts=0.5*PTS" output.mp4 # 视频减速2倍 ffmpeg -i input.mp4 -vf "setpts=2*PTS" output.mp4 # 同时加速视频和音频 ffmpeg -i input.mp4 -vf "setpts=0.5*PTS" -af "atempo=2" output.mp4

8. 视频旋转

# 顺时针旋转90度 ffmpeg -i input.mp4 -vf "transpose=1" output.mp4 # 旋转180度 ffmpeg -i input.mp4 -vf "transpose=2,transpose=2" output.mp4

9. 视频转GIF

# 视频转GIF ffmpeg -i input.mp4 -vf "fps=10,scale=320:-1" output.gif # 高质量GIF ffmpeg -i input.mp4 -vf "fps=15,scale=480:-1:flags=lanczos" output.gif

10. 视频转HLS(m3u8)

# 将MP4转为m3u8 ffmpeg -i input.mp4 -codec: copy -bsf:v h264_mp4toannexb -start_number 0 -hls_time 10 -hls_list_size 0 -f hls output.m3u8

五、常用参数说明

参数 说明
-i 输入文件
-c 编解码器 (copy表示复制)
-ss 开始时间
-t 持续时间
-vf 视频滤镜
-af 音频滤镜
-r 帧率
-s 分辨率
-b 比特率

六、Python中使用FFmpeg

import subprocess def convert_video(input_file, output_file, codec='libx264'): cmd = [ 'ffmpeg', '-i', input_file, '-c:v', codec, '-c:a', 'aac', output_file ] subprocess.run(cmd) # 使用示例 convert_video('input.mov', 'output.mp4')

七、总结

FFmpeg是目前全球最通用、最稳定、支持格式最全面的视频音频处理工具。几乎所有剪辑软件、播放器、直播平台底层都在用它。掌握FFmpeg的各种命令,可以满足日常视频处理的大部分需求。