Mutagen
本家: Overview - mutagen
ソースコード: quodlibet/mutagen: Python module for handling audio metadata
Mutagen は、オーディオメタデータを処理する Python モジュールである。
ASF、FLAC、MP4、Monkey's Audio、MP3、Musepack、Ogg Opus、Ogg FLAC、Ogg Speex、Ogg Theora、Ogg Vorbis、True Audio、WavPack、OptimFROG、および AIFF オーディオファイルをサポートしている。
ID3v2 のすべてのバージョンがサポートされており、すべての標準 ID3v2.4 フレームが解析される。
Xing ヘッダーを読み取って、MP3 のビットレートと長さを正確に計算できる。
ID3 および APEv2 タグは、オーディオ形式に関係なく編集できる。
また、個々のパケット/ページレベルで Ogg ストリームを操作できる。
Mutagen は、Linux、Windows、および macOS 上の Python 2.7、3.5+ (CPython および PyPy) で動作し、Python 標準ライブラリ以外の依存関係は無い。Mutagen は GPL バージョン 2 以降でライセンスされている。
Overview — mutagen より
Mutagen を利用したアプリ
インストール
$ pip install mutagen
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple Collecting mutagen Downloading https://files.pythonhosted.org/packages/16/b3/f7aa8edf2ff4495116f95fd442b2a346aa55d1d46313143c8814886dbcdb/mutagen-1.45.1-py3-none-any.whl (218kB) 100% |████████████████████████████████| 225kB 226kB/s Installing collected packages: mutagen Successfully installed mutagen-1.45.1
基礎知識
ID3 Tag のネット情報源
音楽ファイルフォーマット
.mp3 (MPEG-1 Audio Layer-3)
MP3 (エムピースリー、英: MPEG-1 Audio Layer-3) は、音響データを圧縮する技術の1つであり、それから作られる音声ファイルフォーマットでもある。ファイルの拡張子は「.mp3」である。
MP3 - Wikipedia より
PS > py Python 3.8.1 (tags/v3.8.1:1b293b6, Dec 18 2019, 23:11:46) [MSC v.1916 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import mutagen >>> ft = mutagen.File(r"B'z\048.15.2006.MONSTER\01 - ALL-OUT ATTACK.mp3") >>> ft.info.pprint() 'MPEG 1 layer 3, 192000 bps (CBR?), 44100 Hz, 2 chn, 251.37 seconds' >>>
.m4a (MPEG-4 audio ALAC/AAC-LC)
.m4a、.m4b、.m4v、.m4p、.m4r は Apple 社が決めた拡張子である。
ALAC (Apple Lossless Audio Codec)
※iTunes で Apple Lossless エンコーダ を選択して .m4a を生成するとこのコーデックが使用される。
AAC (Advanced Audio Coding)
AAC-LC (AAC Low Complexity)
※iTunes で AAC エンコーダ を選択して .m4a を生成するとこのコーデックが使用される。
AAC - Wikipedia より
MP4 - Wikipedia より
PS > py Python 3.8.1 (tags/v3.8.1:1b293b6, Dec 18 2019, 23:11:46) [MSC v.1916 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import os >>> import mutagen >>> import wave >>> wf = wave.open(r"B'z\DINOSAUR\01 Dinosaur.wav", 'r') >>> wf.getparams() _wave_params(nchannels=2, sampwidth=2, framerate=48000, nframes=14940800, comptype='NONE', compname='not compressed') >>> '{:,}'.format(os.path.getsize(r"B'z\DINOSAUR\01 Dinosaur.wav")) '59,763,244' >>> ft = mutagen.File(r"B'z\DINOSAUR\01 Dinosaur.m4a") >>> ft.info.pprint() 'MPEG-4 audio (ALAC), 311.27 seconds, 972145 bps' >>> '{:,}'.format(os.path.getsize(r"B'z\DINOSAUR\01 Dinosaur.m4a")) '37,853,103' >>> ft = mutagen.File(r"B'z\054.20.2017.DINOSAUR\01 Dinosaur.m4a") >>> ft.info.pprint() 'MPEG-4 audio (AAC LC), 311.33 seconds, 320000 bps' >>> '{:,}'.format(os.path.getsize(r"B'z\054.20.2017.DINOSAUR\01 Dinosaur.m4a")) '13,562,702' >>>
.wav | .m4a(ALAC) | .m4a(AAC-LC) | |
---|---|---|---|
ビットレート | 1,536.0 kbps | 972.145 kbps | 320.0 kbps |
サイズ(byte) | 59,763,244 (100%) | 37,853,103 (63%) | 13,562,702 (22%) |
※ビットレート
44100Hz × 16bit × 2ch(ステレオ) = 1,411.2kbps
48000Hz x 16bit × 2ch(ステレオ) = 1,536.0kbps
参考文献
AAC、M4A、M4B、M4PとM4Rとは?iTunes音声形式の説明 - TuneMobie
デジタルオーディオの仕組み - 音声圧縮の原理 MP3, AAC, ATRAC, etc. - White croQuis
サンプリング周波数とビットレート - Smile Engineering blog ( スマイルエンジニアリング・ブログ )
python - Is it possible to add ID3 tags to m4a files using mutagen? - Stack Overflow
python-discid 1.1 — python-discid 1.1 documentation
[日記] CDの曲情報ってどうやって取得しているの? CDDB / TOC « きんくまデザイン
ID3タグ
ID3タグ - Wikipedia
MP3 ファイルのタグについての解説 (id3v1, id3v2, MPEG フレームヘッダ, XING ヘッダ) - Y-Lab. Electronics
ID3 マッピングテーブル
Tag Mapping - Hydrogenaudio Knowledgebase