Pythonで動画から音声へ、mp4ファイルをmp3にする方法をわかりやすく解説

Python

Pythonでmp4をmp3に変換するには?

mp4からmp3に変換して音声だけほしい場合があります。
本記事では、Pythonでmp4からmp3に変換する方法を紹介します。

※実際にはmp4から音声部分のmp3を抜き出す処理となります。

プログラムは苦手だからexeファイルが欲しいという方は本ページの「最後に」を参照ください。

事前準備

サンプルコード実行用にtestmovie.mp4ファイルを以下からダウンロードします。
※zipファイルですので解凍してください。

ダウンロード後は以下の図のようにCドライブにtestfileというフォルダを作成し、その中にファイルをコピーしてください。

mp4をmp3に変換するサンプルコード

次に、mp4をmp3に変換するサンプルコードを紹介します。

import os
# pip install --upgrade moviepy
from moviepy.editor import VideoFileClip


def conv_mp4_to_mp3(file_path):
    """
    指定されたMP4ファイルをMP3に変換する。

    この関数は、指定されたMP4ファイルを読み込み、その音声トラックを抽出してMP3形式で保存します。
    成功、警告、エラーに関するメッセージはコンソールに出力されます。

    Args:
    file_path (str): 変換するMP4ファイルのパス。
    """
    # ファイルパスが指定されているかチェック
    if file_path:
        try:
            # MP4ファイルを読み込む
            video_clip = VideoFileClip(file_path)

            # 音声トラックが存在するか確認
            if video_clip.audio:
                # 出力ファイルのパスを生成(.mp4を.mp3に変更)
                output_path = os.path.splitext(file_path)[0] + ".mp3"

                # 音声をMP3形式で保存
                video_clip.audio.write_audiofile(output_path)

                # 変換完了のメッセージを出力
                print(f"変換が完了しました: {output_path}")
            else:
                # 音声トラックがない場合の警告メッセージ
                print("警告: このファイルには音声トラックが存在しません")

        # 例外処理:何らかのエラーが発生した場合
        except Exception as e:
            # エラーメッセージを出力
            print(f"エラー: 変換中にエラーが発生しました: {e}")

    # ファイルパスが指定されていない場合の警告
    else:
        print("警告: ファイルが選択されていません")


##############################################################
# 関数のテスト
if __name__ == "__main__":

    conv_mp4_to_mp3("C:\\testfile\\testmovie.mp4")


サンプルを実行する前にmoviepyのインストールが必要ですのでインストールしていない場合には対応してください。

pip install --upgrade moviepy

実行結果

MoviePy - Writing audio in C:\testfile\testmovie.mp3
MoviePy - Done.                                                                                                                                                                       
変換が完了しました: C:\testfile\testmovie.mp3

mp3ファイルが作成されます。

GUIで操作するサンプルコード

先ほどの例はコンソールから操作する例でしたが、GUI画面からファイルを選択して変換する例もサンプルも紹介します。

#exe作成
#pyinstaller CONV_MP4_TO_MP3.py --onefile

import tkinter as tk
from tkinter import filedialog, messagebox
import os
# pip install --upgrade moviepy
from moviepy.editor import VideoFileClip


def open_file():
    """ファイル選択ダイアログを表示し、選択されたファイルのパスをラベルに設定する。"""
    file_selected = filedialog.askopenfilename(filetypes=[("MP4 files", "*.mp4")])
    if file_selected:
        label_file_path.config(text=file_selected)

def conv_mp4_to_mp3():
    """選択されたMP4ファイルをMP3に変換する。"""
    file_path = label_file_path.cget("text")
    if file_path:
        try:
            video_clip = VideoFileClip(file_path)
            if video_clip.audio:
                output_path = os.path.splitext(file_path)[0] + ".mp3"
                video_clip.audio.write_audiofile(output_path)
                messagebox.showinfo("変換完了", f"変換が完了しました: {output_path}")
            else:
                messagebox.showwarning("警告", "このファイルには音声トラックが存在しません")
        except Exception as e:
            messagebox.showerror("エラー", f"変換中にエラーが発生しました: {e}")
    else:
        messagebox.showwarning("警告", "ファイルが選択されていません")

def close_app():
    """アプリケーションを終了する。"""
    root.destroy()



##############################################################
# tkinterで画面を作成する。

root = tk.Tk()
root.title("MP4からMP3への変換")

button_width = 10
button_height = 1

top_frame = tk.Frame(root)
top_frame.pack(pady=10)

label_file_path = tk.Label(top_frame, text="", width=50, bg='#ffffe0', anchor='w', justify=tk.LEFT)
label_file_path.pack(side=tk.LEFT)

button_select_file = tk.Button(top_frame, text="ファイル選択", command=open_file, width=button_width, height=button_height)
button_select_file.pack(side=tk.LEFT, padx=10)

bottom_frame = tk.Frame(root)
bottom_frame.pack(side=tk.BOTTOM, anchor='e')

button_exec = tk.Button(bottom_frame, text="実行", command=conv_mp4_to_mp3, width=button_width, height=button_height)
button_exec.pack(side=tk.LEFT, padx=5)

button_close = tk.Button(bottom_frame, text="終了", command=close_app, width=button_width, height=button_height)
button_close.pack(side=tk.LEFT, padx=5)

root.mainloop()

実行するとmp3ファイルが作成されます。

exeファイルとして作成したい場合には、コンソールから以下コマンドでexe化してください。
※筆者はconv_mp4_to_mp3.pyという名前でファイル作成しています。

pyinstaller conv_mp4_to_mp3.py --onefile

最後に

以上がPythonでmp4をmp3に変換する方法です。

mp4からmp3を作成することにより動画講義やプレゼンテーションの音声を抜き出し、復習用のオーディオファイルとして活用したりできますので試してみてはいかがでしょうか。

動作確認してみたい方は活用ください。
※zipファイルで圧縮されています。

実行時に「WindowsによってPCが保護されました」と表示される場合にはこちらを参照ください。

コメント

タイトルとURLをコピーしました