【问题标题】:camera.split_recording does not generate files on-flycamera.split_recording 不会即时生成文件
【发布时间】:2018-03-04 04:46:46
【问题描述】:

我正在录制视频,并希望定期将该视频保存到文件中。我使用 split_recording 命令。 但是问题是所有视频都只有在 stop_recording 命令之后才会出现在光盘上。

camera = PiCamera()
while (True):
    camera.start_recording('1.h264',format='h264')
    camera.wait_recording(5)

    for i in range(2, 5):
        camera.split_recording('%d.h264' % i, splitter_port=1)
        camera.wait_recording(2)

#All recording files appear only after belowline
camera.stop_recording() 

我的应用程序是安全摄像头,这意味着我可以运行摄像头数天,并且不会看到录制的文件,只有当我停止录制时,录制的文件才会出现在上面。

如何在不停止相机记录的情况下将记录转储到文件中?

【问题讨论】:

    标签: python stream raspberry-pi


    【解决方案1】:

    你可能需要使用自定义输出对象,这里是来自documentation的sn-p

    import picamera
    
    class MyOutput(object):
        def __init__(self):
            self.size = 0
    
        def write(self, s):
            self.size += len(s)
    
        def flush(self):
            print('%d bytes would have been written' % self.size)
    
    with picamera.PiCamera() as camera:
        camera.resolution = (640, 480)
        camera.framerate = 60
        camera.start_recording(MyOutput(), format='h264')
        camera.wait_recording(10)
        camera.stop_recording()
    

    在这种情况下,您的 MyOutput 类需要打开文件并以关闭文件的方式定义写入函数。冲洗功能也应该冲洗。 例如,在 MyOutput 类的构造函数中,您可以打开一个文件将文件处理程序作为类变量,并且 in write/flush 函数相应地写入和刷新文件处理程序。

    [编辑]刚刚找到了类似问题的好答案: https://raspberrypi.stackexchange.com/a/31389

    【讨论】:

    • 这个解决方案的问题是我需要stop_recording,而不是start_recording。这会减慢相机的速度。每次我需要为recordintg创建一个新名称时都可以
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多