覆盆子游戏中时光倒流电影

Raspberry timelapse movie on the fly

我有一个 Raspberry,我想在上面制作延时摄影电影。
我在互联网上看到的所有例子都是先保存一堆图像,然后将它们一次性全部转换成电影。

我想在很长一段时间内制作一部电影,所以我无法保存数千张图像。我需要的是一个在拍摄图像后立即将图像添加到电影中的工具。

有机会吗?

我认为您的逻辑存在缺陷 - 通过将每个图像添加到电影中,您必然会添加一个全帧,而不仅仅是一个 diff 帧。这将带来更高的质量,当然 - 但与保存整个图像相比,它也不会为您节省 space 任何东西。 space 您在向电影中添加东西时看到的节省都是关于差异,而不是存储完整帧。

使用增量检查帧进行部分差异可能有效,但我不确定您的目标格式是什么,也不确定需要什么代码才能任意添加差异帧或完整帧,取决于某些外部条件 - 编码通常作为一系列操作而不是单独进行。

一个答案,但还没有完成! 我需要你的帮助来使这个完美! 运行 在 python2

import os, cv2
from picamera import PiCamera
from picamera.array import PiRGBArray
from datetime import datetime
from time import sleep

now = datetime.now()
x = now.strftime("%Y")+"-"+now.strftime("%m")+"-"+now.strftime("%d")+"-"+now.strftime("%H")+"-"+now.strftime("%M")  #string of dateandtimestart

def main():
  imagenum = 100 #how many images
  period = 1 #seconds between images
  os.chdir ("/home/pi/t_lapse")
  os.mkdir(x)
  os.chdir(x)
  filename = x + ".avi"

  camera = PiCamera()
  camera.resolution=(1920,1088)
  camera.vflip = True
  camera.hflip = True
  camera.color_effects = (128,128) #makes a black and white image for IR camera
  sleep(0.1)
  out = cv2.VideoWriter(filename, cv2.cv.CV_FOURCC(*'XVID'), 30, (1920,1088))
  for c in range(imagenum):
      with PiRGBArray(camera, size=(1920,1088)) as output:
          camera.capture(output, 'bgr')
          imagec = output.array
          out.write(imagec)
          output.truncate(0) #trying to get more than 300mb files..
          pass
      sleep(period-0.5)
  camera.close()
  out.release()

if __name__ == '__main__':
  main()

我已经配置了几个按钮和一个 OLED,以便 select 在 OLED 上显示时间间隔和帧数(为简单起见,上面没有显示代码,但它也在这里:https://github.com/gchennell/RPi-PiLapse )

这不会使视频大于 366Mb,这是我已经达到的某种限制,我不知道为什么 - 如果有人有好的建议,我将不胜感激