2015-02-09 88 views
3

我试试这个教程流摄像头视频到pygame的什么错误.. https://www.youtube.com/watch?v=H6ijuSmv5N0如何pygame的摄像头保存为视频输出

像这样的脚本..

import pygame, sys 
import pygame.camera 
from pygame.locals import * 

pygame.init() 
pygame.camera.init() 

screen = pygame.display.set_mode((640, 480)) 

cam = pygame.camera.Camera("/dev/video0", (640, 480)) 
cam.start() 

while 1: 
    image = cam.get_image() 
    screen.blit(image, (0,0)) 
    pygame.display.update() 

    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      #save as video output 
      sys.exit() 

但是...在这里我有一个问题,当我想保存该流作为视频输出..就像一个MP4,3GP,AVI和其他。

在此线程上pygame.image.save(img, "image.jpg")将输出保存为图像。 https://stackoverflow.com/a/20502651/3445802

回答

1

Pygame的多媒体输出能力severily限制: 它只能保存未压缩的BMP图像,没有办法可以保存视频格式。

您必须利用另一个库来提供图像帧,渲染视频 - 或逐帧保存在一个文件夹中,按月牙顺序对文件名进行编号,然后使用实用程序将结果转换为视频后来。

该项目作用似乎为特色的一类叫libffmpeg编码的视频,逐帧在Python调用传递框架: https://github.com/kanryu/pipeffmpeg - 你只需要一种方法来pygame的曲面对象转换为预期的“frameraw”的属性 ffmpeg。

https://github.com/kanryu/pipeffmpeg/blob/master/pipeffmpeg.py

+0

OK先生,感谢您对本可选... 怎么样'pymedia'先生? – agaust 2015-02-09 16:46:49

-1

我可不是在家里,但现在我workarround是采取pygame的表面并转换为numpy的阵列,并用OpenCV的到MP4电影写。

1

你可以使用pygame来捕捉帧。如果您将这些帧存储到磁盘,则可以使用任何您喜欢的软件将这些帧转换为您喜欢的任何视频格式。

import pygame, sys, os 
import pygame.camera 
from pygame.locals import * 

pygame.init() 
pygame.camera.init() 

# Ensure we have somewhere for the frames 
try: 
    os.makedirs("Snaps") 
except OSError: 
    pass 

screen = pygame.display.set_mode((640, 480)) 

cam = pygame.camera.Camera("/dev/video0", (640, 480)) 
cam.start() 

file_num = 0 
done_capturing = False 

while not done_capturing: 
    file_num = file_num + 1 
    image = cam.get_image() 
    screen.blit(image, (0,0)) 
    pygame.display.update() 

    # Save every frame 
    filename = "Snaps/%04d.png" % file_num 
    pygame.image.save(image, filename) 

    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      done_capturing = True 

# Combine frames to make video 
os.system("avconv -r 8 -f image2 -i Snaps/%04d.png -y -qscale 0 -s 640x480 -aspect 4:3 result.avi") 

我用它来创建可与侦察/幼崽被用来停止运动软件:

修改你的榜样幅度不大,这可以做如下。代码也是故意简单的,所以这些链接可能有所帮助。

几个环节:

相关问题