Pygame / MoviePy - видео отображается с ужасной частотой кадров, а размер окна больше моего экрана - PullRequest
6 голосов
/ 07 мая 2019

Я долго искал, пытаясь найти способ показа видео в Pygame из-за нового сюжетного проекта видеоигры.Я наконец наткнулся на Moviepy, который работает нормально ... за исключением того, что видео показывает только один из 24 кадров в секунду, и окно, в котором оно отображается, больше, чем на экране.(на ноутбуке с Windows 10 с 11-дюймовым (я думаю) экраном)

Звук в порядке, но видео также идет слишком быстро, поэтому он не синхронизирован.

Я попытался изменить размерФункция, как сказано в документации, но это не дает никакого эффекта.

И я не могу найти ничего общего с частотой кадров.

Так что мне нужен способ уменьшить окно и исправитьчастота кадров.

Это код, который я использовал:

from moviepy.editor import VideoFileClip
from moviepy.video.fx.resize import resize
import pygame

pygame.display.set_caption('My video!')

clip = VideoFileClip('Eleeza Crafter And The Cloud Colours Trailer.mp4')
clip.fx(resize, width=240)
clip.preview(fps=24)
pygame.quit()

Любая помощь будет оценена.Спасибо:)

РЕДАКТИРОВАТЬ: я тестировал другое видео на той же частоте кадров, и он работает отлично?С другой стороны, это была простая линия, летевшая вокруг экрана.

Ответы [ 2 ]

0 голосов
/ 12 мая 2019

Я не знаю, в этом ли проблема, но для размера экрана вы должны использовать pygame.display.set_mode((WIDTH, HEIGHT)) (измените значение WIDTH на желаемую ширину, а значение HEIGHT на желаемую высоту.Я заметил, что с Pygame большие окна имеют большую задержку, поэтому, возможно, будет рекомендован меньший размер окна. Я считаю, что 500x500 - это максимальный размер без задержки (по крайней мере, на моем ноутбуке)

0 голосов
/ 10 мая 2019

2 секунды гугл дал мне эту ссылку .

В нем говорится:

Клип можно предварительно просмотреть следующим образом

my_clip.preview() # preview with default fps=15
my_clip.preview(fps=25)
my_clip.preview(fps=15, audio=False) # don't generate/play the audio.
my_audio_clip.preview(fps=22000)

Также (в зависимости от вашего метода импорта:

Таким образом, вы можете использовать clip.resize(width=240) вместо более длинного clip.fx( resize, width=240).

Кадр из документации:

Для расширенной обработки изображений вам понадобится один или несколько из этих пакетов. Например, использование метода clip.resize требует, чтобы был установлен хотя бы один из Scipy , PIL , Pillow или OpenCV .

...