N23※FFmpeg基础操作

1> FFmpeg 使用格式

ffmpeg {1} {2} -i {3} {4} {5}
  1. 全局参数
  2. 输入文件参数
  3. 输入文件
  4. 输出文件参数
  5. 输出文件
ffmpeg \
-y \ # 全局参数
-c:a libfdk_aac -c:v libx264 \ # 输入文件参数
-i input.mp4 \ # 输入文件
-c:v libvpx-vp9 -c:a libvorbis \ # 输出文件参数
output.webm # 输出文件

简化编码格式:

ffmpeg -i input.avi output.mp4

2> 常用命令行参数

参数说明
-c指定编码器
-c copy直接复制,不经过重新编码(速度较快)
-c:v指定视频编码器
-c:a指定音频编码器
-i指定输入文件
-an去除音频流
-vn去除视频流
-preset指定输出的视频质量,会影响文件的生成速度
ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow
-y不经过确认,输出时直接覆盖同名文件

3> 常见用法

① 查看文件信息

ffmpeg -i input.mp4
ffmpeg -i input.mp4 -hide_banner  # 只显示元信息

② 转换编码格式

ffmpeg -i input.mp4 -c:v libx264 output.mp4  # H.264编码

③ 转换容器格式

ffmpeg -i input.mp4 -c copy output.mkv  # 只转换容器,内部编码格式不变

④ 调整码率

ffmpeg \
-i input.mp4 \
-minrate 964K -maxrate 3856K -bufsize 2000K \
output.mp4   # 指定码率最小为964K,最大为3856K,缓冲区大小为 2000K

⑤ 改变分辨率

ffmpeg \
-i input.mp4 \
-vf scale=480:-1 \
output.mp4  # 1080P转480P

⑥ 提取音频

ffmpeg \
-i input.mp4 \
-vn -c:a copy \  # 去掉视频,不改变音频编码,直接拷贝
output.aac 

⑦ 添加音轨

ffmpeg \
-i input.aac -i input.mp4 \
output.mp4

⑧ 截图

ffmpeg \
-y \
-i input.mp4 \
-ss 00:01:24 -t 00:00:01 \
output.jpg  # 从00:01:24开始,连续对1秒的视频进行截图
ffmpeg \
-ss 01:23:45 \
-i input \
-vframes 1 -q:v 2 \  # 只截取1帧, -q:v 2 指定输出的图片质量
output.jpg  

⑨ 裁剪

ffmpeg -ss [start] -i [input] -t [duration] -c copy [output]
ffmpeg -ss [start] -i [input] -to [end] -c copy [output]
ffmpeg -ss 00:01:50 -i input.mp4 -t 10.5 -c copy output.mp4
ffmpeg -ss 2.5 -i input.mp4 -to 10 -c copy output.mp4

⑩ 为音频添加封面(将音频文件转为带封面的视频文件)

ffmpeg \
-loop 1 \   # 图片无限循环
-i cover.jpg -i input.mp3 \  # cover.jpg为封面图片
-c:v libx264 -c:a aac -b:a 192k -shortest \  # -shortest 表示音频文件结束,输出视频结束
output.mp4

⑪ 视频压缩

a. 指定压缩后的文件大小

ffmpeg  -i  input.mp4  -fs 10MB  output.mp4  # 文件大小最大值为10MB

b. 设置视频的帧率

ffmpeg  -i  input.mp4  -r 20  output.mp4  # 帧率设置为 20fps,

c. 设置视频的码率

ffmpeg  -i  input.mp4  -b:v 1M  output.mp4  # -b:v 指定视频的码率   -b:a  指定音频的码率  1920*1080,帧率24、25、30,码率可选择5、6、7、8Mb/s 

d. 设置视频的分辨率

ffmpeg  -i  input.mp4  -s 1920x1080  output.mp4  # 视频分辨率为1920x1080

e. 结合使用

ffmpeg  -i  input.mp4  -s 1920x1080  -b:v 1M  -r 20  output.mp4

f. 推荐使用

# -crf :通常取值范围为18-28;18被认为是视觉无损的;数值越大压缩后的视频大小就越小
# -preset:设置压缩速度和输出文件大小的平衡。可选值有ultrafast、superfast、veryfast、faster、fast、medium、slow、slower、veryslow等
ffmpeg -i input.mp4 -codec:v libx264 -crf 23 -preset medium -codec:a copy output.mp4

⑫ 直播推流

ffmpeg -re -i input.mp4 -c:v libx264 -preset superfast -tune zerolatency -c:a aac -ar 44100 -f flv rtmp://server/live/stream_key

⑬ 修复模糊的视频

ffmpeg -i input.mp4 -vf "unsharp=lx=3:ly=3:la=1.5" output.mp4

其中,lxly 是水平和垂直方向上的锐化强度,la 是锐化半径。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享