はじめに
がちもとさんアドベントカレンダー10日目の記事です。
今日は、iPhoneの動画がMOVなのでMP4に変換していきます。
縦動画をmoviepyでMP4に変換した際に、横長の動画になってハマりました。。
プロパティでは幅が3840、高さが2160になってしまってます。
そこで、回転情報を取ってきて幅と高さを入れ替えて変換しました。
開発環境
- Windows 11 PC
- Python 3.11
導入
1.ライブラリのインストール
pip install moviepy
2.プログラムを作成
from moviepy.editor import VideoFileClip
# 入力ファイルと出力ファイルを指定
input_file = 'IMG_3657.mov'
output_file = 'IMG_3657.mp4'
# 動画情報を取得
video_clip = VideoFileClip(input_file)
# 解像度を取得
width = video_clip.size[0]
height = video_clip.size[1]
rotation = video_clip.rotation
fps = video_clip.fps
duration = video_clip.duration
print("video_clip.size:", width, height, rotation, fps, duration)
# MOV動画をMP4に変換して保存
if rotation == 90:
video_clip.write_videofile(output_file, codec='libx264', ffmpeg_params=["-vf", f"scale={height}:{width}"])
else:
video_clip.write_videofile(output_file, codec='libx264', ffmpeg_params=["-vf", f"scale={width}:{height}"])
コード解説
1.VideoFileClipを使用して、入力動画ファイル('IMG_3657.mov')を読み込みます。
2.動画情報を取得します。これには、動画の解像度(幅と高さ)、回転角度、フレームレート(fps)、および動画の長さ(秒単位でのduration)が含まれます。
3.動画の回転角度(rotation)を確認し、回転が90度の場合は、幅と高さを入れ替えて正しい解像度にする必要があります。
4.write_videofileメソッドを使用して、指定された出力ファイル名('IMG_3657.mp4')で動画をMP4形式で保存します。この際、コーデックとしてlibx264を使用し、ffmpeg_paramsを設定して、必要に応じて解像度を調整します。
お疲れさまでした。