ffmpeg命令行常用命令总结

简介

ffmpeg可以很方便的把不同格式的音视频进行相互转换,同时也可以对视频进行剪切,放缩,压缩等一系列基本操作,在这里我做一个自我总结,把我最近使用比较多的一些命令分享给大家。

总结

1.mp4和avi的基本互转

ffmpeg -i D:\input.mp4 E:\output.avi
ffmpeg -i D:\input.avi E:\output.mp4

-i 表示input,即输入。后面填一个输入地址和一个输出地址,这种方式没有指定任何参数和解码器,都用默认,会发现转换得到的文件压缩严重,avi文件只有200kbps的码率。
2.mp4和avi的无损互转
需要具体说明,先讲mp4转换avi。

ffmpeg -i D:\input.mp4 -qscale 0 E:\output.avi
或者
ffmpeg -i D:\input.mp4 -c copy E:\output.avi

这里更推荐第一种方式,-qscale表示质量控制,0表示0损失,现在的ffmpeg已经采用qsacle取代了原来的sameq方式。
第二种方式 -c copy表明会把原视频的所有流一模一样的复制,即不进行解码和重新编码,这种情况下得到的avi文件需要额外的解码器如potplayer才能打开,win10自带的是不行的。
注:-c copy包含了-c:v copy(视频流),-c:a copy(音频流)等所有流。另外其他写法如-vcodec -codec:v与-c:v copy是同义的,其余以此类推。
再说avi转mp4。

ffmpeg -i D:\input.mp4 -c:v copy -c:a copy E:\output.avi -y

-y表示不用确认覆盖文件,如果有重名的文件一般会在命令行向用户确认。
mp4转avi就直接copy就可以了,win10自带也能播。
3.截取视频片段

ffmpeg -i input.avi -c:v copy -c:a copy -ss 00:00:00 -to 00:00:30 cutout.avi -y

这是截取30s的,和前面一样,如果只是截取视频片段就不要重新编码了,一个-c copy搞定。
-ss后面跟的是时间位置,开始时间 -to 结束时间。
4.批量截取视频图片

for /R %v IN (*.avi) do ( ffmpeg -i %v -r 1 -f image2 %v%d.jpeg)

假设一个视频文件夹里有很多avi文件,我想每一个avi文件都间隔一帧截图,就是这条语句了。for…IN…do是命令行的循环格式。%v是文件名,%d是自动递增的数字名。-r定义的是间隔多少帧截图一次。
5.把大量图片组合成视频

ffmpeg -f image2 -framerate 30 -i %d.jpg xxx.avi

-framerate设定帧数,这里设成了30,也就是一秒30张图片,%d表示从1开始的图片,这里推荐大家一个软件renamer,免费版的就足够使用了,可以快速批量重命名文件,不用每次写重命名代码了。

1.https://ffmpeg.org/ffmpeg.html
ffmpeg官方文档
2.https://trac.ffmpeg.org/wiki
ffmpeg社区wiki

你可能感兴趣的:(数据预处理,ffmpeg,cmd,视频处理)