Вопрос
Я ищу среду Python, которая позволит мне воспроизводить видео, а также рисовать на нем (для маркировки).
Я пробовал Pyglet, но, похоже, это работает не очень хорошо - при рисовании на существующем видео возникает мерцание (даже при двойной буферизации и всем подобных вещах), и, похоже, нет способа чтобы получить индекс кадра в видео во время обратного вызова для каждого кадра (только время, прошедшее с момента последнего кадра).
Решение
Попробуйте оболочку Python для OpenCV, например ctypes-opencv.Ссылка на API C: здесь, и оболочка очень близка (любые изменения см. в строках документации).
Я использовал его для рисования на видео без мерцания, так что у вас не должно возникнуть с этим проблем.
Приблизительная схема звонков, которые вам нужны:
- Загрузите видео с помощью cvCreateFileCapture, загрузите шрифт с помощью cvFont.
- Захватите кадр с помощью cvQueryFrame, увеличьте счетчик кадров.
- Нарисуйте фрейм с помощью cvPutText, cvEllipse и т. д. и т. п.
- Отображение пользователю с помощью cvShowImage.
Другие советы
Qt (PyQt) имеет Phonon, который может помочь. PyQt доступен в виде GPL или платного ПО. (У Qt тоже есть LGPL, но у обёрток PyQt нет)
Попробуйте привязки Python для GStreamer .