百度已收录

今天介绍一个功能强大的视频、音频处理工具ffmpeg

如上图,其实站长也不知道这些版本的区别都是什么,应该随便找一个后缀名为zip的版本下载就好了


  • 下载好以后解压压缩包并重命名ffmpeg

  • 配置环境变量,此电脑 -> 右键 -> 属性

新建一个,路径为解压ffmpeg目录下的bin目录,确定

  • win + r键呼出运行工具

  • 输入ffmpeg,出现如下内容即安装成功


ffmpeg常用参数详解

参数 描述
-formats 输出所有可用格式
-f fmt 强迫采用格式fmt(文件格式, 如wav, avi等). 如果不指定该选项, 则使用文件扩展名来自动探测格式
-i filename 指定输入文件名
-y 覆盖已有文件
-t duration 记录时长为t
-fs limit_size 设置文件大小上限
-ss time_off 从指定的时间(s)开始, [-]hh:mm:ss[.xxx]的格式也支持
-b 指定比特率(bits/s),似乎ffmpeg是自动VBR的,指定了就大概是平均比特率
-vb 指定视频比特率(bits/s)
-vframes number 设置转换多少桢(frame)的视频
-r rate 桢速率(fps)
-s size 分辨率
-aspect aspect 设置视频长宽比(4:3, 16:9 or 1.3333, 1.7777)
-croptop size 设置顶部切除尺寸(in pixels)
-cropbottom size 设置底部切除尺寸(in pixels)
-cropleft size 设置左切除尺寸 (in pixels)
-cropright size 设置右切除尺寸 (in pixels)
-padtop size 设置顶部补齐尺寸(in pixels)
-padbottom size 底补齐(in pixels)
-padleft size 左补齐(in pixels)
-padright size 右补齐(in pixels)
-padcolor color 补齐带颜色(000000-FFFFFF)
-vcodec codec 强制使用codec编解码方式('copy' to copy stream)
-sameq 使用同样视频质量作为源(VBR)
-pass n 选择处理遍数(1或者2)。两遍编码非常有用。第一遍生成统计信息,第二遍生成精确的请求的码率
-newvideo 在现在的视频流后面加入新的视频流
-ab 设置音频比特率(单位:bit/s,也许老版是kb/s)
-aframes number 设置转换多少桢(frame)的音频
-aq quality 设置音频质量 (指定编码)
-ar rate 设置音频采样率 (单位:Hz)
-ac channels 设置声道数
-an 取消音频
-acodec codec 指定音频编码('copy' to copy stream)
-vol volume 设置录制音量大小(默认为256)
-newaudio 在现在的音频流后面加入新的音频流
-sn 取消字幕
-scodec codec 设置字幕编码('copy' to copy stream)
-newsubtitle 在当前字幕后新增

下面是站长经常帮朋友处理视频文件时使用到的组合命令

命令 描述
ffmpeg -i https://xxx.m3u8 -c copy xxx.mp4 下载网络m3u8文件到本地并转换为MP4格式
ffmpeg -i input.mp4 -fs 想要的文件大小 out.mp4 压缩指定视频到指定大小(可能会导致压缩出来的视频跟原视频长度不一致,如想要长度跟原视频保持一致,请看下一条)
ffmpeg -i input.mp4 -vcodec libx264 -b:v 400K out.mp4 压缩视频大小,-b:v 码率,一般设置为400k即可,此参数越小,文件大小越小,画面越模糊
ffmpeg -i imput.mp4 -i input.mp3 -vcodec copy -acodec copy output.mp4 视频音频合成
ffmpeg -i input.mp4 -metadata:s:v rotate="90" -codec copy output.mp4 旋转视频90°
ffmpeg -i input.mp4 -ss 00:01:00 -to 00:02:00 -c copy output.mp4 视频裁切指定长短
ffmpeg -ss 00:00:00 -t 00:00:01 -i input.mp4 -frames:v 1 -pix_fmt yuvj422p -f image2 output.jpg -y 固定时间点抽帧
ffmpeg -i input.mp4 -vf "select=eq(pict_type\,I)" -frames:v 1 -pix_fmt yuvj422p -vsync vfr -qscale:v 2 -f image2 output.jpg -y 抽取视频关键帧
I帧表示关键帧
P帧单预测帧
B帧双向预测帧
ffmpeg -i input.avi -c copy output.mp4 avi、mkv、flv等格式转为mp4
ffmpeg -i input.asf output.mp4 wmv、asf、rmvb等格式转为mp4
ffmpeg -i video.mp4 -i audio.mp4 -c:v copy -c:a aac -strict experimental output.mp4 合并音频和视频文件
ffmpeg -i input.wav -f mp3 -acodec libmp3lame output.mp3 wav转mp3
ffmpeg -i input.jpg -fs 30k output.png 压缩图片到指定大小
ffmpeg -i input.png -vf scale=width:height output.png 根据输入分辨率压缩图片,width和height需要填入具体数值
ffmpeg -i input.mp4 -vf fps=1 output%d.png 视频转换为图片
ffmpeg -i input.mp4 -vf scale=320:240 output.mp4 更改视频或图像的大小
ffmpeg -i part1.mp4 -i part2.mp4 -filter_complex vstack=inputs=2 output.mp4
ffmpeg -i part1.mp4 -i part2.mp4 -filter_complex hstack=inputs=2 output.mp4
组合/堆叠两个视频或图像
ffmpeg -r 100 -f image2 -s 500x500 -i pic%00d.png -vcodec libx264 -vf "pad=ceil(iw/2)*2:ceil(ih/2)*2" -crf 25 -pix_fmt yuv420p output.mp4 将图像与视频结合
ffmpeg -i part1.mp4 -i part1.mp4 -filter_complex "[0:v]pad=iw*2:ih*1[a];[a][1:v]overlay=w" output.mp4 组合/堆栈两个视频或图像和改变大小
ffmpeg -i input.mp4 -filter:v "setpts=PTS/60" output.mp4 加快视频速度
ffmpeg -i input.mp4 -ss 00:00:00 -t 00:00:10 -async 1 output.mp4 根据指定时间裁切视频
ffmpeg -i input.mp4 -c copy -an output.mp4 去除音频
ffmpeg -f concat -safe 0 -i join.txt -c copy output.mp4
join.txt
file part1.mp4
file part2.mp4
拼接视频
ffmpeg -i input.mp4 -i audio.wav -c:v copy -c:a aac output.mp4 合并视频和音频,音频重新编码
ffmpeg -i input.mp4 -filter:v "setpts=0.5*PTS" output.mp4 加快视频速度
ffmpeg -i input.mp4 -c:v libx264 -ar 22050 -crf 28 output.flv 更改视频格式
ffmpeg -i input.mp4 -vf scale=-1:720 -c:v libx264 -crf 18 -preset veryslow -c:a copy output.mp4 更改视频大小