[英]How to make python record 30 or 60 frames per second using openCV and a Logitech C920
[英]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
而不是使用-r
的outputdict
。
inputdict
和outputdict
都沒有記錄在skvideo
中(沒有提到ffmpeg
文檔,沒有示例), -framerate
文檔中也沒有正確記錄ffmpeg
(它談到的是抓取而不是保存,並聲稱默認值是30000/1001
即使它是25
),甚至在調用-framerate
ffmpeg --help
時也沒有提到 -framerate 。
取而代之的是這個自我回答。 盡管在該線程中從 StackOverflow 社區收到了 -3 的負分,但請向 @Goury 大喊不刪除該線程。 Downvotes 意味着“沒有研究工作、不清楚或沒有用”,但這些都不是真的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.