3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

がちもとさんAdvent Calendar 2023

Day 10

MOVからMP4へ変換すーる(Python)

Posted at

はじめに

がちもとさんアドベントカレンダー10日目の記事です。
今日は、iPhoneの動画がMOVなのでMP4に変換していきます。

縦動画をmoviepyでMP4に変換した際に、横長の動画になってハマりました。。
プロパティでは幅が3840、高さが2160になってしまってます。

image.png

そこで、回転情報を取ってきて幅と高さを入れ替えて変換しました。

開発環境

  • Windows 11 PC
  • Python 3.11

導入

1.ライブラリのインストール
pip install moviepy

2.プログラムを作成

mov2mp4.py
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を設定して、必要に応じて解像度を調整します。

お疲れさまでした。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?