LINUX.ORG.RU

Бардак с кодировками в id3v1/2 и пути выхода из него


0

0

Вчера вышла статья Михаила Якшина, который в свободное время решил разобраться с бардаком, который возник с id3 тегами в mp3 файлах и что у него из этого получилось. Как и я вчера в треде http://www.linux.org.ru/jump-message.... он пришел к выводу, что нужно либо переходить на Ogg, где все железно просто, либо исправлять и доводить до ума существующие id3tag библиотеки, либо использовать id3v2.4 тэги, где кодировка задается явно http://www.id3.org/id3v2.4.0-structur...:

$00 ISO-8859-1 [ISO-8859-1]. Terminated with $00.
$01 UTF-16 [UTF-16] encoded Unicode [UNICODE] with BOM. All
strings in the same frame SHALL have the same byteorder.
Terminated with $00 00.
$02 UTF-16BE [UTF-16] encoded Unicode [UNICODE] without BOM.
Terminated with $00 00.
$03 UTF-8 [UTF-8] encoded Unicode [UNICODE]. Terminated with $00.

>>> Подробности

★★★★★

Проверено: Shaman007 ()
Ответ на: комментарий от GladAlex

> Во-первых я не врал, а немного добавил от себя ;-)

То, что Вы добавили - ложно. А в таких формулировках у большинства (которые статью наверняка и не будут читать) может сложиться впечатление, что я это говорил.

> 2-е: почему бессмысленных? Я так понимаю до недавнего времени все теги были и v1 и v2 в ISO-8859-1 (но все мы заполняли теги в cp1251) и проблема решается перекодировкой в софте. Зачем спрашивается продолжать усложнять ситуацию и использовать, цитирую: "2.4 в windows-1251, замаскированной под iso8859–1" вместо utf-8, например. Эти русские (то есть мы ;-) с 1991 не могут с кодировками разобраться (читай КАРМУ ОТРАБОТАТЬ ;-), а люди кучу софта должны править? Чего ради?!

В статье есть ответ на этот вопрос. Возможно, статья написана недостаточно прозрачно, впрочем, такая задача и не ставилась. Мне с одной стороны - конечно, лестно, с другой стороны - честно говоря, жаль, что ее вот так вот заслэшдотили на LOR :(

Насчет "люди", которые "должны править" - вы тоже сильно ошибаетесь. Никто ничего "этим русским" править не будет %) Все мы сами...

> Версия v2.4 не поддерживается ни amarok ни easyTag, которыми я пользуюсь ;-)

Это тоже ложное высказывание, подробная информация о том, чем что поддерживается есть в прилагаемом к статье файле.

> Статью я прочитал от и до, но для меня она носит ценность только как подтверждение моих собственных изысканий и мучений с вышеуказанным софтом.

GreyCat ★★
()
Ответ на: комментарий от odip

>Частотным анализом к этому делу можно подойти. Вот только не все однозначно можно определить. Тот же FAR на коротких текстах ошибается.

http://gns-linux.narod.ru/autougadaf-0.2.tar.bz2 - заточено под надежное угадывание на коротких текстах. very hackish, as now ..

netkeeper
()
Ответ на: комментарий от GreyCat

Ну, возможно, ошибочно где-то. Но "ложно"??? Это Вы загнули ;-)

>Мне с одной стороны - конечно, лестно, с другой стороны - честно говоря, жаль, что ее вот так вот заслэшдотили на LOR :(

Не расстраивайтесь, просто эта тема достала уже...

>Насчет "люди", которые "должны править" - вы тоже сильно ошибаетесь. Никто ничего "этим русским" править не будет %) Все мы сами...

Сами, или не сами... А смысл? Перекодировка из cp1251 уже есть, просто использовать правильный v2.4 в будущем и.. все! Зачем городить огород?

>> Версия v2.4 не поддерживается ни amarok ни easyTag, которыми я пользуюсь ;-)

>Это тоже ложное высказывание, подробная информация о том, чем что поддерживается есть в прилагаемом к статье файле.

Мудреный и кривой файлик кстати. Я вчера несколько часов долбался с easyTag 1.99.7 - там только 2.3. amarok возможно и ЧИТАЕТ 2.4, но проверить это (заполнить теги) было нечем, а записывает он только в ISO_8859_1 (ака cp1251), так что кроме него никто эти теги не понимает и толку от него мало.

GladAlex ★★★★★
() автор топика
Ответ на: комментарий от GladAlex

> Мудреный и кривой файлик кстати.

По-моему - там все достаточно прозрачно. Если есть мысли, как сделать прозрачнее - с радостью выслушаю.

> amarok возможно и ЧИТАЕТ 2.4, но проверить это (заполнить теги) было нечем

Да в общем-то я уже проверил %) Test suite для этого и разрабатывался. Читает.

> а записывает он только в ISO_8859_1 (ака cp1251)

Тоже неправда, хотя это зависит от версии и сборки amarok и taglib, здесь спорить смысла нет.

GreyCat ★★
()
Ответ на: комментарий от GreyCat

>По-моему - там все достаточно прозрачно. Если есть мысли, как сделать прозрачнее - с радостью выслушаю.

Табличку ровненькую в HTML :-)

>Тоже неправда, хотя это зависит от версии и сборки amarok и taglib, здесь спорить смысла нет.

Вы меня сегодня целый день лжецом выставляете ;-) Смешно! amarok - 1.2.3, taglib -1.4. Просветите, пожалуйста, как записать в нем v2.4 в utf8 например?

eastTag + id3lib тоже мимо т.к. последняя версия id3lib 3.8.3 поддерживает только 2.3 - это я еще когда ранние амароки (замароки) и musicbrainz-ы раскапывал обнаружил.

GladAlex ★★★★★
() автор топика

Немного рекламы: RusXMMS2, кстати, все правильно отображает... Особенно, если с LibRCC, которая сейчас в CVS...

Kain
()
Ответ на: комментарий от IceD

TO *grob* and *IceD*...

Привет! Ну у вас тут флейм-загляденье:),теперь по теме: Жук понимает 2.4 тэг, и я доволен, Но у меня есть какие.то странные песни, там вроде и 2.4 тэги, а всё равно одни закарючки, и выяснил я что они в 1251-й код-ке, хоть и написано утф8:(

* я явно в этих тэгах не рублю, хоть и весь топик прочёл:-)

Так вопрос(и просьба) тем кто использует eyeD3: тут многие хвалят, прочитал я помощь к проге, попробовал, но не врубился как мне перекодировать эти тэги, там и про 1251-ю кодировку ничего нет, а как я из топика понял-это делается именно этой прогой(мож парюсь?

Kwintruder
()
Ответ на: комментарий от PashaKustov

> SHALL для I или We. Для остального здесь будет WILL.

Для утверждений это так. А если в предложении не просто утверждение, а обещание или угроза, то тогда наоборот: will для I или we, shall для всего остального.

Вот таков он, этот язык Шекспира.

VladimirP ★★★★
()

нашли о чем спорить - решение уже давно есть:
использование универсального контейнера ogm с кодировкой тегов utf-8
утилита коенвертации ogmenc

anonymous
()
Ответ на: комментарий от VladimirP

>А если в предложении не просто утверждение, а обещание или угроза, то тогда наоборот: will для I или we, shall для всего остального.

"We Will Rock You" (C) Queen

anonymous
()
Ответ на: комментарий от anonymous

>нашли о чем спорить - решение уже давно есть:
использование универсального контейнера ogm с кодировкой тегов utf-8
утилита коенвертации ogmenc

Можно немного подробнее про ogmenc (со ссылками и как/чем использовать результат). Спасибо.

anonymous
()
Ответ на: комментарий от anonymous

>>нашли о чем спорить - решение уже давно есть: использование универсального контейнера ogm с кодировкой тегов utf-8 утилита коенвертации ogmenc

Про OGG/OGM контейнер - полностью согласен. А вот про oggenc - не совсем: зачем конвертировать неизбежно теряя качество материала? Лучше сделать

ogmmerge -t "artist=Имя" -t "title=Название" ... -o file.ogg file.mp3

Получаем коллекцию с нормальными тегами в UTF8 (всегда). Xine и MPlayer их отлично играют, если нужны будкт файлы в обычном mp3 (скажем, для "железного" mp3-плейера) - простенький скрипт который выдаст их без оверхеда по времени по сравнению с обычным копированием и с версией тегов и кодировкой, какой ему скажешь (хоть в транслите!)

>Можно немного подробнее про ogmenc (со ссылками и как/чем использовать результат)

Ссылки? Пожалуйста:

# apt-get install vorbis-tools ogm-tools

:)

Led ★★★☆☆
()
Ответ на: комментарий от Led

Спасибо за ответ. Как я понял, полученные "гибридные" ogg файлы врядли будут проигрываться "железным" плеером (хоть и поддерживающим mp3 и ogg) и их придется (хоть и быстро) конвертировать.

>#apt-get install vorbis-tools ogm-tools
>
>:)

Немного смутило, что
$rpm -ql vorbis-tools ogmtools | grep ogmenc
ничего не выдал (как, впрочем, и google)
;)

anonymous
()
Ответ на: комментарий от Kwintruder

>Так вопрос(и просьба) тем кто использует eyeD3: тут многие хвалят, прочитал я помощь к проге, попробовал, но не врубился как мне перекодировать эти тэги, там и про 1251-ю кодировку ничего нет, а как я из топика понял-это делается именно этой прогой(мож парюсь?

я не правлю кодировки. я просто сношу таги и пишу их заново ;] (вся музыка лежит как Artist/NN - Album (YEAR)/NN - Track.mp3) и это почти вся нужная инфа (мой скрипт просит ещё указать стиль).

хотя я не вижу траблы перекодировать:

1. получить например название

2. iconv -f utf-8 -t iso8859-1 | iconv -f cp1251 -t utf-8

3. записать обратно уже правильный уникод

вот такое вот извращение с иконвами помогает бороццо с весёлым утфом который на самом деле не утф ;]

IceD
()
Ответ на: комментарий от anonymous

>полученные "гибридные" ogg файлы

Не гибридные, а в контейнере. OGG-контейнер может содержать в себе различные мультимедийные трэки, намного больше форматов, чем AVI.

>ogg файлы врядли будут проигрываться "железным" плеером (хоть и поддерживающим mp3 и ogg) и их придется (хоть и быстро) конвертировать.

На "железный" плейер из нужно всё равно "заливать", эту процедуру легко совместить с "вытягиванием" их (а не конвертацией в другой формат) из контейнера с проставлением id3-тэгов в правильном для конкретного плейера формате. Разницы вовремени между обычной "заливкой" и такой "продвинутой" не заметите:)

>Немного смутило, что $rpm -ql vorbis-tools ogmtools | grep ogmenc ничего не выдал

И не выдаст.

Не ogmenc, а oggenc - в vorbis-tools, ogmmerge - в ogmtools

Led ★★★☆☆
()
Ответ на: комментарий от pitekantrop

pitekantrop * (*) (08.08.2005 13:00:30)

Млин, ну сколько писем юридических видел - НЕ БЫЛО НИГДЕ Shall.

А какой-то канадский сайт - это не показатель ;) :D

PashaKustov ★★
()
Ответ на: комментарий от VladimirP

>Для утверждений это так. А если в предложении не просто утверждение, а обещание или угроза, то тогда наоборот: will для I или we, shall для всего остального.

Спросил у отчима, отучившегося в public school в Лондоне в своё время.

Если обещание/угроза, то употребляется should (для не I/we) - раз

Will употребляется для всего

Shall может употреблятся для не-I/We, но не в официальном современном языке. То есть - в поэзии, в Библии, в законах/текстах, написанных в древние времена.

PashaKustov ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.