文章目录
视频信息
ffmpeg -i inout.mp4
视频类型转换
ffmpeg -i input.mp4 output.avi
视频截取
ffmpeg -i input.mp4 -ss 00:00:00 -t 00:00:10 -vcodec copy -acodec copy output.mp4
参数说明
-ss: 开始时间 小时:分钟:秒钟
-t: 多长时间
-vcodec: video编码器 copy代表复制,即不变。
-acodec :audio编码器
rawvideo 格式转换
支持的格式
ffmpeg -pix_fmts
转换成所需的格式
ffmpeg -i input.mp4 -pix_fmt yuv420p10le output.mp4
提取yuv
ffmpeg -i input.mp4 -an -c:v rawvideo -pix_fmt yuv420p -vframes 5 out.yuv
- 参数说明
-i : 表示要处理的文件
-a : audio ; n : no // 要输出的结果里不包含音频
-c:v : 与-vcodec一样,表示视频编码器, c是codec的缩写,v是video的缩写 // rawvideo 表示原始视频流(未经混合 - 只含一视频流)
-pix_fmt : 像素格式, 音视频处理中比较常用的像素格式为yuv420
-vframes: 指定帧数
RGB、YUV之间的转换
ffmpeg -s 640*480 -i yuv420p_640x480.yuv -pix_fmt yuv420p -pix_fmt rgb24 -s 640*480 rgb24_640x480.rgb
播放
ffplay -s WxH out.yuv
1、需要 -s 指定分辨率大小是因为yuv数据就只是数据,不含有头部信息。
2、播放非8bit位深的rawvideo时,需要通过-pix_fmt xxx来指明数据的格式,否则会绿屏等现象。
编码器转码
ffmpeg -i input.mp4 -vcodec libx264 -acodec acc output.mp4
I帧间隔
ffmpeg -i input.mp4 -keyint_min 100 -g 100 -sc_threshold 0 out.264
I帧间隔设为100
-keyint_min为最小关键帧间隔。
-sc_threshold这个命令会根据视频的运动场景,自动添加额外的I帧,所以会导致你编出来的视频关键帧间隔不是你设置的长度,这是只要将它设为0。
-g 控制关键帧间隔
ffprobe基本用法
查看基本信息
ffprobe -i input.mp4
查看格式信息
ffprobe -i input.mp4 -show_format
查看码流信息
ffprobe -i input.mp4 -show_streams
查看帧信息
ffprobe -i input.mp4 -show_frames