Я пытаюсь повернуть цветной видеоклип без анимации, чтобы он вращался в начале и оставался повернутым до конца видео.
Я попробовал код, надеясь, что он будет поверните неподвижное изображение в MoviePy, не анимируя его. Так что он поворачивается на угол ввода для всей продолжительности изображения, ColorClip или Video.
import moviepy.editor as mped
image = mped.ImageClip("image.jpg", duration=3)
image.rotate(20)
image.write_videofile('image_without_rotation.mp4', fps=5)
Однако это не поворачивает неподвижное изображение, потому что ImageClip не имеет поворота функция.
Этот код ниже вращается до 3 секунд. и может быть адаптирован для фиксированного вращения / без анимации путем изменения 20 * t на постоянную, например 20.
clip = mped.ImageClip('image.jpg')
rotated_clip = (clip.add_mask().fx(mped.vfx.rotate, lambda t: 20*t, expand=False).set_duration(3))
centered_rotated_clip = mped.CompositeVideoClip([rotated_clip.set_pos("center")])
centered_rotated_clip.write_videofile('rotated_image.mp4'), fps=10)
Однако этот код не будет работать для мувиклипа ColorClip.
color_clip = mped.ColorClip(size=[300, 300], color=[1 ,1, 1])
rotated_color_clip = (color_clip.fx(mped.vfx.rotate, lambda t: 20, expand=False).set_duration(3))
composited_clip = mped.CompositeVideoClip([rotated_Color_ clip.set_pos("center")])
composited_clip.write_videofile('rotated_clip.mp4', fps=10)
Вместо этого он выдаст следующую ошибку
raise TypeError("Cannot handle this data type: %s, %s" % typekey)
TypeError: Cannot handle this data type: (1, 1, 3), <i8
, поскольку он достигает этой строки
return np.array( Image.fromarray(pic).rotate(angle, expand=expand),
внутри pil_rotater.
Как можно повернуть мувикрипт ColorClip на 20 градусов?