【问题标题】:video recording logic error - fps视频录制逻辑错误 - fps
【发布时间】:2023-03-19 22:26:01
【问题描述】:

我创建了一个带有开放简历的相机/录像机,一切都很好。问题是当我播放视频时,即使视频文件只播放 30.0 fps,我也能获得超高速播放。有人可以帮我发现我没有记录足够帧的逻辑错误吗?我会根据 fps 延迟几毫秒。

我知道我数学很笨,就是找不到。

    self.FPS = 30.0
    self.VIDEO_FILENAME = 'test.mp4'
    self.CODEC = highgui.CV_FOURCC('D','I','V','X')  #mpeg-4 codec                                                                
    self.VIDEO_RESOLUTION = (640,480)
    self.camera = highgui.cvCreateCameraCapture(0)
    self.writer = highgui.cvCreateVideoWriter(self.VIDEO_FILENAME, self.CODEC,
                                              self.FPS, self.VIDEO_RESOLUTION, 1)        

    while True:
        im = highgui.cvQueryFrame(self.camera)
        im = opencv.cvGetMat(im)
        highgui.cvWriteFrame(self.writer, im)
        pygame.time.delay(int(1000 * 1.0/self.FPS)) ## of milliseconds

【问题讨论】:

  • 是否可以发布示例视频?

标签: python opencv


【解决方案1】:

不,不知道,听起来延迟功能没有延迟,够奇怪的。但是,这里有一些额外的 cmets:

  1. 不要为了让除法正常工作而使用浮点数。改用未来的导入:

    >>> from __future__ import division
    >>> 1000/30
    33.3333333333336
    

    现在您可以使用 int(1000/30) 代替 int(1000*1.0/30)。好多了。

  2. 另外,您正在使用 pygames 延迟功能,它基本上是通过消耗处理器时间来延迟。馊主意。请改用 wait()。

  3. 1000/30 是 33.33333,而您的代码会延迟 33,因此它会运行 1% 的速度太快,除非显示图像需要 1% 的时间。 :) 如果显示图像的时间超过 0.333333333 毫秒,您应该实际运行 slow。 :-) 您可能应该查看显示页面后的时间,并等待剩余时间到下一帧应该出现的时间。 pygame.time.Clock 可能对此有所帮助。

【讨论】:

  • 感谢您的提示;非常感谢。
猜你喜欢
  • 1970-01-01
  • 2021-12-31
  • 2013-04-14
  • 2016-08-07
  • 1970-01-01
  • 2015-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多