夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

Pythonを使用してMp4の動画からMp3の音源のみをエクスポートする

本日はPython枠です。

動画を撮影して音声のみをエクスポートしたかったのですが、Blenderやフォトアプリなど様々な編集アプリを見てみたのですが意外と無料で、ローカルで動画からmp3をエクスポートする機能が提供されていないことに気が付いて今回は勉強がてらMp4の動画からMp3の音声のみに変換していきます。

〇環境

Windows 11PC

VSCode

・Python3.10

・pydub

FFmpeg

ffmpegはビデオフォーマットを扱うためのソフトウェアで以下で入手することができます。

www.gyan.dev

今回はffmpeg-6.0-essentials_buildを使用します。

Zip解凍後筆者の場合Cドライブ直下に配置し、PCのシステム環境変数にパスを通しました。

またpydubはPythonのモジュールで、音声解析のライブラリです。

これによってPython内でより音声ファイルを扱いやすくしています。

Pydubを導入するためには該当ディレクトリでコンソールを開き次のコードを実行します。

前提としてpipコマンドを使用するためPython環境が導入されていることが必須となります。

pip install pydub

〇コード

近亜紀はpythonとどう階層にinputフォルダとoutputフォルダを作成し、inputフォルダ内に配置したinput.mp4をoutputフォルダ内にエクスポートするコードを書きました。

//pydubをインポート
from pydub import AudioSegment
import os
import glob

# ファイルのパスを取得(任意のパスに変えてください。)
input_file = glob.glob('./input/input.MP4')[0]

# FFmpegのパスを指定(任意のパスに変えてください。)
ffmpeg_path = r'C:/ffmpeg-6.0-essentials_build/ffmpeg-6.0-essentials_build/bin/ffmpeg.exe' 
AudioSegment.converter = ffmpeg_path

# input.mp4を読み込めたらコンソールにログを出力
if os.path.exists(input_file):
    print('input.mp4: Found')
else:
    print('input.mp4: Not Found')

# エクスポートするパス(本スクリプトと同じ階層のoutputフォルダ)
output_path = './output/'

# 読み込んだinput.mp4をmp3に変換
def mp4_to_mp3(input_file, output_path):
    # inputfileをパス=という形でログに出す
    print('input_file: ' + input_file)

    # input.mp4を読み込み
    sound = AudioSegment.from_file(input_file)
    # input.mp4のファイル名を取得
    file_name, ext = os.path.splitext(os.path.basename(input_file))
    # 拡張子を小文字に変換
    ext = ext.lower()
    # input.mp4をmp3に変換
    sound.export(output_path + file_name + ext + '.mp3', format='mp3')
    print('mp4_to_mp3: Done')

# mp4_to_mp3関数を実行
mp4_to_mp3(input_file, output_path)

これを実行するとoutputフォルダ内にmp3形式で動画から音声のみが出力されます。

環境を構築するという手間はあるものの無料かつローカルである程度サイズを考えずに変換が行えるのは強力です。