序列帧转H264视频
ffmpeg -r 60 -f image2 -s 1920x1080 -i fram%d.jpg -vcodec libx264 -crf 25 -pix_fmt yuv420p test.mp4
-vcodec h264
.\ffmpeg -r 60 -f image2 -s 1920x1080 -i %04d.jpeg -vcodec h264 test.mp4
%04d 表示用零来填充直到长度为4,i.e 0001…0020…0030…2000 and so on.
如果没有填充,需要相应更改,如 pic%d.png or %d.png
-r 帧率(fps)
-f image2 图像合成视频默认设置
-crf 画质,数值小意味着画质高,通常设置为15-25
-s 分辨率(1920x1080)
-pix_fmt yuv420p 像素格式
test.mp4 输出在当前文件夹,输出结果为test.mp4
视频转序列帧
ffmpeg -i ./data/darendaxiaohai.mp4 -r 2 -s 200,112 -ss 00:00:00 -to 00:00:07 %03d.png
-i为input视频的路径加文件名
-r为每秒截取多少帧,即每秒多少张图像
-s为输出的图像size,大小
-ss为start time,从视频哪一段开始
-to为到达哪一段结束;也可以使用-t即duration持续时间,从-ss开始持续多少s然后结束
%03d.png将在视频目录下得到001、002、003等png图片
如果不加时间相关操作,是按照对整个视频进行操作的。
多音轨视频转mp4
ffmpeg -i input.mkv -map 0:0 -map 0:1 -map 0:2 -c copy -disposition:a:0 default -y output.mp4
输入文件包含一个视频轨道,两个音频轨道
0:0 表示视频轨道
0:1 表示第一个音频轨道
0:2 表示第二个音频轨道
-c copy 复制编码,也即是编码不变
最关键的,-disposition:a:0 default
设置音频轨道的第一个为默认值。
ffmpeg控制码率
ffmpeg控制码率有3种参数选择,-minrate -b:v -maxrate
【-b:v】主要是控制平均码率
比如一个视频源的码率太高了,有10Mbps,文件太大,想把文件弄小一点,但是又不破坏分辨率。可以如下操作:
ffmpeg -i input.mp4 -b:v 2000k output.mp4
1
这个操作把码率从原码率10Mbps转成2Mbps码率,这样其实也间接让文件变小了。目测接近一半。
不过,ffmpeg官方wiki比较建议,设置b:v时,同时加上 -bufsize
【-bufsize 】用于设置码率控制缓冲器的大小,设置的好处是,让整体的码率更趋近于希望的值,减少波动。(简单来说,比如1 2的平均值是1.5, 1.49 1.51 也是1.5,当然是第二种比较好)
ffmpeg -i input.mp4 -b:v 2000k -bufsize 2000k output.mp4
1
【-minrate -maxrate】就简单了,在线视频有时候,希望码率波动,不要超过一个阈值,可以设置maxrate。
ffmpeg -i input.mp4 -b:v 2000k -bufsize 2000k -maxrate 2500k output.mp4
ffmpeg添加字幕文件
ffmpeg -i input.mp4 -vf subtitles=subtitle.srt output.mp4文章来源:https://www.toymoban.com/news/detail-668214.html
提取取字幕
ffmpeg -i chase.mkv -map 0:s:0 subs.srt文章来源地址https://www.toymoban.com/news/detail-668214.html
- -i 表示输入文件
- -map 表示视频中的那部分
- 0:s:0 第一个0表示第一个视频
- 0:s:0 s表示是字幕
- 0:s:0 第二个0表示第几个字幕文件
- subs.srt表示输出文件名称
到了这里,关于FFMPEG小白常用命令行的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!