最近、Raspberry Piで超A&Gを録音(AAC-LC)→ffmpegでmp3に変換→dropboxにアップロードしています。非常に便利なのですが、ffmpegでid3タグをつけるとwalkmanで認識されません。
(ちなみにA&Gで録ったAAC-LCはwalkmanでは再生すらできない…)
eyeD3で書き込む
- cliで使える
- id3のバージョンを指定できる
- 簡単そう(apt−getで入る)
で探したらeyeD3がありました。
pythonで動いてるらしいですがよく知りません(適当)。
とりあえず使ってみます。
$ sudo apt-get install eyeD3 $ eyeD3 -a [artist] -A [album] -t [title] example.mp3
上のような引数で使えます。
が、普通に使うとid3v2.4、Latin-1で書き込もうとするので日本語だとエラーになります。
$ eyeD3 -a 今井麻美 example.mp3 example.mp3 [ 12.02 MB ] ------------------------------------------------------------------------------- Time: 30:00 MPEG2, Layer III [ 56 kb/s @ 24000 Hz - Joint stereo ] ------------------------------------------------------------------------------- No ID3 v1.x/v2.x tag found! Setting artist: 今井麻美 Writing tag... Uncaught exception: 'latin-1' codec can't encode characters in position 0-3: ordinal not in range(256) Traceback (most recent call last): File "/usr/bin/eyeD3", line 1265, in <module> retval = main(); File "/usr/bin/eyeD3", line 1242, in main retval = app.handleFile(f); File "/usr/bin/eyeD3", line 559, in handleFile if not self.tag.update(): File "/usr/lib/python2.7/dist-packages/eyeD3/tag.py", line 526, in update self.__saveV2Tag(version); File "/usr/lib/python2.7/dist-packages/eyeD3/tag.py", line 1251, in __saveV2Tag raw_frame = f.render(); File "/usr/lib/python2.7/dist-packages/eyeD3/frames.py", line 756, in render self.text.encode(id3EncodingToString(self.encoding)); UnicodeEncodeError: 'latin-1' codec can't encode characters in position 0-3: ordinal not in range(256)
id3v2.3とutf16を指定します。
$ eyeD3 --to-v2.3 --set-encoding=utf16-BE -a 今井麻美 example.mp3 example.mp3 [ 12.02 MB ] ------------------------------------------------------------------------------- Time: 30:00 MPEG2, Layer III [ 56 kb/s @ 24000 Hz - Joint stereo ] ------------------------------------------------------------------------------- No ID3 v1.x/v2.x tag found! Converting tag to ID3 v2.3 Setting artist: 今井麻美 Writing tag... ID3 v2.3: title: artist: 今井麻美 album: year: None track: UserTextFrame: [Description: Tagging time] 2015-04-25T13:01:01
ちなみにffmpegでm4a(AAC-LC)をmp3に変換すると空のid3v2.4がくっついてくるので消しています。ffmpegで消せるのだろうけどわからないのです。
$ eyeD3 --remove-all example.mp3 example.mp3 [ 12.02 MB ] ------------------------------------------------------------------------------- Time: 30:00 MPEG2, Layer III [ 56 kb/s @ 24000 Hz - Joint stereo ] ------------------------------------------------------------------------------- Removing ID3 v1.x and/or v2.x tag: SUCCESS
参考
他にも色々できます。アルバムアートが入れられるのは便利かも。
$ eyeD3 --h Usage eyeD3 [OPTS] file [file...] Options ======= --version show program's version number and exit -h, --help show this help message and exit Tag Versions ------------ -1, --v1 Only read/write ID3 v1.x tags. By default, v1.x tags are only read if there is not a v2.x tag. -2, --v2 Only read/write ID3 v2.x tags. --to-v1.1 Convert the file's tag to ID3 v1.1. (Or 1.0 if there is no track number.) --to-v2.3 Convert the file's tag to ID3 v2.3 --to-v2.4 Convert the file's tag to ID3 v2.4 Tag Data