ホームページ  >  記事  >  バックエンド開発  >  複数の音楽フォーマットを一括変換するPython実践チュートリアル

複数の音楽フォーマットを一括変換するPython実践チュートリアル

WBOY
WBOY転載
2023-04-12 12:16:141780ブラウズ

複数の音楽フォーマットを一括変換するPython実践チュートリアル

Pydub は、ffmpeg に基づいた Python オーディオ処理モジュールであり、多くの ffmpeg の基礎となるインターフェイスをカプセル化しているため、音楽や歌のファイル形式を変換するために使用すると非常に便利です。

以前の記事を読んだことがある方は、Pydub がいかに強力であるかをご存知でしょう。

今日は、ほぼすべての音楽オーディオ形式をサポートする、非常に優れた音楽ファイル形式変換機能を紹介します。

1. インストール

Pydub をインストールする前に、まず ffmpeg をインストールする必要があります:

(オプション) Mac (ターミナルを開いて自作でインストール):

brew install ffmpeg --with-libvorbis --with-sdl2 --with-theora

(オプション 2 つ) Linux:

apt-get install ffmpeg libavcodec-extra

(オプション 3 つ) Windows:

1. http://ffmpeg.org/download.html#build-windows と入力し、Windows に対応するアイコンをクリックして、ダウンロード インターフェイスに入り、ダウンロード ボタンをクリックします。

2. ダウンロードした zip ファイルを指定したディレクトリに解凍します。

3. 解凍したファイルディレクトリ内の bin ディレクトリ (ffmpeg.exe を含む) を path 環境変数に追加します。

(必須) 上記の ffmpeg インストール手順を正常に実行した後、コマンド プロンプト (cmd) またはターミナル (ターミナル) を開いて、pydub:

pip install pydub

2 をインストールできます。 .mp3 wav または他の形式に変換します

単一の mp3 オーディオ ファイルを wav オーディオ形式に変換します:

from pydub import AudioSegment
def trans_mp3_to_wav(filepath):
 """
 将mp3文件转化为wav格式
 Args:
 filepath (str): 文件路径
 """
 song = AudioSegment.from_mp3(filepath)
 filename = filepath.split(".")[0]
 song.export(f"{filename}.wav", format="wav")

この関数をカプセル化して、単一の mp3 ファイルを任意の形式に変換することができます。その他の音楽オーディオ形式:

from pydub import AudioSegment
def trans_mp3_to_any_audio(filepath, audio_type):
 """
 将mp3文件转化为任意音频文件格式
 Args:
 filepath (str): 文件路径
 audio_type(str): 文件格式
 """
 song = AudioSegment.from_mp3(filepath)
 filename = filepath.split(".")[0]
 song.export(f"{filename}.{audio_type}", format=f"{audio_type}")

ogg 形式など:

trans_mp3_to_any_audio("Alone.mp3", "ogg")

ffmpeg でサポートされている音楽オーディオ形式であれば変換できます。以下にそのいくつかを簡単にリストします:

##oggaiff

## wav

avi

mp4

flv

##flac

ape

mp2

voc

au

3. 更加通用的转换函数

刚刚是mp3转任意音频格式,我希望把它写成任意音频格式转任意音频格式:

from pydub import AudioSegment
def trans_any_audio_types(filepath, input_audio_type, output_audio_type):
 """
 将任意音频文件格式转化为任意音频文件格式
 Args:
 filepath (str): 文件路径
 input_audio_type(str): 输入音频文件格式
 output_audio_type(str): 输出音频文件格式
 """
 song = AudioSegment.from_file(filepath, input_audio_type)
 filename = filepath.split(".")[0]
 song.export(f"{filename}.{output_audio_type}", format=f"{output_audio_type}")

比如将ogg音乐音频格式转化为flv音乐音频格式:

trans_any_audio_types("Alone.ogg", "ogg", "flv")

或者MP4格式,总之,一般你需要的格式它都能满足。

trans_any_audio_types("Alone.ogg", "ogg", "mp4")

4. 批量转化音频格式

现在,尝试将一个文件夹下的所有非mp3音频格式的文件转化为mp3音频格式:

def trans_all_file(files_path, target="mp3"):
 """
 批量转化音频音乐格式
 Args:
 files_path (str): 文件夹路径
 target (str, optional): 目标音乐格式. Defaults to "mp3".
 """
 for filepath in os.listdir(files_path):
 # 路径处理
 modpath = os.path.dirname(os.path.abspath(sys.argv[0]))
 datapath = os.path.join(modpath, files_path + filepath)
 # 分割为文件名字和后缀并载入文件
 input_audio = os.path.splitext(datapath)
 song = AudioSegment.from_file(datapath, input_audio[-1].split(".")[-1])
 # 导出
 song.export(f"{input_audio[0]}.{target}", format=target)

只要输入文件夹名称,即可全部转化该文件夹下的音乐文件格式为mp3格式:

trans_all_file("F:\push\20200607\music\")

看了我们今天的教程,学会这招后,你再也不用担心格式之间的转化问题,通过使用 pydub模块你能轻易地解决这些问题。如果本篇文章对你有帮助,请在文末点个赞在看支持一下哦。

以上が複数の音楽フォーマットを一括変換するPython実践チュートリアルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事は51cto.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。