我想要录制一段视频,运行这段代码时一旦打断录制,电脑直接卡死,这是为什么呢,可以帮忙解答一下吗?
-
import sensor, image, time, mjpeg, pyb sensor.reset() # Initialize the camera sensor. sensor.set_pixformat(sensor.GRAYSCALE) # or sensor.RGB565 sensor.set_framesize(sensor.QQVGA) # or sensor.QQVGA (or others) sensor.skip_frames(10) # Let new settings take affect. clock = time.clock() # Tracks FPS.跟踪fps sensor.skip_frames(30) # Give the user time to get ready. m = mjpeg.Mjpeg("example.mjpeg")#创建一个名为example的mjpeg文件 将其赋值给m #mjpeg.Mjpeg(filename, width=Auto, height=Auto)创建一个mjpeg对象, #filename为保存mjpeg动图的文件路径 for i in range(2000):#rang创建一个列表 range(start, stop[, step]) #从start开始(默认从0开始),到stop结束,但不包括stop,步长为step(默认为1), clock.tick()#计算帧率,单位Hz,越大越连贯 m.add_frame(sensor.snapshot())#向m中添加图片 #mjpeg.add_frame(image, quality=50),向mjpeg视频中中添加图片, #quality为视频压缩质量。 print(clock.fps())#打印出fps,fps是运算的帧率 m.close(clock.fps())#关闭录像
-
应该不是电脑卡死了吧。是不是ide卡死了?然后等你重新连接摄像头的时候,会发现,原本的录制文件变成0字节。
-
对,是您说的这种情况,请问您有解决的办法吗?谢谢
-
@omhn 这个貌似没办法解决。
我的理解是这样的。mjpeg是压缩文件,文件应该有两部分组成,一部分是文件头,记录文件大小,日期,有多少帧数据,每一帧数据的指针之类的,另一部分就是每一帧的数据,当然这些数据是被压缩过的。
add_frame添加一帧图像进入mjpeg文件,这个操作不仅将图像矩阵中的像素压缩后加入文件的数据部分,还要把文件头一并修改。你在文件头修改完成前(m.close()前)强行终止程序,那么文件头的数据肯定是错误的。所以一直显示零字节。
-
好的,理解了,谢谢您