「動画から音声を抽出したい」
「mp4をwavに変換したい」
「ffmpegコマンドをコード内に記述するのが嫌だ」
このような場合は、この記事が参考となります。
この記事では、Pythonで動画から音声(mp3・wav)を抽出する方法を解説しています。
本記事の内容
- 動画から音声を抽出する方法
- mp4をwavに変換
- mp4をmp3に変換
- 【おまけ】wavをmp3に変換
それでは、上記に沿って解説していきます。
動画から音声を抽出する方法
動画には、たくさんの動画形式が存在しています。
まずは、その範囲を明確にしておきます。
この記事で言う動画とは、mp4を対象とします。
そして、音声はwavとmp3の二つの形式を扱います。
この場合、動画から音声を抽出するパターンは次の二つとなります。
- mp4からwavを抽出
- mp4からmp3を抽出
上記の表現に違和感を感じませんか?
動画形式をもとに「抽出」という言葉を使うと、すごく違和感を感じます。
ということで、これ以降は次のように表現します。
- mp4をwavに変換
- mp4をmp3に変換
やはり、こっちの方がしっくり来ます。
これらの変換について、解説を行っていきます。
主に、次の二つの技術に依存します。
もちろん、Pythonの利用は大前提です。
- FFmpeg
- ffmpeg-python
FFmpegは、OS毎にインストール方法が異なります。
ffmpeg-pythonは、事前にFFmpegのインストールが必要となります。
このFFmpegとffmpeg-pythonによって、簡単にやりたいことができます。
FFmpegをffmpeg-pythonを経由して、Pythonから操作します。
この操作する云々を知りたい場合は、ffmpeg-pythonの記事をご覧ください。
そのあたりを詳しく説明しています。
以上、動画から音声を抽出(変換)する方法を説明しました。
以降では、実際に動画を音声に変換していきます。
mp4をwavに変換
mp4をwavに変換するコードは、以下。
import ffmpeg # 入力 stream = ffmpeg.input("test.mp4") # 出力 stream = ffmpeg.output(stream, "test.wav") # 実行 ffmpeg.run(stream)
これだけでmp4からwavを作成できます。
非常に簡単です。
ffmpegコマンドを長たらしく記述する必要がありません。
その辺の面倒なことは、ffmpeg-pythonが代理でしてくれます。
mp4をmp3に変換
mp4をmp3に変換するコードは、以下。
import ffmpeg # 入力 stream = ffmpeg.input("test.mp4") # 出力 stream = ffmpeg.output(stream, "test.mp3") # 実行 ffmpeg.run(stream)
mp4からwavに変換する場合とほとんど変わりません。
ファイル名(拡張子)を変更しただけです。
mp4からmp3にダイレクトに変換できるのが、個人的には嬉しいですね。
mp4からwavに変換して、そのwavからmp3に変換という段階を踏む必要がありません。
内部的には、そんなことをしてるのかもしれません。
しかし、それがコードから一切見えないというのが素晴らしいです。
【おまけ】wavをmp3に変換
音声を圧縮したい場合も、同じコードで対応できます。
import ffmpeg # 入力 stream = ffmpeg.input("test.wav") # 出力 stream = ffmpeg.output(stream, "test.mp3") # 実行 ffmpeg.run(stream)
mp3をwavに変換したいなら、上記の逆を設定するだけです。
このコードだけあれば、何でも変換できますね。
もちろん、それは変換エンジンとなるFFmpeg次第となりますけど。
以上、Pythonで動画から音声(mp3・wav)を抽出する方法を説明しました。