今天介绍一个功能强大的视频、音频处理工具
ffmpeg
- 下载安装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 |
更改视频大小 |
2021-03-18 15:08:22 回复
沙发