以每秒 60 帧的速度在 Python 中写入视频

Write video in Python at 60 frames per second

我想使用 Python 创建一个每秒 60 帧的视频文件。

我尝试按如下方式制作一个两分钟的视频 (DURATION_SECONDS = 120),但我得到的视频持续了 4 分 48 秒,而不是 2 分钟。所以帧率似乎是 25,即使我将 60 传递给 FFmpegWriter。我做错了什么?

FRAMES_PER_SECOND = 60
DURATION_SECONDS = 120

import skvideo
skvideo.setFFmpegPath('C:\ffmpeg\x64')
import skvideo.io
import numpy as np

video_writer = skvideo.io.FFmpegWriter("test.mp4", outputdict={'-r':str(FRAMES_PER_SECOND)})

for i in range(DURATION_SECONDS*FRAMES_PER_SECOND):
    video_writer.writeFrame(np.zeros((100,100)))
    
video_writer.close()

我也得到了同样的结果 outputdict={'-vf':f"fps={FRAMES_PER_SECOND}"}

解决方案是将 inputdict={'-framerate':str(FRAMES_PER_SECOND)} 传递给 FFmpegWriter 而不是 outputdict-r

inputdictoutputdict 都没有记录在 skvideo 中(没有提到 ffmpeg 文档,没有示例),-framerate 也没有正确记录在the ffmpeg documentation(它说的是抓取而不是保存,并声称默认是 30000/1001 即使它是 25),调用 [=23 时甚至没有提到 -framerate =].

向@Goury 大声疾呼,因为他没有删除 this thread(这对这里有很大帮助),尽管在该线程中从 Whosebug 社区收到了 -3 的负分。