Скриншот фильма Pygame

Я пытаюсь сделать скриншот каждого кадра фильма для другой обработки. Однако, когда я запускаю это, все, что я получаю, это распечатывается новая строка. После того, как я убил программу любым способом, я получаю ошибку сегментации (ядро сброшено)

Почему происходит ошибка сегментации? Мой код или пигмент или что-то еще?

Почему я не получаю текст из программы?

Использование Python 2.7, Ubuntu

import sys
import os
if sys.platform == 'win32' and sys.getwindowsversion()[0] >= 5:
    os.environ['SDL_VIDEODRIVER'] = 'windib'
import pygame

pygame.init()
pygame.mixer.quit()
movie = pygame.movie.Movie(sys.argv[1])
screen = pygame.display.set_mode(movie.get_size())
movie.set_display(screen)

movie.play()
while movie.get_busy():
    print pygame.image.tostring(screen, 'RGB', False)
    if pygame.event.peek(pygame.QUIT):
        pygame.quit()
        exit()
    pygame.event.clear()
movie.stop()
pygame.quit()

Это мой первый вопрос, поэтому, пожалуйста, скажите, если я что-то пропустил:)

1 ответ

Я считаю, что, читая документы, это фактически "бросает" фильм на вашу поверхность. Так что в Pygame вы можете сохранять поверхности. Предполагая, что это должно быть возможно использовать pygame.image.save(screen, "screenshot.bmp")

Это потому, что отображение принимает атрибуты поверхности. Таким образом, в документации Pygame под изображением вы можете найти функцию save как я использовал выше. И пока вы сначала приостанавливаете фильм (чтобы получить точное изображение), у вас должен быть скриншот фильма.

Ура!

Другие вопросы по тегам