LoginSignup
1
0
記事投稿キャンペーン 「2024年!初アウトプットをしよう」

pythonでmp3ファイル一括圧縮(ビットレート変更)する方法

Last updated at Posted at 2024-01-23

概要

このPythonスクリプトは、ffmpegを使用して指定されたフォルダ内のすべてのMP3ファイルのビットレートを変更して圧縮するプログラムです。

以下にスクリプトの主な部分を説明します。

  1. TARGET_DIR: MP3ファイルを検索する対象のフォルダを指定します。デフォルトでは./mp3/に設定されています。
  2. OUTPUT_DIR: 出力されるファイルの保存先フォルダを指定します。デフォルトでは./output/に設定されています。
  3. BIT_RATE: 変換後のMP3ファイルのビットレートを指定します。デフォルトでは"96k"に設定されています。
  4. files: TARGET_DIR内のすべての.mp3拡張子を持つファイルのリストを取得します。
  5. forループ: 各MP3ファイルについて以下の処理を行います。
    • ffmpegコマンドを生成します。このコマンドは、入力ファイルとして現在のMP3ファイル、指定されたビットレート、および出力フォルダに保存するファイル名を含みます。
    • 生成されたffmpegコマンドを表示します。
    • subprocess.runを使用してffmpegコマンドを実行します。

このスクリプトを実行すると、指定されたフォルダ内のすべてのMP3ファイルがOUTPUT_DIRで指定されたフォルダに変換され、ビットレートが指定された値になります。

ファイル構成

/自分で決めたフォルダ名/
 L /mp3/*.mp3
 L /outuput/
 L /mp3.py

pythonプログラム

mp3.py
import glob
import os
import subprocess

# 検索フォルダ(と拡張子).
TARGET_DIR = "./mp3/"
# 出力フォルダ.
OUTPUT_DIR = "./output/"
# ビットレート.
BIT_RATE = "96k"

# 指定フォルダのmp3ファイルをリストアップ.
files = glob.glob(os.path.join(TARGET_DIR, '*.mp3'))

for file in files:
    cmd = [
        "ffmpeg",
        "-i",
        file,
        "-b:a",
        BIT_RATE,  # ビットレート.
        os.path.join(OUTPUT_DIR, os.path.basename(file)),  # outputフォルダに出力
    ]
    print(cmd)
    subprocess.run(cmd)

以下のコマンドをターミナルで実行すればOKです。

python3 mp3.py
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0