📽️

MoviePyでオリジナルの動画のアス比を保つ方法

2024/08/29に公開

MoviePyを使っているとなぜか全ての動画が1920x1080扱いされる。何か使い方を間違えているのかもしれない、教えて詳しい人。

from moviepy.editor import VideoFileClip

video = VideoFileClip(input_file)

print(f"width: {video.width}")
print(f"height: {video.height}")

# どんな動画でも常に1920x1080になる。
>>> 1920
>>> 1080

resizeで片側だけ指定したらアス比保たれるよ!とは書かれているものの、読み込みの時点でなぜか上記のアス比なので解決に至らず。
https://github.com/Zulko/moviepy/issues/258

OpenCV使ってresizeすると上手くいった。なぜ全部同じサイズに扱われるんだろう...。

import cv2
from moviepy.editor import VideoFileClip

vid = cv2.VideoCapture(input_file)
height = vid.get(cv2.CAP_PROP_FRAME_HEIGHT)
width = vid.get(cv2.CAP_PROP_FRAME_WIDTH)

video = VideoFileClip(input_file)
video_resized = video.resize(newsize=(width, height))

Discussion