FFmpeg常用命令
# 计算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)。
# 读取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,但将所有帧的时间戳清空
# 将两段视频合成为一段concatenate: |
-i 两段视频
-filter_complex video流 concatenate
-vsync 自动同步
# 无损改变视频容器 |
-i 输入视频
-vcodec 视频编解码器
-acodec 音频编解码
输出路径
# 读取视频文件,输出文件的每一帧信息到json |
# 获取视频帧率 |
-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:设置输出格式,去除额外的包装和键名,只保留值。
# 获取视频宽高 |
# 指定抽取时间戳上的视频帧 |
-i 输入视频
-ss 时间戳
-vframes 1 仅抽取一帧,抽完退出
# 按时间裁剪视频 |
-ss 分割起始时间
-i 输入视频
-t 分割的持续时间,时分秒