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” 我能做什么? 非常感谢!
答
我对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循环,或者循环将继续。 谢谢。
使用wait_recording捕获异常(例如磁盘中的内存不足)希望它有助于http://picamera.readthedocs.io/en/release-1.12/_modules/picamera/camera.html#PiCamera.wait_recording – IddoE
btw,更改为范围(0,5)迭代5次,范围(1,5)将迭代4次 – IddoE
嗨,我尝试了wait_recording。它给出了同样的错误。一个 –