text: #!/usr/bin/env python
  
  # 1. Basic image capturing and displaying using the camera module
  
  import pygame
  import pygame.camera
  from pygame.locals import *
  
  
  class VideoCapturePlayer(object):
  
      size = (640, 480)
  
      def __init__(self, **argd):
          self.__dict__.update(**argd)
          super(VideoCapturePlayer, self).__init__(**argd)
  
          # create a display surface. standard pygame stuff
          self.display = pygame.display.set_mode(self.size, 0)
          self.init_cams(0)
  
      def init_cams(self, which_cam_idx):
  
          # gets a list of available cameras.
          self.clist = pygame.camera.list_cameras()
          print(self.clist)
  
          if not self.clist:
              raise ValueError("Sorry, no cameras detected.")
  
          try:
              cam_id = self.clist[which_cam_idx]
          except IndexError:
              cam_id = self.clist[0]
  
          # creates the camera of the specified size and in RGB colorspace
          self.camera = pygame.camera.Camera(cam_id, self.size, "RGB")
  
          # starts the camera
          self.camera.start()
  
          self.clock = pygame.time.Clock()
  
          # create a surface to capture to.  for performance purposes, you want the
          # bit depth to be the same as that of the display surface.
          self.snapshot = pygame.surface.Surface(self.size, 0, self.display)
  
      def get_and_flip(self):
          # if you don't want to tie the framerate to the camera, you can check and
          # see if the camera has an image ready.  note that while this works
          # on most cameras, some will never return true.
          if 0 and self.camera.query_image():
              # capture an image
  
              self.snapshot = self.camera.get_image(self.snapshot)
  
          if 0:
              self.snapshot = self.camera.get_image(self.snapshot)
              # self.snapshot = self.camera.get_image()
  
              # blit it to the display surface.  simple!
              self.display.blit(self.snapshot, (0, 0))
          else:
              self.snapshot = self.camera.get_image(self.display)
              # self.display.blit(self.snapshot, (0,0))
  
          pygame.display.flip()
  
      def main(self):
          going = True
          while going:
              events = pygame.event.get()
              for e in events:
                  if e.type == QUIT or (e.type == KEYDOWN and e.key == K_ESCAPE):
                      going = False
                  if e.type == KEYDOWN:
                      if e.key in range(K_0, K_0 + 10):
                          self.init_cams(e.key - K_0)
  
              self.get_and_flip()
              self.clock.tick()
              print(self.clock.get_fps())
  
  
  def main():
      pygame.init()
      pygame.camera.init()
      VideoCapturePlayer().main()
      pygame.quit()
  
  
  if __name__ == "__main__":
      main()
  