walkman対応のmp3タグを書き込む【eyeD3】

最近、Raspberry Piで超A&Gを録音(AAC-LC)→ffmpegでmp3に変換→dropboxにアップロードしています。非常に便利なのですが、ffmpegでid3タグをつけるとwalkmanで認識されません。
(ちなみにA&Gで録ったAAC-LCはwalkmanでは再生すらできない…)

radikoのflvから取り出したAACはなぜiTunesで読めないのか? – ザリガニが見ていた…。

walkmanで使えるmp3タグ

設定メモ: walkmanのid3tag

結論から言うとid3v2.3、utf16しか使えません。さすがソニー、守備範囲狭すぎですね。

eyeD3で書き込む

  • cliで使える
  • id3のバージョンを指定できる
  • 簡単そう(apt−getで入る)

で探したらeyeD3がありました。
pythonで動いてるらしいですがよく知りません(適当)。

eyeD3でID3タグを編集する – ろくなもの入れ

とりあえず使ってみます。

$ 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
walkman対応のmp3タグを書き込む【eyeD3】

コメントを残す

メールアドレスが公開されることはありません。