FFmpeg常用命令
| 1 | # 计算input.mp4的帧数 | 
 -v error:这隐藏了“info”输出
 -count_frames:计算每个流的帧数,并在相应的流部分中报告。
 -select_streams v:0 :仅选择视频流
 -show_entries stream = nb_read_frames :只显示读取的帧数。
 -of default = nokey = 1:noprint_wrappers = 1 :将输出格式(也称为“writer”)设置为默认值,不打印每个字段的键(nokey = 1),不打印节头和页脚(noprint_wrappers = 1)。
| 1 | # 读取test.avi后,用H.264以400kbps码率压缩成test1.mp4文件 | 
 -i test.avi 输入文件
 -c:v libx264 编码方式 H.264
 -b:v 400k 码率400kbps
 -c:a copy 音频不变
 -vsync passthrough 每一帧从解码器到编码器,时间戳保持不变
 cfr 如果指定了输出帧率,输入帧会按照需要进行复制(如果输出帧率大于输入帧率)或丢弃(如果输出帧率小于输入帧率)
 vfr 输入帧从解码器到编码器,时间戳保持不变;如果出现相同时间戳的帧,则丢弃之
 drop 同 passthrough,但将所有帧的时间戳清空
| 1 | # 将两段视频合成为一段concatenate: | 
 -i 两段视频
 -filter_complex video流 concatenate
 -vsync 自动同步
| 1 | # 无损改变视频容器 | 
 -i 输入视频
 -vcodec 视频编解码器
 -acodec 音频编解码
 输出路径
| 1 | # 读取视频文件,输出文件的每一帧信息到json | 
| 1 | # 获取视频帧率 | 
 -v error 设置日志级别为error,以减少输出中的冗余信息。
 -select_streams v:0 选择第一个视频流(视频流索引从0开始)。如果你的视频文件中包含多个视频流,并且你想获取特定一个的帧率,这个选项就很有用。
 -show_entries stream=r_frame_rate:仅显示所选流的帧率信息。r_frame_rate是FFmpeg中表示帧率的字段。
 -of default=noprint_wrappers=1:nokey=1:设置输出格式,去除额外的包装和键名,只保留值。
| 1 | # 获取视频宽高 | 
| 1 | # 指定抽取时间戳上的视频帧 | 
 -i 输入视频
 -ss 时间戳
 -vframes 1 仅抽取一帧,抽完退出
| 1 | # 按时间裁剪视频 | 
 -ss 分割起始时间
 -i 输入视频
 -t 分割的持续时间,时分秒
