【图像处理】 ffmpeg的使用
视频按帧拆分
ffmpeg -i video.avi image-%03d.jpg
- 将video.avi按帧拆分为image-001.jpg、image-002.jpg …
- -i:参数-i和video.avi不能分开。新加参数应该放在-i video.avi整体之后
- 可选参数-r:每秒取几帧。 -r 1 代表每秒抽取1帧,默认是24帧
- 可选参数-t:从头开始取t秒的帧。 -t 3 代表从头开始取3秒的帧,每秒取几帧由-r决定
- 可选参数-ss:从哪里开始取帧。 -ss 00:00:05 代表从05秒开始取帧,从这里开始持续几秒取帧由-t决定。这里格式不一定非得是00:00:00,单独一个整数也可以,代表从第几秒开始
- 可选参数:-vframes:往下取几帧。 -vframes 10 代表往下取10帧
将图片串成视频
ffmpeg -i image-%02d.jpg video.mp4
- 将图片image-01.jpg、image-02.jpg… 转换成视频video.mp4
- -r:指定帧率
- -s:指定视频的size, -s widthxheight(注意中间是小写字母x)
视频拆分
ffmpeg -ss 起始时间 -t 截取时常 -i original_video.mp4 -vcodec copy -acodec copy output_video.mp4
视频转换格式
ffmpeg -i video.avi video.mp4
- 将video.avi转换为video.mp4
- 参数-c:v:-c:v libx264,指定编码为H.264
视频编码和视频格式的区别和联系
视频编码是一种压缩技术,就是把原始的视频流压缩成特定的比特流。视频格式是一种封装格式,就是把编码后的比特流进行封装,不同的视频格式封装方法不同。
使用ffprobe获取视频总帧数
ffprobe -v error -count_frames -select_streams v:0 -show_entries stream=nb_read_frames -of default=nokey=1:noprint_wrappers=1 input.mp4
- -v error:-v用于设置日志等级,error代表日志打印所有error信息。设置为quiet,则表示什么都不输出
- -count_frames:计算视频流的帧数
- -select_streams v:0:仅选择处理视频流
- -show_entries stream=nb_read_frames:-show_entries用于选择要显示的内容,这里设置为只显示读取的帧数
- -of default=nokey=1:noprint_wrappers=1:将输出格式(也称为“writer”)设置为默认值,不打印每个字段的键(nokey = 1),不打印节头和页脚(noprint_wrappers = 1)
ffprobe官方文档
http://www.ffmpeg.org/ffprobe.html
使用ffprobe获取视频帧率
ffprobe -v error -select_streams v:0 -of default=noprint_wrappers=1:nokey=1 -show_entries stream=r_frame_rate input.mp4
转换视频帧率
时长不变,丢弃帧
ffmpeg -r 原始帧率 -i 原始视频.mp4 -r 目标帧率 输出视频.mp4
结语
如果您有修改意见或问题,欢迎留言或者通过邮箱和我联系。
如果我的文章对您有帮助,转载请注明出处。