使用ffmpeg从帧开始编码视频



我用

ffmpeg -i my_video.mp4 -vf scale=1024:-1 my_video.avi

对视频进行编码/转码。现在我想做同样的事情,但是从坐标系X开始。我该怎么做呢?

Larry的观点是,视频通常是可变帧速率的,所以使用时间戳可能不准确。但是,您可以使用-fps_mode将视频转换为恒定帧速率。

ffmpeg -i <input> -fps_mode cfr -c:v copy -c:a copy <output>

确定修剪的开始帧,然后计算开始帧在视频中出现的时间。这需要你知道开始帧的帧数和视频的fps(可以通过ffprobe获得)。

frame_time =frame number / frames per second

在下面的命令中,-ss标志将在给定时间开始修剪视频。输入我们刚刚计算的帧时间戳,我把它标记为<frame_time>

ffmpeg -ss <frame_time> -i <input> <output.avi>

另外,如果你的输出视频有一定的帧数,请使用:

ffmpeg -ss <frame_time> -i <input> -frames:v <number_of_frames> <output.avi>

对于原来的问题,您可以将-vf scale=1024:-1插入到上述任意一个命令中(在输出之前)。

最新更新