Автор Тема: Корректное отображение кириллицы (cp1251) в мультимедиа программах.  (Прочитано 67425 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Пользователь.

  • Местный
  • *****
  • Автор темы
  • Сообщений: 4639
Настройка отображения русских названий в мультимедиа программах.



Введение:
Кодировка - это таблица с изображениями букв, знаков и символов.
На жестком диске текст хранится в закодированном виде, а на экране отображается в виде изображений из этой таблицы. Поверх кодировки еще могут применяться темы оформления текста, то есть шрифты.

Раньше для каждого языка имелась своя кодировка, причем на Unix и на Windows были разные кодировки для русского языка:
MS-DOS - cp866
Windows - сначала cp1251 позже UTF-8
Unix - сначала KOI8-R позже UTF-8
Существовали и другие версии русских кодировок (cp1252, iso8859-5, UTF-16), но их использовали реже.

UTF-8 вмещает в себя все языки, и нет больше необходимости использовать в каждой стране свою кодировку.

Кроме этого еще есть стандарт (правила) записи информации в mp3 файл.
В mp3 файлах раньше текст записывался в формате ID3v1, в этом формате и записывали текст в разных кодировках.
Позже стал использоваться формат ID3v2, в котором уже информация записывалась в UTF-8 (реже в UTF-16).


Сейчас у нас остались старые файлы с текстом в разных кодировках (cp1251, cp866, KOI8-R  и огромное множество кодировок других стран), они не совместимы с UTF-8, поэтому мы видим неразборчивые знаки.

Есть несколько способов борьбы с этой проблемой:
1. Использовать программы с поддержкой старых кодировок (автоматически или с ручной настройкой).
2. Сконвертировать текст в mp3 файлах в UTF-8.
3. Изменить для плеера системную кодировку (но не все плееры обращают внимание на системную кодировку), это крайний метод, использовался раньше, когда в плеерах еще не было выбора кодировок или не были изучены методы выбора кодировки, теперь это в прошлом.


================================================


Deadbeef

поддерживает UTF8, CP1251 (русская), CP936 (китайская)


================================================


Audacious

Параметры → Список воспроизведения
Напротив пункта "Если не удалось определить, использовать кодировку" вставить:  UTF-8,WINDOWS-1251



И в настройках интерфейса плеера убрать галку напротив пункта "Использовать растровые шрифты"
Это отключает использование шрифта из скина для отображения названия трека на панели плеера.
В шрифте из скина нет русских букв, поэтому русские названия не отображаются на панели плеера.


================================================

Qmmp

Настройки Qmmp → Модули → Модуль MPEG → Настройки
Сделать как на скриншоте


В настройках внешнего вида, на вкладке "Разное" убрать галку напротив пункта "Использовать растровые шрифты, если возможно"
Это отключает использование шрифта из скина для отображения названия трека на панели плеера.
В шрифте из скина нет русских букв, поэтому русские названия не отображаются на панели плеера.


================================================



Rhythmbox, Banshee, Totem

1. Закрыть плеер.
2. Активировать в системе кодировку CP1251, для этого выполнить следующие действия:
В файлы /var/lib/locales/supported.d/local и /var/lib/locales/supported.d/ru добавить строчку
ru_RU.CP1251 CP1251Выпонить в терминале:  
sudo locale-gen3. В мультимедийной подсистеме Gstreamer, указать настройку для использования  кодировки CP1251
Открыть текстовый файл ~/.profile, в самом низу добавить строку, в нее вставить текст
export GST_ID3_TAG_ENCODING="windows-1251"Ниже нее добавить строку, и оставить пустой.
4. Удалить фонотеку плеера
Rhythmbox хранит фонотеку в ~/.local/share/rhythmbox
Banshee хранит фонотеку в ~/.config/banshee-1
Totem не имеет фонотеки, для него не надо на этом этапе ничего делать
5. Перезапустить мультимедийную подсистему Gstreamer, для этого нужно на панели рабочего стола нажать кнопку главного меню, выбрать завершение работы и выход, затем снова зайти в систему.
6. Проверить отображение кодировок в плеере.

========================================



Amarok, Clementine, Guayadeque, VLC и другие плееры использующие TagLib от проекта KDE (пакеты libtag1c2a, libtag1-vanilla)

Например Clementine:
1. Закрыть плеер
2. Установить пакет libtag1-rusxmms, он заменит libtag1-vanilla
3. Перейти в ~/.config и удалить папку Clementine  (это мы очищаем библиотеку от уже загруженых туда крякозябр, заодним сбросятся настройки плеера)


В Ubuntu 14.04 нет libtag1-rusxmms.
========================================



Exaile  и другие плееры использующие phyton-mutagen

Цитировать (выделенное)
Exaile написан на Python и использует модуль mutagen для обработки тегов, по-этому мы просто ручками допишем нужную нам кодировку. На самом деле данный способ поможет большинству плееров написанных на Python и использующих данный модуль питон.

Ищем пакет mutagen (у меня он лежит в /usr/lib/python2.7/dist-packages/mutagen/) и открываем в нем файл id3.py.

В классе EncodedTextSpec в список _encodings добавляем кортеж (’cp1251′, ’\x00′), должен получиться следующий вид:
...
class EncodedTextSpec(Spec):
# Okay, seriously. This is private and defined explicitly and
# completely by the ID3 specification. You can't just add
# encodings here however you want.
_encodings = ( ('cp1251', '\x00'), ('latin1', '\x00'), ('utf16', '\x00\x00'),
('utf_16_be', '\x00\x00'), ('utf8', '\x00') )
def read(self, frame, data):
...

Источник: mishamx.ru

Пробовал для Exaile указать несколько кодировок, но он начинает путать кодировки, так что лучше добавлять не больше одной.
latin1 - это ISO-8859-1

===================================================




Конвертирование тегов с помощью EasyTag.

1. Установить настройки как на скриншоте

2. Выделить каталог в котором лежат все подкаталоги с музыкой, подождать пока добавятся в программу.
3. Нажать кнопки "Выделить все" и "Сохранить файлы", через несколько минут все файлы сохранятся.
4. После редактирования тегов нужно в аудио плеерах очистить фонотеку и плейлисты, затем снова заполнить.


Примечание: для id3v1 указана кодировка Windows-1251, на случай если файлы будут использоваться в Windows XP, там файловый менеджер в режиме таблицы показывает исполнителя, при кодировке ISO-8859-1 он кажет знаки вопроса, а при Windows-1251 корректно отображает исполнителя. Другие программы программы давно уже используют id3v2.




« Последнее редактирование: Март 27, 2019, 23:51:07 от Пользователь. »

Оффлайн Пользователь.

  • Местный
  • *****
  • Автор темы
  • Сообщений: 4639
Со временем все меняется, так что надо проверять будут ли работать эти методы в новых версиях систем.

Пользователь решил продолжить мысль: Октябрь 04, 2011, 14:47:31
Radio Tray

 
В файле /usr/share/pyshared/radiotray/StateMediator.py  найти строки
def notifySong(self, data):
newMetadata = str(data)

Вторую строку привести к такому виду
newMetadata = str(data).encode('latin-1').decode('cp1251').encode('utf8')

« Последнее редактирование: Октябрь 04, 2011, 14:47:31 от Пользователь. »

Оффлайн ludoed

  • Местный
  • *****
  • Сообщений: 861
  • ludoed1970@jabber.ru
Полезная тема, это можно бы и в HowTo добавить
а кстати, на vlc такого рецептика нет? Я, собственно, музыку слушаю редко, и спец плеера для нее не держу, а vlc универсален
все юниксы очень дружелюбны.. они просто очень разборчивы в друзьях ;)

Настоящее труЪ: самописное ядро, выращенные на кухне кристаллы и программирование перемычками :)

Оффлайн Пользователь.

  • Местный
  • *****
  • Автор темы
  • Сообщений: 4639
Asunder - программа для извлечения аудио файлов из Audio CD.

Решение:

Перейти на сайт freedb.org
Вверху в поле поиска набрать латинскими буквами исполнителя и нажать Ok
Найти свой диск в найденном
В браузере указать кодировку cp-1251 и кириллица станет правильно отображаться
Копируйте информацию с сайта и вставляйте в Asunder

Оффлайн Пользователь.

  • Местный
  • *****
  • Автор темы
  • Сообщений: 4639
Полезная тема, это можно бы и в HowTo добавить
а кстати, на vlc такого рецептика нет? Я, собственно, музыку слушаю редко, и спец плеера для нее не держу, а vlc универсален

Для VLC и Totem можно настроить как для Rhythmbox   :D
Я не пробовал, но теоретически должно сработать.
« Последнее редактирование: Май 20, 2012, 22:58:47 от Пользователь. »

Оффлайн ludoed

  • Местный
  • *****
  • Сообщений: 861
  • ludoed1970@jabber.ru
Полезная тема, это можно бы и в HowTo добавить
а кстати, на vlc такого рецептика нет? Я, собственно, музыку слушаю редко, и спец плеера для нее не держу, а vlc универсален

Для VLC и Totem можно настроить как для Rhythmbox   :D
Я не пробовал, но теоретически должно сработать.

Попробовал для VLC как для Rhythmbox - не сработало, один фиг крякозябры
все юниксы очень дружелюбны.. они просто очень разборчивы в друзьях ;)

Настоящее труЪ: самописное ядро, выращенные на кухне кристаллы и программирование перемычками :)

Оффлайн Пользователь.

  • Местный
  • *****
  • Автор темы
  • Сообщений: 4639
Хорошо, что проверил, а то у меня все руки не доходили...


Оффлайн ludoed

  • Местный
  • *****
  • Сообщений: 861
  • ludoed1970@jabber.ru
Хорошо было бы, если б еще и помогло  :( а так...  ;)
все юниксы очень дружелюбны.. они просто очень разборчивы в друзьях ;)

Настоящее труЪ: самописное ядро, выращенные на кухне кристаллы и программирование перемычками :)

Оффлайн l_l_lblTHuK

  • Постоялец
  • ***
  • Сообщений: 145
Можно поставить виндовый Mp3tag, в нём в настройках выбрать сохранение в utf-8, потом ткнуть на папку, где музыка лежит, он просканит все каталоги. После этого выделить всё и нажать "сохранить". Всё - теги теперь в utf-8.
Есть скрипт, который делает то же самое.
Либо можно попробовать поставить puddletag - во многом она похожа на Mp3tag.
И нафек не нужны эти костыли с отображением.

Оффлайн ludoed

  • Местный
  • *****
  • Сообщений: 861
  • ludoed1970@jabber.ru
не-а, все эти скрипты и программы - как раз и есть костыль. Если музыки много, и большей частью она записана на CD / DVD дисках, перекодировка тегов не поможет

Вон, у приятеля - 150 Гб металла и хард-рока на болванках записано, а я ему перекодировать предложу?  ;D Я даже знаю, в каком направлении он меня пошлёт  ;D

Проще уж плеер с нормальным отображением тегов подобрать
все юниксы очень дружелюбны.. они просто очень разборчивы в друзьях ;)

Настоящее труЪ: самописное ядро, выращенные на кухне кристаллы и программирование перемычками :)

Оффлайн l_l_lblTHuK

  • Постоялец
  • ***
  • Сообщений: 145
Просто у меня на харде вся музяка хранится, для кого-то это будет актуальный совет :)
А в том случае да, проще плеер научить.

150 гигов на болванках О_о

Пользователь решил продолжить мысль: Июнь 07, 2012, 23:28:18
Хотя чего это я, у самого коллекция фильмов лежит на почти 200 двд ;D
Но это было в далёкие времена, когда инет был медленный, а винты малообъёмные...

Оффлайн Пользователь.

  • Местный
  • *****
  • Автор темы
  • Сообщений: 4639
Для VLC подошел метод с libtag1-rusxmms  ;D
В плейлисте проверял, в медиатеке нет.

Остался Totem, ему libtag1-rusxmms не помог, значит надо попробовать инструкцию как для Rhythmbox.

Оффлайн Пользователь.

  • Местный
  • *****
  • Автор темы
  • Сообщений: 4639
Проверил, для Totem подходит инструкция как для Rhythmbox.
В плеере Totem, после добавления файлов в плейлист отображаются названия файлов, при воспроизведении файла происходит чтение тегов и название файла заменяется на информацию из тегов.

Оффлайн Владимир Юрганов

  • Активист
  • ****
  • Сообщений: 438
эх. если бы только в кирилице дело было... а то значительная часть музыки в latina-1
известная проблема при скачке сусликом

Оффлайн Пользователь.

  • Местный
  • *****
  • Автор темы
  • Сообщений: 4639
В Ubuntu 14.04 убрали из репозиториев libtag1-rusxmms, так что в следующей LTS снова будут кракозябры.

Надо искать выход из ситуации.
« Последнее редактирование: Ноябрь 22, 2013, 15:32:24 от Пользователь. »