FFmpeg常用命令备份
FFmpeg 是一个强大的开源多媒体处理工具,广泛应用于音视频的转换、裁剪、合并、提取等操作。无论是开发、剪辑还是日常处理,掌握 FFmpeg 的常用命令都能极大提升效率。本文整理了一些高频使用的 FFmpeg 命令,方便你快速上手或作为备忘录收藏!
临时需要处理一些上次到群晖 MinIO 的视频,写个流水线自动化处理。温故一下相关命令。
FFmpeg 简介
Fmpeg 是一个跨平台的音视频处理框架,支持几乎所有格式的音视频文件。它功能强大、命令灵活,堪称“音视频处理瑞士军刀”。以下是常见操作的命令合集,建议收藏备用!
常用命令速查
格式转换
将文件从一种格式转换为另一种格式,例如将 MP4 转为 AVI:
ffmpeg -i input.mp4 output.avi
-i:指定输入文件
提示:FFmpeg 会根据输出文件名自动推断目标格式
提取音频
从视频中提取音频,例如提取 MP3
ffmpeg -i input.mp4 -vn -acodec mp3 output.mp3
- -vn:禁用视频流。
- -acodec mp3:指定音频编码为 MP3
截取视频片段
裁剪视频的指定时间段,例如从第 10 秒到第 30 秒:
ffmpeg -i input.mp4 -ss 10 -t 20 output.mp4
# 通常搭配如下
ffmpeg -i input.mp4 -ss 10 -t 20 -c copy output.mp4
- -ss:起始时间(秒或 hh:mm:ss)
- -t:裁剪时长(秒或 hh:mm:ss)
- -c copy:直接复制流,避免重新编码,速度更快
视频截图
ffmpeg -ss 00:20:00 -i "input.mp4" -vframes 1 "01.jpg"
视频压缩
压缩视频文件大小,调整比特率:
ffmpeg -i input.mp4 -vcodec libx264 -b:v 1000k output.mp4
- -b:v:设置视频比特率,值越低压缩越高,但画质可能下降
调整视频分辨率
将视频缩放到指定分辨率,例如 1280x720:
ffmpeg -i input.mp4 -vf scale=1280:720 output.mp4
- -vf scale:设置缩放参数
转换帧率
更改视频帧率,例如从 60fps 转为 24fps:
ffmpeg -i input.mp4 -r 24 output.mp4
- -r:设置目标帧率
例如 h264 编码无损转换至 h265 编码
ffmpeg -c:v h264_cuvid -i input.mp4 -c:v hevc_nvenc -r 24 -c:a copy -x265-params lossless=1 output.mp4;
提取视频帧
将视频转为图片序列,例如每秒提取一帧:
ffmpeg -i input.mp4 -vf fps=1 frame_%04d.png
- %04d:生成文件名递增,如 frame_0001.png
查看文件信息
快速查看音视频文件的详细信息:
ffmpeg -i input.mp4
输出包含编码格式、分辨率、时长等详细信息
通常如下所用一键输出视频的编码、帧率、码率
codec=$(ffprobe -v error -select_streams v:0 -show_entries stream=codec_name -of default=noprint_wrappers=1:nokey=1 input.mp4)
r_frame_rate=$(ffprobe -v error -select_streams v:0 -show_entries stream=r_frame_rate -of default=noprint_wrappers=1:nokey=1 input.mp4)
bit_rate=$(ffprobe -v error -select_streams v:0 -show_entries stream=bit_rate -of default=noprint_wrappers=1:nokey=1 input.mp4)
echo -e "$codec\t$r_frame_rate\t$bit_rate\tinput.mp4"
视频合并
将多个视频文件合并为一个(需确保分辨率、编码一致):
# 创建文件列表 mv.txt
echo "file 'input1.mp4'" > mv.txt
echo "file 'input2.mp4'" >> mv.txt
ffmpeg -f concat -i mv.txt -c copy output.mp4
这个没用过,仅供参考
实用技巧与注意事项
- Linux:apt install ffmpeg(Debian)
- macOS:brew install ffmpeg
我仅在这两个环境实操过,其他环境可以参考官方文档,类似文档很详细了
另外结合脚本语言很方便,例如 bash
写在最后
FFmpeg 的功能远不止这些,熟练使用后,你可以轻松应对音视频处理的各种场。对于我而言,掌握基本功能从视频中导出音频文件使用就行(大部分还用不上,因为还有一些第三方工具帮你自动一键搞定)
欢迎关注我的微信公众号。
