ffmpeg命令的简单使用

通用参数

  • -f fmt:指定格式(音频或者视频格式)
  • -i filename:指定输入文件名,在Linux下当然也能制定:屏幕录制或者摄像头
  • -y:覆盖已有文件
  • -t duration:指定时长
  • -fs limit_size:设置文件大小
  • -ss time_off: 从指定的时间(单位:S)开始,也支持hh:mm:ss[.xxx]的格式
  • -re:按照帧率发送,作为推流工具的时候一定要加入该参数,否则ffmpeg会按照最高速率向流媒体服务器不停发送数据。
  • -map:输出文件的流映射关系。

视频参数

  • -b:指定比特率(bit/s),ffmpeg是自动使用VBR的,若指定了该参数则使用平均比特率。
  • -bitexact:使用标准比特率。
  • -vb:指定视频比特率(bits/s)
  • -r rate:帧速率(fps)
  • -s size:指定分辨率
  • -aspect aspect:设置视频长宽比
  • -croptop size:设置顶部切除尺寸
  • -cropbottom size:设置底部切除尺寸
  • -cropleft size:设置左切除尺寸
  • -cropright size:设置右切除尺寸
  • -padtop size:设置顶部补齐尺寸
  • -padbottom size: 设置底部补齐尺寸
  • -padleft size:设置左部补齐
  • -padright size:设置右部补齐
  • -padcolor color:补齐使用的颜色
  • -vn:取消视频的输出
  • -vcodec codec:强制使用codec编码方式('copy' 代表不进行重新编码)

音频参数

  • -ab:设置比特率,对于MP3若要听高品质声音建议设置为单声道80Kbit/s,双声道160Kbit/s
  • -aq quality: 设置音频采样率(Hz)
  • -ac channel:声道数,1单声道,2立体声。
  • -an:取消音频轨
  • -acodec codec:指定音频编码('copy' 代表不进行重新编码)
  • -vol volume: 设置录制音量大小

实践

  • 列出ffmpeg支持的所有格式
ffmpeg -formats
  • 剪切一段音频或视频文件
# 表示将文件input.mp4从第50s开始剪切20s的时间,输出到文件 output.mp4中
ffmpeg -i input.mp4 -ss 00:00:50.0 -codec copy -t 20 output.mp4
  • 将视频文件切割为多个文件
ffmpeg -i input.mp4 -t 00:00:50 -c copy small-1.mp4 --ss 00:00:50 -codec copy small-2.mp4
  • 提取一个视频文件中的音频文件
ffmpeg -i input.mp4 -vn -acodec copy output.m4a
  • 使一个视频中的音频静音

ffmpeg -i input.mp4 -an -vcodec copy output.mp4
  • 从MP4文件中抽取视频流导出为裸H264数据
# 视频数据使用mp4toannexb
ffmpeg -i input.mp4 -an -vcodec copy -bsf:v h264_mp4toannexb output.h264
  • 使用AAC音频数据和H264的视频生产MP4文件
ffmpeg -i input.aac -i input.h264 -acodec copy -bsf:a aac_adtstoasc -vcodex copy -f mp4 output.mp4
  • 对音频文件的编码格式做转换
ffmpeg -i input.wav -acodec libfdk_aac output.aac
  • 从WAV音频文件中导出PCM裸数据
ffmpeg -i input.wav -acodec pcm_s16le -f s16le output.pcm
  • 重新编码视频文件,复制音频流,同时封装到MP4格式的文件中
ffmpeg -i input.flv -vcodec libx264 -acodec copy output.mp4
  • 将MP4格式的视频转换成为gif格式的动图
# 按照分辨比例不动宽度改为100(使用VideoFilter的 scaleFilter),帧率改为10(-r),只处理前5秒钟(-t)的视频,生成gif
ffmpeg -i input.mp4 -vf scale=100:-1 -t 5 -r 10 output.gif
  • 将一个视频的画面部分生成图片
# 每4秒钟截取一帧视频画面生成一张图片,生成的图片从 frames_0001.png开始一直递增下去
ffmpeg -i input.mp4 -r 0.25 frames_%04d.png
  • 将一组图片生成一个gif
ffmpeg -i frames_%04d.png -r 5 output.gif
  • 改变一个音频媒体文件中的音量
# 将input.wav中的声音减小一半
ffmpeg -i input.wav -af 'volume=0.5' output.wav
  • 淡入效果器的使用
# 将input.wav文件中的前5s做一个淡入效果
ffmpeg -i input.wav -filter_complex afade=t=in:ss=0:d=5 output.wav
  • 淡出效果器的使用
# 将input.wav文件从200s开始,做5s的淡出效果
ffmpeg -i input.wav -filter_complex afade=t=out:st=200:d=5 output.wav
  • 将两路声音合并
# 将input.wav和accompany.wav两个文件进行mix,按照时间长度较短的音频文件的时间长度作为最终输出的output.wav的时间长度。
ffmpeg -i input.wav -i accompany.wav -filter_complex amix=inputs=2:duration=shortest output.wav
  • 对声音进行变速但不变调效果器的使用
# 将input.wav按照0.5倍的速度进行处理生成output.wav
ffmpeg -i input.wav -filter_complex atempo=0.5 output.wav
  • 为视频增加水印
# main_w代表主视频宽度,overlay_w 代表水印宽度,main_h代表主视频高度,overlay_h代表水印高度
ffmpeg -i input.mp4 -i input.png -filter_complex '[0:v][1:v]overlay=main_w-overlay_w-10:10:1[out]' -map '[out]' output.mp4
  • 视频提亮效果器的使用
# 提亮参数是brightness,取值范围是从-1.0到1.0,默认值是0
ffmpeg -i input.flv -c:v libx264 -b:v 800k -c:a libfdk_aac -vf eq=brightness=0.25
           -f mp4 output.mp4
  • 视频增加对比度效果
# 比度参数是contrast,取值范围是从-2.0到2.0,默认值是1.0
ffmpeg -i input.flv -c:v libx264 -b:v 800k -c:a libfdk_aac -vf eq=contrast=1.5 -f mp4 output.mp4
  • 视频旋转效果
ffmpeg -i input.mp4 -vf "transpose=1" -b:v 600k output.mp4
  • 视频裁剪
ffmpeg -i input.mp4 -an -vf "crop=240:480:120:0" -vcodec libx264 -b:v 600k output.mp4
  • 将一张RGBA格式表示的数据转换为JPEG格式的图片
ffmpeg -f rawvideo -pix_fmt rgba -s 480*480 -i input.rgb -f image2 -vcodec mjpeg
output.jpg
  • 将一个YUV格式表示的数据转换为JPEG格式的图片
ffmpeg -f rawvideo -pix_fmt yuv420p -s 480*480 -i input.yuv -f image2 -vcodec mjpeg output.jpg
  • 将一段视频推送到流媒体服务器上
ffmpeg -re -i input.mp4 -acodec copy -vcodec copy -f flv rtmp://xxx
  • 将流媒体服务器上的流拉到本地
ffmpeg -i http://xxx/xxx.flv -acodec copy -vcodec copy -f flv output.flv
  • 将两个音频文件以两路流的形式封装到一个文件中
ffmpeg -i 131.mp3 -i 134.mp3 -map 0:a -c:a:0 libfdk_aac -b:a:0 96k -map 1:a -c:a:1 libfdk_aac -b:a:1 64k -vn -f mp4 output.m4a
上一篇:2021年最新Python零基础语法到博客项目实战,高清视频代码笔记作业


下一篇:内置函数及生成器