広告 ブログ

moviepyで動画のアスペクト比を保ちながらサイズを変更する

例えば1080×1920の動画を作りたいけど、元の動画が1080×1350だった時は、立幅を+570してやればいい。
つまり上下に285pxずつ余白を入れてやれば解決する。

1080×1350の動画のイメージ
上下に余白を入れて1080×1920にした

とりあえずこんな感じでうまいぐあいに余白が入った。
横長の動画を縦長にするとか、想定外の動画は改修する必要があるのであしからず。

    clip1 = VideoFileClip(mp4_path)
    w = clip1.w
    h = clip1.h
    target_w = 1080
    target_h = 1920

    if w < target_w or h < target_h:
        # 動画が小さい場合はwかhを近い方に合わせる
        if w < target_w and h < target_h:
            w_rate = target_w/w
            h_rate = target_h/h
            rate = min(w_rate, h_rate)

            clip1 = clip1.resize(newsize=(int(clip1.w*rate), int(clip1.h*rate)))
            w = clip1.w
            h = clip1.h

        # 足りないところは黒塗りの余白で埋める
        if w < target_w or h < target_h:
            margin_x = int((target_w-w)/2)
            margin_y = int((target_h-h)/2)

            clip1 = clip1.margin(left=margin_x, right=margin_x, top=margin_y, bottom=margin_y, opacity=0)
            w = clip1.w
            h = clip1.h
  • この記事を書いた人

たろう

海外ノマド5年目🇲🇹→🇹🇭のアフィリエイター
2023年8月~ブログ開始でようやく月5万の壁突破

最新総フォロワー数: 11038
𝕏: 3,029
インスタ: 7,482
TikTok: 527

現在SNSアフィ挑戦中|英語・タイ語ガチ勢|現地民とお酒を飲むために語学勉強

-ブログ