今天继续学习ffmpeg教程,关于命令行工具的。其实调用ffmpeg很简单,不需要什么操作界面,一句命令行就可以解决。比如查看音视频的信息,用(-i input.mp4)这一句代码就可以实现,是不是很简单?它本身有很多命令,可以理解成C#中的关键字,比如-vcodec、-acodec、-ss、-t等。这篇主要介绍这些命令行的关键字
1、常用命令行
1.1、查看音视频文件信息
ffmpeg -i input.mp4
1.2、视频格式转换
ffmpeg -i input.mp4 output.avi
1.3、视频编解码
ffmpeg -i input.mp4 -vcodec h264 output.mp4
1.4、音频编解码
ffmpeg -i input.mp4 -acodec aac output.mp4
1.5、视频转码
ffmpeg -i input.mp4 -vcodec h264 -acodec aac output.mp4
1.6、视频剪切
即剪切视频文件的指定时间段
ffmpeg -i input.mp4 -ss 00:00:10 -t 00:00:05 output.mp4
1.7、视频裁剪
裁剪视频文件的指定区域
ffmpeg -i input.mp4 -vf crop=640:360:0:0 output.mp4
1.8、视频旋转
即将视频文件旋转指定角度
ffmpeg -i input.mp4 -vf rotate=90 output.mp4
1.9、视频水印
即给视频添加水印
ffmpeg -i input.mp4 -i logo.png -filter_complex overlay=10:10 output.mp4
1.10、视频缩放
即调整视频的尺寸大小
ffmpeg -i input.mp4 -vf scale=320:240 output.mp4
1.11、分离音视频命令
即可以将视频文件中的音频和视频分离出来
ffmpeg -i input.mp4 -vn -acodec copy audio.mp3 ffmpeg -i input.mp4 -an -vcodec copy video.mp4
上述命令将 MP4 格式的文件分离出音频和视频,一个命令只输出音频,另一个命令只输出视频。
1.12、合并音视频
即可以将多个音频或视频文件合并成一个
ffmpeg -i input1.mp4 -i input2.mp4 -i input3.mp4 -filter_complex "[0:v][0:a][1:v][1:a][2:v][2:a] concat=n=3:v=1:a=1" output.mp4
上述命令将三个 MP4 格式的文件合并成一个。
1.13、裁剪视频
即可以将视频文件裁剪成指定的长度
ffmpeg -i input.mp4 -ss 00:00:05 -t 00:00:10 -c copy output.mp4
上述命令将 MP4 格式的文件从第 5 秒开始裁剪,裁剪长度为 10 秒。
以上就是ffmpeg常用命令行语法。在在处理不同的任务时,需要对这些语法叠加使用。下面是一些常用的FFmpeg命令行参数的详解:
2、命令行参数的详解
-i:指定输入文件路径,可以是本地文件路径或者网络路径,例如:ffmpeg -i input.mp4。
-f:指定输入/输出文件格式,例如:ffmpeg -f mp4 -i input.flv output.mp4。
-vcodec:指定视频编解码器,例如:ffmpeg -i input.mp4 -vcodec copy output.mp4。
-acodec:指定音频编解码器,例如:ffmpeg -i input.mp4 -acodec copy output.mp4。
-ss:指定起始时间,例如:ffmpeg -i input.mp4 -ss 00:01:00 -t 00:00:30 output.mp4,表示从第1分钟开始截取30秒。
-t:指定持续时间,例如:ffmpeg -i input.mp4 -t 00:00:30 output.mp4,表示截取前30秒。
-s:指定分辨率大小,例如:ffmpeg -i input.mp4 -s 640x360 output.mp4。
-r:指定帧率,例如:ffmpeg -i input.mp4 -r 24 output.mp4。
-b:v:指定视频码率,例如:ffmpeg -i input.mp4 -b:v 500k output.mp4,表示视频码率为500k。
-b:a:指定音频码率,例如:ffmpeg -i input.mp4 -b:a 128k output.mp4,表示音频码率为128k。
-filter_complex:指定复杂滤镜,例如:ffmpeg -i input.mp4 -filter_complex "[0:v]scale=640:360[v];[v]copy[v1];[v1]copy[v2]" -map "[v2]" output.mp4,表示将输入视频缩放为640x360,并复制为两份输出。
-map:指定输入/输出流,例如:ffmpeg -i input.mp4 -map 0:v -map 0:a output.mp4,表示将输入文件中的视频和音频流都输出到输出文件中。
相关阅读
文章评论