python - 如何将流图像录制为视频文件?

标签 python stream raspberry-pi video-streaming

我从adaftut复制了一个脚本,它允许在TFT LCD上显示相机流。 但是,使用该流我无法保存相机录制内容。

该脚本打开 io.BytesIO,然后将相机捕获的数据放入该流中,然后在 while 循环中关闭该流。而且我无法将流保存为视频。 这是代码的一部分:

while(True):
    stream = io.BytesIO() # Capture into in-memory stream
    camera.capture(stream, use_video_port=True, format='raw')
    stream.seek(0)
    stream.readinto(yuv)  # stream -> YUV buffer
    stream.close()
    yuv2rgb.convert(yuv, rgb, sizeData[sizeMode][1][0],
      sizeData[sizeMode][1][1])
    img = pygame.image.frombuffer(rgb[...], 'RGB')

您能帮忙将直播保存为录音吗? 我需要保存摄像头录制内容并在 LCD TFT 上预览摄像头数据。

最佳答案

简·海克,

您很可能需要使用一些处理视频文件的库。 例如,您可以使用 OpenCV 将流保存到视频文件中。其示例可以在 answer 中找到。 。对于您的代码,它应该类似于:

import cv2

# Define the codec and create VideoWriter object
#fourcc = cv2.cv.CV_FOURCC(*'DIVX')
#out = cv2.VideoWriter('output.avi',fourcc, 20.0, (640,480))
out = cv2.VideoWriter('output.avi', -1, 20.0, (640,480))

while(True):
    stream = io.BytesIO() # Capture into in-memory stream
    camera.capture(stream, use_video_port=True, format='raw')
    stream.seek(0)
    stream.readinto(yuv)  # stream -> YUV buffer
    stream.close()
    yuv2rgb.convert(yuv, rgb, sizeData[sizeMode][1][0],
      sizeData[sizeMode][1][1])
    img = pygame.image.frombuffer(rgb[...], 'RGB')

    out.write(img)

out.release()

关于python - 如何将流图像录制为视频文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48840605/

相关文章:

c++ - 如何将整个 istream 打印到标准输出和字符串

c# - 在 Web API 中转发和存储请求流

java - Android Things 和 Adafruit Ultimate GPS Breakout v3

go - 为 RPi 构建 CockroachDB 会产生 'segmentation violation error'

python - 如何将 picamera 视频帧转换为 openCV 对象

python pygame.camera.init() 没有视频捕捉

Python 方法调用

python - Flask 模板的 {% block page_content %} - 文档

file-io - 将输出写入文件。语言语言

linux - 高速串行(UART)缓冲区溢出