【Python】ffmpegを使って、動画ファイル(mp4,mov)を音声ファイル(mp3,wav)に変換する

皆さん、こんにちは

今回は、Pythonと、動画変換パッケージであるFFmpegを連携させ、Pythonコードを実行することで、ファイル形式を変換させていきます。

ffmpeg(エフエフエムペグ)とは

「FFmpeg」は、音声・動画ファイルのフォーマットを変換するツールやライブラリから構成されるオープンソースのマルチメディアフレームワークのことです。

私はまだ、変換コードとしてしか使っていませんが、エンコードやトランスコード、トリミングにも使えるとか…。

私の環境では、主に、

動画→音声

の変換需要があるのですが、

動画→動画

のフォーマット変更なども行える非常に便利なソフトです。

動画編集ソフトなどに、いったん読み込んで吐き出すという操作を行えば、出来てしまうことも多いですが、Pythonistaの皆さんとしては、それすらも自動化したいことでしょう。

ということで、最後にPythonと組み合わせて実行するように説明することを最終ゴールとします。

ffmpegのインストール方法

ダウンロード

下記サイトにアクセスします。

https://www.ffmpeg.org/download.html

サイトに入った後は、Windowsのマークにカーソルを当てます。

すると、Windows EXE Files が出てくるので、その下の「Window builds by BtbN」をクリック。

すると、Latest Auto-Build といった感じで、最近のリリースが一覧表示される画面に遷移します。

少し読みにくいですが、「ffmpeg-n○○」がバージョンですので、リリースされている中で一番大きい数字、2022年2月時点では5.0をダウンロードすることにします。

※win64とあるものを選んでください。

ちなみに、5.0は長期サポート版のようで、今後数年間は安心でしょう。

https://forest.watch.impress.co.jp/docs/news/1381214.html

ダウンロードしたファイルを開いて、「bin」の中に入ると、3つのアプリケーションファイル(.exe)があります。

普通のファイルと違い、少々面倒なのですが、ffmpegフォルダごと、「C:\Program Files」などのシステム系のフォルダが入っている場所に保管しておきましょう。フォルダ名を「ffmpg_50」みたいな感じで短くしておくとよいと思います。

環境変数

私と同じ操作をされた場合、ffmpegは「C:\Program Files\ffmpeg_50\bin」のフォルダにあると思いますので、次はこちらに環境変数を通していきます。

Windowsスタートメニューから「環境変数を編集」を開きます。

「Path」を選択して「編集」をクリックします。

「環境変数名の編集」に進んだら、「新規(N)」をクリックします。

そこに、「C:\Program Files\ffmpeg_50\bin」と入力しOKをクリックします。

これで準備完了です!

動作確認

次は、しっかりインストールできているかの動作確認を行います。

Windowsスタートメニューから「コマンドプロンプト」を起動します。

起動したら、「ffmpeg -h」と入力し、Enterキーを押します。

ぐしゃーっと色々出力されたら、ひとまずOKです。

Pythonと連携

これで、ffmepgを使う準備が整いましたので、次はPythonでffmpegを呼び出してみましょう。

今回使う「subprocess」は、PythonでWindowsコマンドプロンプトを実行するみたいなイメージです。

subprocess.call(コマンドプロンプトに打ちこむコマンド)

ffmpeg:ffmpegを呼び出す

“input.mp4″:変換をかける元のファイル名(Pythonコードがあるディレクトリから考えた相対パスでOKです)

“output.mp3″:変換後のファイル名(今回はmp3です。)

import subprocess
subprocess.call('ffmpeg -i "input.mp4" "output.mp3"', shell=True)

素晴らしい!!

無事、mp4の動画ファイルを、mp3に変換することができました。

まとめ

今回は、FFmpegを使って、手元のMP4ファイルをMP3ファイルに変換していきました。

環境変数を触らないといけないのが、少し戸惑いポイントですが、この記事をトレースしていただければ問題なく実行できるはずです。