昨今のスマートフォンの動画機能はすごい。高画質で長時間の動画の撮影が可能だ。そのため、ついつい長時間の動画を撮影してしまう場面も多い。しかし長時間の動画は編集が面倒だ。そこで、動画を短く分割するプログラムをPythonで作ってみよう。

  • ffmpeg-pythonでMP4動画を3秒ずつに分割したところ

    ffmpeg-pythonでMP4動画を3秒ずつに分割したところ

動画処理に大活躍のライブラリ「FFmpeg」

FFmpegはフリーの動画・音声の変換ツールで、動画処理に欠かせない。動画や音声形式を変換したり、動画から音声を取り出したり、画像を組み合わせて動画にしたりと、様々な処理を手軽に行うことができる。しかし、FFmpegはコマンドラインから使う必要がある。加えて、高機能であるため、オプションが多く、どのように使ったら良いのか分かりにくいという欠点がある。

この欠点を補うことができるのが、Pythonのパッケージ「ffmpeg-python」だ。動画のサムネイルを作成したり、動画から音声を取り出したり、動画にカスタムフィルタをかけたりと、様々な処理をシンプルなプログラムで記述できる。

今回はこのパッケージを利用して、長時間の動画を3分ごとに分割するプログラムを作ってみよう。

ffmpeg-pythonのインストール

最初に、ffmpeg-pythonが使えるようにセットアップしよう。実際のところ、ffmpeg-pythonは、コマンドラインのFFmpegをラップしただけのライブラリであり、ffmpeg-pythonを動かすには、FFmpeg本体が必要となる。つまり、セットアップには以下の2つが必要だ。

・(1) FFmpeg本体 - ダウンロードしてインストール
・(2) ffmpeg-python - コマンドラインからインストール

FFmpegをインストールして環境変数PATHにFFmpegのインストールパスを追加するか、実行するプログラムと同じフォルダに、FFmpeg本体一式をコピーすることで動かすことができる。

FFmpeg本体は、こちらのサイトからダウンロードできる。「Get packages & executable files」という部分から各OS向けのパッケージがダウンロード可能だ。

  • FFmpegの本体をダウンロードする

    FFmpegの本体をダウンロードする

なお、macOSならHomebrewなどのパッケージマネージャーを使って、ターミナルで「brew install ffmpeg」とコマンドを実行すれば手軽にインストールできる。Ubuntu/Debian Linuxならば「sudo apt install ffmpeg」でインストールできる。

Windowsの場合は、FFmpegのアーカイブを解凍し、binフォルダにある「ffmpeg.exe」と「ffprobe.exe」をこれから作るプログラムと同じフォルダにコピーするのが簡単だ。

  • プログラムと同じフォルダに実行ファイルを配置しよう

    プログラムと同じフォルダに実行ファイルを配置しよう

そして、Pythonのpipコマンドを使って、ffmpeg-pythonをインストールしよう。ターミナルで以下のコマンドを実行しよう。WindowsならPowerShell、macOSならターミナル.appを開いて以下のコマンドを実行しよう。また、Windowsの場合、「python3」を「python」と読み替えよう。

python3 -m pip install ffmpeg-python

動画の情報を取得するプログラム

それでは、Pythonのプログラムを作ってみよう。最初に動画の情報を取得するプログラムを作ってみよう。

import ffmpeg, pprint

in_file = "test.mp4"
info = ffmpeg.probe(in_file)
pprint.pprint(info)

上記のプログラムを「get_info.py」という名前で保存しよう。そして、適当な動画ファイルを用意して、「test.mp4」という名前で同じフォルダにコピーしよう。そして、ターミナルで以下のコマンドを実行しよう。

python3 get_info.py

すると、以下のように動画に関する情報が表示される。特に注目したい情報が、info["format"]["duration"]で、これは動画の長さを表している。他にも、info["streams"][0]["height"]で動画の高さ、info["streams"][0]["width"]に動画の横幅の情報が得られる。

  • get_info.pyを実行したところ - 動画の情報が一覧で表示される

    get_info.pyを実行したところ - 動画の情報が一覧で表示される

動画を分割するプログラム

この記事は
Members+会員限定記事です。

ログイン/会員登録する