h31 04.05.2011 18:31
Tips & tricks — Модифицируем ID3-теги в MP3 для максимальной совместимости.
Про кодировку тегов в MP3 было сказано действительно очень много, ведь почти каждый линуксоид знаком с проблемой "кракозябр". Казалось бы, что ещё можно сказать? Сегодня я расскажу, как сделать теги читаемыми сразу и в Windows, и в Linux. Это будет весьма полезно для тех. кто любит обмениваться музыкой с друзьями или распространяет её в файлообменных сетях.Немного теории
Существует две основных версии ID3-тегов - первая и вторая. Основным различием между ними является то, что ID3v1 располагается в конце файла, а ID3v2 - в начале. Кроме этого, в ID3v1 есть ограничение на длину тега, что временами вызывает проблемы.
В спецификации ID3v1 сказано, что должна использоваться только кодировка ISO 8859-1 (она же Latin-1), однако на практике это редко когда соблюдается. Лучший и самый популярный кодировщик Lame не сильно мудрствует и просто пишет всё в кодировке локали, поэтому и возникает столько проблем с "кракозябрами".
В ID3v2 тег может быть помечен как использующий Latin-1, UTF-16 (LE и BE) или UTF-8. К сожалению, UTF-8 поддерживается только начиная с относительно новой версии ID3v2.4, поэтому не все программы могут его прочитать. В число таких проблемных программ входит Explorer, Windows Media Player и старые версии остальных проигрывателей. В списках изменений новых версий Lame что-то сказано про юникод, но на практике всё без разбору помечается как Latin-1, а man-страница по этому поводу молчит.
Почти все программы, которые исправляют теги для нормального отображения под Linux, используют ID3v2.4 + UTF-8. По этой причине мы либо теряем совместимость с устаревшими проигрывателями, либо теряем совместимость с Linux. Но есть и консенсус - использование предыдущей версии ID3v2.3, которая поддерживается гораздо шире, совместно с кодировкой UTF-16 LE.
Шаг первый - из локальной кодировки в UTF-8
О подобном преобразовании пишут довольно часто. Существует несколько методов для этого, расскажу о команде, которая у меня работает всегда:
1 |
|
Для работы необходим пакет Mutagen (python-mutagen). Если файлы были закодированы в Linux, то вместо CP1251 пишем UTF-8 (а если дело бы очень давно, то KOI8-R). Можно добавить ключ -d к mid3iconv, тогда на экран будут выводиться сами теги и вы сможете проконтролировать, всё ли правильно сделано.
Шаг второй - из UTF-8 в UTF-16
И Mutagen, и TagLib используют только ID3v2.4 для записи тегов, поэтому на этот раз нам понадобится eyeD3 (в Ubuntu это пакет eyed3, в ArchLinux - python-eyed3). Выполняем следующую команду:
1 |
find . -iname "*.mp3" -type f -exec eyeD3 --force-update --to-v2.3 --set-encoding=utf16-LE --no-tagging-time-frame '{}' \;
|
Ключ --force-update включает принудительную перезапись тегов, а --no-tagging-time-frame запрещает записывать в файл информацию о дате изменения тегов (зачем она нужна?).
EasyTag
Многим больше нравится EasyTag. Лично у меня он никогда не хотел правильно работать, в отличие от консольных утилит. Тем не менее. если уж так вы его любите, то его настройки должны выглядеть примерно так:
P.S. В комментариях речь зашла об обложках, тут тоже всё просто:
1 |
|
derfenix 08.05.2011 21:43 #
+ 3 -
фтопку mp3, ogg - и никаких проблем с кодировкой.
Согласен, даже на том же Jamendo ogg только через торент, а что если он в общаге запрещён.
"Чуть постарше" это Siemens'ы, да?
В любое устройство с Symbian 9+ можно загрузить кучу сторонних плееров, которые с лёгкостью справляются с ogg.
А проблемы есть всегда.
В любое устройство с Symbian 9+ можно загрузить кучу сторонних плееров, которые с лёгкостью справляются с ogg.
А проблемы есть всегда.
У меня на плеере (iRiver e200) OGG читается, правда почему-то без тегов, может из-за ID3v2.4. Хотя на предыдущей модели (e150) все было хорошо. FLAC, конечно, тоже читается, но весит он слишком дофига. В итоге коллекция лежит в OGG и рассована по папкам - вполне устраивает.
Для коротких строк, состоящих только из латиницы, он более чем подходит.
Вот именно. Он подходит под сшишком узкий круг задач. Пока программы будут поддерживать запись в ID3v1, будут находиться такие идиоты, которые будут записывать туда и кириллицу, и всё остальное. Да, ID3v2 занимает внутри файла больше места, чем первый, но по сравнению с размером всего mp3 файла это незначительно.
На линуксе всего 2 месяца, про эту проблему слышал, но не сталкивался. Пользовался Deadbeed, Amarok и Clementine. Они научились распознавать виндвовую кодировку, точнее амарок и апельсинка который, Deadbeef умеет, я знаю?
Deadbeef должен уметь. Максимум, что может от него требоваться - указать кодировку CP1251 в настройках.
Насчёт Amarok и Clementine не могу ничего сказать - не экспериментировал.
Насчёт Amarok и Clementine не могу ничего сказать - не экспериментировал.
Только что проверил. Взял консольный mp3blaster и дал папку с ддт - кракозябры. Проверил Amarok, Clementine и Audacious. Они всё отлично показывали. Они научились или сравнение с плеером из терминала не корректно?
Скорее это косяк mp3blaster'а. Судя по зависимостям, он не использует внешние библиотеки, так что внутри там свой велосипед, вполне вероятно, что кривой и неполный. Попробуй "mid3v2 --list music.mp3" (из пакета mutagen) - если он показывает всё верно, то значит это MP3-файлы "правильные", если нет, то таки научились распознавать.
EasyTag вроде бы сносно все переконвертирует,
полезным дополнением мне в нем кажется, то что можно задавать обложку альбома, на выделенных файлах , справа там уведите (Тег: Картинки) и выбирайте картинку, возможно еще понадобится выбрать в свойствах "обложка спереди" и в плеере музычка будет играть и еще обложка к ней будет показана.
За команды в статье спасибо, теперь точно, если что знаю куда заглянуть в начале)
полезным дополнением мне в нем кажется, то что можно задавать обложку альбома, на выделенных файлах , справа там уведите (Тег: Картинки) и выбирайте картинку, возможно еще понадобится выбрать в свойствах "обложка спереди" и в плеере музычка будет играть и еще обложка к ней будет показана.
За команды в статье спасибо, теперь точно, если что знаю куда заглянуть в начале)
Изитег у меня всегда отлично работал + легко добавлять cover`ы. Винды у меня нет, использую vorbis на PC и сматрфоне.
на днях писал скрипт чтобы переименовать кучу мп3 с неадекватными именами (вытянул с контакта) по имени исполнителя и песни.
на скорую руку писал, когда срочно нудно было :)
тут много есть таких но типа двойных пайпов и прочей фигни
тут много есть таких но типа двойных пайпов и прочей фигни