Меня тут окончательно затрахали id3-тэги.
Удобнейший EasyTAG не умеет писать id3v2 версии 2.4, которая единственная нормально работает в юникоде.
После долгого задумчивого секса с eyeD3, который умирал, пытаясь прописать пару тэгов в файл "Юлия Савичева - Если в сердце живет любовь.mp3" (да-да, я понимаю - такую попсу править грех), я решил что пора бы применить меру наказания за неисполнение приказа в боевой обстановке...
В общем - R.I.P. eyeD3...
Тем не менее, проблема оставалась нерешённой.
Что ж, если гора не идёт к Мухаммеду, Мухаммед объявляет ей джихад, решил я и начал подготовку к массированному переходу на ogg.
Тут следует сделать небольшое лирическое отступление:
ogg - это не только lossy-формат сжатия звука, но и подобно mp4, контейнер для более других форматов. Так что пережимать из одного lossy-формата (mp3) в другой (ogg), теряя в качестве, я и не собирался. Благо, команда ogmmerge позволяет засунуть mp3 файл в (нет-нет, не туда. Всего лишь в ogm-контейнер). А поскольку создатели ogg держали в уме тот простой факт, что музыку пишут не только в англоязычных странах, то подумали об интернационализации. А интернационализация в наше просвещённое время означает юникод (в этом месте многие российские провайдеры и линуксоиды-ортодоксы плюются и уходят). А юникод - это как раз отсутствие проблем с кодировками.
Конец лирического отступления.
Итак, дамы и господа, представляю вашему вниманию простенький скрипт, который заворачивает mp3 в ogg-контейнер, прописывая при этом потребные тэги. Для корректной работы требуются две программы: id3v2 и ogmmerge. Как их устанавливать? Гугль в помощь...
Итак:
#!/bin/sh
title=""TITLE="`id3v2 -l "$1" | grep TIT2 | cut -c 44-`"
artist=""ARTIST="`id3v2 -l "$1" | grep TPE1 | cut -c 38-`"
album=""ALBUM="`id3v2 -l "$1" | grep TALB | cut -c 32-`"
comment=""COMMENT="`id3v2 -l "$1" | grep COMM | cut -c 18-`"
composer=""COMPOSER="`id3v2 -l "$1" | grep TCOM | cut -c 18-`"
track=""TRACKNUMBER="`id3v2 -l "$1" | grep TRCK | cut -c 38-39`"
file="$1"".ogg"
ogmmerge -c "$title" -c "$artist" -c "$album" -c "$comment" -c "$composer" -c "$track" -o "$file" "$1"
rm "$1"
Здесь следует заметить, что тэги у меня вполне корректно выводились командой id3v2 -l имяфайла.mp3
Если эта команда выводит у Вас всяческие закорючки, попробуйте команду:
id3v2 -l имяфайла.mp3 | iconv -f CP1251
И если это сработало - добавьте в скрипт "iconv -f CP1251". Т.е. скрипт будет выглядеть вот так:
#!/bin/sh
title=""TITLE="`id3v2 -l "$1" | iconv -f CP1251 | grep TIT2 | cut -c 44-`"
artist=""ARTIST="`id3v2 -l "$1" | iconv -f CP1251 | grep TPE1 | cut -c 38-`"
album=""ALBUM="`id3v2 -l "$1" | iconv -f CP1251 | grep TALB | cut -c 32-`"
comment=""COMMENT="`id3v2 -l "$1" | iconv -f CP1251 | grep COMM | cut -c 18-`"
composer=""COMPOSER="`id3v2 -l "$1" | iconv -f CP1251 | grep TCOM | cut -c 18-`"
track=""TRACKNUMBER="`id3v2 -l "$1" | iconv -f CP1251 | grep TRCK | cut -c 38-39`"
file="$1"".ogg"
ogmmerge -c "$title" -c "$artist" -c "$album" -c "$comment" -c "$composer" -c "$track" -o "$file" "$1"
rm "$1"
Если же не сработало - значит тэги у Вас храняться не в windows-кодировке, а значит кто-то (Вы сами?) перегнали их в другую кодировку, из чего следует, что и в данном конкретном случае сами разберётесь что делать... :)
Результат: нормальные файлы, читающиеся нормальными плейерами. Отсутствие бардака с кодировками. Возможность выковырять нетронутые mp3 файлы в любой потребный момент. Удобство и комфорт, короче.
P.S. Кроме того, в данном случае unix-way - рулит... ;)
upd: Тааак. Полученный ogg не понимает половина плейеров, при разворачивании в mp3 теряются тэги, а как выковырять тэги из полученных файлов - ещё не придумал. Самое забавное - xfmedia их вполне себе проигрывает...

6 прокомментировало:
Спасибо, я и не подозревал о такой возможности, безболезненной миграции. Ща попробую.
P.S. Скриптик, только не вписался в столь узкий формат странички.
Скриптик отработал, файлик создался... Но beep-media-player его играть отказывается. плагин для ogg в наличии. В чем проблема?
iTunes'ом конвертнул все тэги в id3v2 2.3 в Unicode. Никаких проблем с русским.
чтото неработает...тоесть файл создается, но не играется ничем... другие .ogg файлы(которые изначально .ogg) были читаются нормально...
Хм, а как же mpeg4ip? :-)
Его нет в Debian'овских репозитариях.
А руками собирать - лень...
Отправить комментарий