overlay.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #!/usr/bin/env python
  2. import sys
  3. import pygame
  4. from pygame.compat import xrange_
  5. SR= (800,600)
  6. ovl= None
  7. ########################################################################
  8. # Simple video player
  9. def vPlayer( fName ):
  10. global ovl
  11. f= open( fName, 'rb' )
  12. fmt= f.readline().strip()
  13. res= f.readline().strip()
  14. col= f.readline().strip()
  15. if fmt!= "P5":
  16. print ('Unknown format( len %d ). Exiting...' % len( fmt ))
  17. return
  18. w,h= [ int(x) for x in res.split( ' ' ) ]
  19. h= ( h* 2 )/ 3
  20. # Read into strings
  21. y= f.read( w*h )
  22. u= []
  23. v= []
  24. for i in xrange_( 0, h/2 ):
  25. u.append( f.read( w/2 ))
  26. v.append( f.read( w/2 ))
  27. u= ''.join(u)
  28. v= ''.join(v)
  29. # Open overlay with the resolution specified
  30. ovl= pygame.Overlay(pygame.YV12_OVERLAY, (w,h))
  31. ovl.set_location(0, 0, w, h)
  32. ovl.display((y,u,v))
  33. while 1:
  34. pygame.time.wait(10)
  35. for ev in pygame.event.get():
  36. if ev.type in (pygame.KEYDOWN, pygame.QUIT):
  37. return
  38. def main(fname):
  39. """play video file fname"""
  40. pygame.init()
  41. try:
  42. pygame.display.set_mode(SR)
  43. vPlayer(fname)
  44. finally:
  45. pygame.quit()
  46. # Test all modules
  47. if __name__== '__main__':
  48. if len( sys.argv )!= 2:
  49. print ("Usage: play_file <file_pattern>")
  50. else:
  51. main(sys.argv[1])