Picamera将视频记录到不同的文件中错误

问题描述:

我正在使用Picamera V3记录一系列视频并将它们存储在一系列文件中。例如,我录制了5个视频,每个视频都是2s。我将它们存储在files1到files5中。请看下面的代码:Picamera将视频记录到不同的文件中错误

import os 
from io import BytesIO 
from time import sleep 
import picamera 
from datetime import datetime 

""" initialization """ 
destination = '/home/pi/Desktop/video' 

stop = 0 

""" camera setup """ 
camera=picamera.PiCamera() 

camera.sharpness = 0 
camera.contrast = 0 
camera.brightness = 50 
camera.saturation = 0 
camera.ISO = 0 
camera.video_stabilization = False 
camera.exposure_compensation = 0 
camera.exposure_mode = 'auto' 
camera.meter_mode = 'average' 
camera.awb_mode = 'auto' 
camera.image_effect = 'none' 
camera.color_effects = None 
camera.rotation = 0 
camera.hflip = False 
camera.vflip = False 
camera.crop = (0.0, 0.0, 1.0, 1.0) 
camera.resolution=(1024,768) 

""" datetime get """ 
now = datetime.now() 

""" file name def """ 
def get_file_name(): 
    return os.path.join(destination, \ 
         "%s-%s-%s %s:%s:%s %d.h264" \ 
         %(now.year, now.month, \ 
          now.day, now.hour, now.minute, now.second, i)) 

# start loop 
while(stop==0): 

    if stop==1: 
     camera.stop_recording() 
     camera.stop_preview() 
     camera.close 

    else: 
     for i in range(1,5): 
      # open file 
      filename = get_file_name() 
      video_file = open(filename,'wb') 

      #start recording 
      camera.start_preview() 
      camera.start_recording(video_file) 
      sleep(2) 

      if i==4: 
       stop = 1 
       break 

当我运行这段代码: 1,我只能得到2个文件,而不是5 2,我会得到错误:“该相机已在使用端口1” 我能做什么? 非常感谢!

+0

使用wait_recording捕获异常(例如磁盘中的内存不足)希望它有助于http://picamera.readthedocs.io/en/release-1.12/_modules/picamera/camera.html#PiCamera.wait_recording – IddoE

+0

btw,更改为范围(0,5)迭代5次,范围(1,5)将迭代4次 – IddoE

+0

嗨,我尝试了wait_recording。它给出了同样的错误。一个 –

我对while循环做了一些改变,现在我想在每次录制后从键盘输入中检查。

import os 
from io import BytesIO 
from time import sleep 
import picamera 
from datetime import datetime 

""" initialization """ 
destination = '/home/pi/Desktop/video' 
i = 0 
stop = 0 

""" camera setup """ 
camera=picamera.PiCamera() 

camera.sharpness = 0 
camera.contrast = 0 
camera.brightness = 50 
camera.saturation = 0 
camera.ISO = 0 
camera.video_stabilization = False 
camera.exposure_compensation = 0 
camera.exposure_mode = 'auto' 
camera.meter_mode = 'average' 
camera.awb_mode = 'auto' 
camera.image_effect = 'none' 
camera.color_effects = None 
camera.rotation = 0 
camera.hflip = False 
camera.vflip = False 
camera.crop = (0.0, 0.0, 1.0, 1.0) 
camera.resolution=(1024,768) 

""" datetime get """ 
now = datetime.now() 

""" file name def """ 
def get_file_name(): 
    return os.path.join(destination, \ 
         "%s-%s-%s %s:%s:%s %d.h264" \ 
         %(now.year, now.month, \ 
          now.day, now.hour, now.minute, now.second, i)) 

# start loop 
while(stop == 0): 
#while(True): 

    i = i + 1 
    # open file 
    filename = get_file_name() 
    video_file = open(filename,'wb') 

    #start recording 
    camera.start_preview() 
    camera.start_recording(video_file) 
    sleep(2) 

    camera.stop_recording() 
    camera.stop_preview() 

    video_file.close() 

    stop = raw_input("input 1 to stop or 0 continue\n") 

else: 
    camera.close() 
    print ("Done!") 

现在我发现仍然有一些错误:“完成” 1,无论是1或0 I输入,程序将显示并退出while循环。 2,有没有一种方法可以用来完成这个功能:如果我输入“1”,记录停止并退出while循环,或者循环将继续。 谢谢。