FFmpeg 指定比特率导出指定时长视频
方法一:通过设置时间范围和比特率转码
这种方法先明确指定要截取的时间范围(1 秒时长),然后进行转码并设置比特率,步骤如下:
确定时间范围
假设你要截取原视频中从第 10 秒开始的 1 秒时长内容(你可以根据实际需求修改起始时间),需要将起始时间(-ss 参数)和持续时间(-t 参数)结合使用。
执行转码命令
以下是以设置视频比特率为 1M(1Mbps)为例的转码命令,输出一个新的视频文件包含指定的 1 秒内容:
ffmpeg -i input_video.mp4 -ss 10 -t 1 -b:v 1M output_video_1s.mp4
各参数含义如下:
-i input_video.mp4:指定输入的原始视频文件,把 input_video.mp4 换成你实际的视频文件名。
-ss 10:表示从原视频的第 10 秒处开始截取,单位是秒。
-t 1:指定要截取的时长为 1 秒。
-b:v 1M:-b:v 用于设置视频比特率,这里设定为 1Mbps,你可以按需更改该数值。
output_video_1s.mp4:转码后输出的视频文件名,可自行修改。
方法二:通过过滤视频流的方式(利用视频滤镜)
你还可以通过视频滤镜来筛选出想要的 1 秒视频内容并设置比特率,示例命令如下(同样以截取从第 10 秒开始的 1 秒时长且比特率设为 1M 为例):
ffmpeg -i input_video.mp4 -vf "trim=start=10:end=11,setpts=PTS-STARTPTS" -b:v 1M output_video_1s.mp4
解释一下相关参数:
-i input_video.mp4:输入的原始视频文件,按实际情况替换文件名。
-vf "trim=start=10:end=11,setpts=PTS-STARTPTS":通过视频滤镜(-vf)来操作,trim 滤镜用于裁剪视频片段,start=10 表示从第 10 秒开始,end=11 表示到第 11 秒结束(即持续 1 秒),setpts=PTS-STARTPTS 是对裁剪后的视频帧进行时间戳重置,确保时间顺序等正常。
-b:v 1M:设置视频比特率为 1Mbps。
output_video_1s.mp4:最终输出的视频文件名,可按需确定。
这两种方法都可以实现指定比特率并只导出视频中 1 秒内容的目的,方法一相对简单直接,常用于常规的时间截取操作;方法二在需要更精细地控制视频流处理(比如结合其他更多滤镜操作等)时比较有用。
转载请注明出处。