ffmpeg 常用命令整理
# ========================
# FFmpeg 常用命令大全
# ========================
# 1. 基础格式转换
# ------------------------------------------------------------
# 通用格式转换(FFmpeg 会根据输出文件后缀自动选择编码格式)
ffmpeg -i input.mp4 output.avi
ffmpeg -i input.mp3 output.wav
ffmpeg -i input.mkv output.mp4
# 提取视频中的音频(-vn 表示禁用视频流)
ffmpeg -i input_video.mp4 -vn output_audio.mp3
# 提取视频(无音频)(-an 表示禁用音频流)
ffmpeg -i input_video.mp4 -an output_video_no_audio.mp4
# 指定音视频编码器(更精确地控制输出)
ffmpeg -i input.mp4 -c:v libx264 -c:a aac output.mp4
# 2. 视频参数调整
# ------------------------------------------------------------
# 调整视频大小(缩放)
ffmpeg -i input.mp4 -vf "scale=1280:720" output.mp4 # 指定精确分辨率
ffmpeg -i input.mp4 -vf "scale=1280:-1" output.mp4 # 高度按比例自动计算
ffmpeg -i input.mp4 -vf "scale=-2:720" output.mp4 # 宽度按比例自动计算
# 调整视频帧率
ffmpeg -i input.mp4 -r 30 output.mp4 # 设置输出帧率为 30fps
# 调整视频码率(控制文件大小)
ffmpeg -i input.mp4 -b:v 1M output.mp4 # 设置视频码率为 1 Mbps
# 调整视频分辨率、码率和帧率(组合使用)
ffmpeg -i input.mp4 -vf "scale=1280:720" -r 30 -b:v 1.5M output.mp4
# 3. 音频参数调整
# ------------------------------------------------------------
# 调整音频码率
ffmpeg -i input.mp3 -b:a 192k output.mp3 # 设置音频码率为 192 kbps
# 调整音频采样率
ffmpeg -i input.wav -ar 44100 output.wav # 设置采样率为 44.1kHz
# 调整音频声道数
ffmpeg -i input.wav -ac 2 output.wav # 设置为双声道立体声
ffmpeg -i input.wav -ac 1 output.wav # 设置为单声道
# 4. 裁剪与剪辑
# ------------------------------------------------------------
# 按时间长度裁剪(从第 10 秒开始,截取 30 秒的内容)
ffmpeg -i input.mp4 -ss 00:00:10 -t 00:00:30 -c copy output_clip.mp4
# 按结束时间裁剪(从第 10 秒开始,到第 1 分钟结束)
ffmpeg -i input.mp4 -ss 00:00:10 -to 00:01:00 -c copy output_clip.mp4
# 无损切割(使用 -c copy 进行流复制,速度极快)
ffmpeg -i input.mp4 -ss 00:01:00 -to 00:02:00 -c copy output_part.mp4
# 5. 截图与缩略图
# ------------------------------------------------------------
# 在指定时间点截取一帧作为图片
ffmpeg -i input.mp4 -ss 00:00:05 -vframes 1 screenshot.jpg
# 每秒截取一帧(生成大量图片)
ffmpeg -i input.mp4 -vf "fps=1" thumbnails_%03d.jpg
# 每 10 秒截取一帧
ffmpeg -i input.mp4 -vf "fps=1/10" thumbnails_%03d.jpg
# 6. 合并与拼接
# ------------------------------------------------------------
# 方法一:先将文件名写入 list.txt,然后合并
# echo "file 'part1.mp4'" > list.txt
# echo "file 'part2.mp4'" >> list.txt
# echo "file 'part3.mp4'" >> list.txt
ffmpeg -f concat -i list.txt -c copy output_merged.mp4
# 方法二:直接合并相同格式的文件(可能不可靠)
ffmpeg -i "concat:part1.mp4|part2.mp4|part3.mp4" -c copy output.mp4
# 7. 高级功能与滤镜
# ------------------------------------------------------------
# 添加水印(图片水印)
ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=10:10" output_with_watermark.mp4
# 去除音频(生成静音视频)
ffmpeg -i input.mp4 -an -c:v copy output_silent.mp4
# 加速/减速视频(注意音频可能会变调,需单独处理)
ffmpeg -i input.mp4 -vf "setpts=0.5*PTS" output_2x_speed.mp4 # 2倍速
ffmpeg -i input.mp4 -vf "setpts=2.0*PTS" output_half_speed.mp4 # 0.5倍速
# 加速/减速音频(同时保持音调,使用 rubberband 滤镜)
ffmpeg -i input.mp4 -filter:a "atempo=2.0" -vn output_audio_2x_speed.mp3 # 2倍速音频
# 8. 流复制与无损操作
# ------------------------------------------------------------
# 转换容器格式而不重新编码(速度快,无损)
ffmpeg -i input.mkv -c copy output.mp4
# 只复制视频流,重新编码音频流(用于更改音频格式)
ffmpeg -i input.mp4 -c:v copy -c:a aac output.mp4
# 只复制音频流,重新编码视频流
ffmpeg -i input.avi -c:a copy -c:v libx264 output.mp4
# 9. 硬件加速(以 NVIDIA GPU 为例)
# ------------------------------------------------------------
# 使用 NVIDIA NVENC 编码器进行硬件加速转码(大幅提升速度)
ffmpeg -hwaccel cuda -i input.mp4 -c:v h264_nvenc -b:v 5M output_hw.mp4
# 10. 获取媒体信息
# ------------------------------------------------------------
# 查看文件的详细编解码器、流、格式信息
ffmpeg -i input.mp4
# 静默模式,只输出信息,不输出进度和警告
ffmpeg -i input.mp4 -hide_banner
# 注意事项:
# 1. 大多数命令会重新编码视频,耗时长。使用 `-c copy` 可进行无损操作(流复制)。
# 2. 参数顺序很重要!`-i` 指定输入,输出文件通常在命令最后。
# 3. 使用硬件加速需要正确的驱动和 FFmpeg 版本支持。
正文到此结束