为什么从视频中提取一秒至少不会导致帧时间的倍数?
Why doesn't extracting one second from a video at least result in a multiple of the frame time?
试图更好地理解为什么我无法以准确的时间从影片剪辑中提取片段,即使我考虑了剪辑的帧速率也是如此。
例如,如果我 运行 在 29.97 fps 视频剪辑上执行以下命令以尝试提取 1 秒的视频:
ffmpeg -i input.avi -ss 0 -t 1 -c:v huffyuv -an output.avi
持续时间为 1.001 秒。
现在,如果结果实际上是 0.02997 秒的倍数,这对我来说更有意义 (29.97 fps / 1000 ms)
但是通过计算来检查倍数 (0.02997, 0.05994, ..., 0.98901, 1.01898, 1.04895)
,我发现最接近的倍数实际上是为 1.01898 或 1.04895
我在这里错过了什么?
确切的帧率不是 29.97
,而是 30000/1001
。因此每一帧的持续时间为 1001/30000
秒,因此以该速率播放 30 帧会占用 1001*30/30000
= 1.001
秒。
试图更好地理解为什么我无法以准确的时间从影片剪辑中提取片段,即使我考虑了剪辑的帧速率也是如此。
例如,如果我 运行 在 29.97 fps 视频剪辑上执行以下命令以尝试提取 1 秒的视频:
ffmpeg -i input.avi -ss 0 -t 1 -c:v huffyuv -an output.avi
持续时间为 1.001 秒。
现在,如果结果实际上是 0.02997 秒的倍数,这对我来说更有意义 (29.97 fps / 1000 ms)
但是通过计算来检查倍数 (0.02997, 0.05994, ..., 0.98901, 1.01898, 1.04895)
,我发现最接近的倍数实际上是为 1.01898 或 1.04895
我在这里错过了什么?
确切的帧率不是 29.97
,而是 30000/1001
。因此每一帧的持续时间为 1001/30000
秒,因此以该速率播放 30 帧会占用 1001*30/30000
= 1.001
秒。