初探FFmpeg命令行
前言
微博上很火的sorry
表情包程序, 看到有Java
程序, 于是扒了下来看源码。
看是怎么实现的, 原来是生成ass
字幕文件, 然后用FFmpeg
命令加入视频。
介绍
FFmpeg
是用于录制、转换和流化音频和视频的完整解决方案。
官网地址、GitHub地址
安装教程
ffmpeg -h帮助
在命令行输入ffmpeg -h
可以看到帮助命令。
这里只显示常用的帮助命令。
1 | 用法: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}... |
FFmpeg过滤器
ffmpeg
目录下, 有个文件夹叫libavfilter
, 它可以单独编译为一个库。用于音视频过滤。
相当于一个特效之类的东西。
官方文档
使用示例
- 显示媒体文件详细信息
1
ffmpeg -i input.mp4
- 将视频文件转换为不同的格式
1
ffmpeg -i input.mp4 output.avi
- 将视频文件转换为音频文件
1
ffmpeg -i input.mp4 -vn -ar 44100 -ac 2 -ab 320 -f mp3 output.mp3
- 更改视频文件的分辨率
1
2ffmpeg -i input.mp4 -s 1280x720 -c:a copy output.mp4
ffmpeg -i input.mp4 -filter:v scale=640:480 -c:a copy output.mp4 - 压缩
1
2
3
4# 压缩视频文件
ffmpeg -i input.mp4 -vf scale=1280:-1 -c:v libx264 -preset veryslow -crf 24 output.mp4
# 压缩音频文件
ffmpeg -i input.mp3 -ab 128 output.mp3 - 删除音频、视频
1
2
3
4# 删除视频
ffmpeg -i input.mp4 -vn output.mp3
# 删除音频
ffmpeg -i input.mp4 -an output.mp4 - 截取图片
1
2# 截取1帧图片保存为image-01.png的格式
ffmpeg -i input.mp4 -r 1 -f image2 image-%2d.png - 裁剪视频
1
2
3
4
5
6# 从位置(10,20)开始裁剪300×400的部分
ffmpeg -i input.mp4 -filter:v "crop=10:20:300:400" output.mp4
# 将第10秒开始的50秒视频转为avi格式, 可以用hh.mm.ss格式
ffmpeg -i input.mp4 -ss 10 -t 50 output.avi
# 将纵横比改为16:9
ffmpeg -i input.mp4 -aspect 16:9 output.mp4 - 添加字幕到视频文件
1
ffmpeg -i input.mp4 -i subtitle.srt -map 0 -map 1 -c copy -c:v libx264 -crf 23 -preset veryfast output.mp4
- 添加字幕并转为gif
1
ffmpeg -i input.mp4 -r 6 -vf ass=videoAss.ass,scale=300:-1 -y output.gif