Показаны сообщения с ярлыком utf-8. Показать все сообщения
Показаны сообщения с ярлыком utf-8. Показать все сообщения

02 апреля 2015

Mediatomb - DLNA-сервер

Все таки транскодирование - это вещь! Экономит кучу времени и нервов! Вы просто перестаете думать о том, в каком формате у вас фильм и точно знаете, что он запустится на вашем любимом телевизоре! Поэтому сегодня мы настроим dlna-сервер Mediatomb на FreeBSD для вашего медиа-архива. Статья больше для себя, что бы не забыть.

Официальный сайт проекта - http://mediatomb.cc. Так же там есть русскоязычный форум. Поэтому если появятся вопросы, здесь их помогут быстро решить.
 
Ставим из портов
# cd /usr/ports/net/mediatomb
# make install clean
Прописываем автозапуск, добавляем в /etc/rc.conf
mediatomb_enable="YES"
mediatomb_flags="-i 192.168.25.1"
Настраиваем, редактируем конфигурационный файл
/usr/local/etc/mediatomb/config.xml
Полную справку по всем опциям настройки можно посмотреть тут.

1) Меняем порт для веб-интерфеса (по умолчанию 49152), в секции <server>
 <port>49153</port>
2) Включаем доступ к web-интерфесу по логин/паролю.
<ui enabled="yes" show-tooltips="yes">
     <accounts enabled="yes" session-timeout="30">
        <account user="user_name" password="password"/>
     </accounts>
</ui>
3) Меняем название медиасервера
<name>Name_Server</name>

4) Написано, что это нужно включить для PlayStation 3, но без этого у меня не заработала перемотка на телевизоре LG.
<protocolInfo extend="yes">
5) Поддержка русских названий, при условии, что у вас локаль UTF-8 (как это сделать здесь)
<import hidden-files="no"> 
   <filesystem-charset>UTF-8</filesystem-charset> 
   <metadata-charset>UTF-8</metadata-charset>
   <playlist-charset>UTF-8</playlist-charset>
... 
</import>
6) Добавляем недостающие форматы
<extension-mimetype ignore-unknown="yes">
  <map from="mkv" to="video/x-msvideo"/>
  <map from="mka" to="audio/x-msaudio"/>
  <map from="mp3" to="audio/mpeg"/> 
  <map from="ts" to="video/mpeg"/> 
  <map from="mp4" to="video/mpeg"/> 
  <map from="jpg" to="image/jpeg"/> 
  <map from="jpeg" to="image/jpeg"/>
  <map from="avi" to="video/divx"/>
7) Включаем транскодирование
<transcoding enabled="yes">
8) Показ кадра из фильма
<extended-runtime-options> 
  <ffmpegthumbnailer enabled="yes"> 
    <thumbnail-size>128</thumbnail-size> 
    <seek-percentage>5</seek-percentage> 
    <filmstrip-overlay>yes</filmstrip-overlay> 
    <workaround-bugs>no</workaround-bugs>
    <image-quality>10</image-quality> 
  </ffmpegthumbnailer> 
</extended-runtime-options>


Запускаем
# service mediatomb start
Теперь можно перейти по адресу http://192.168.25.1:49153, ввести имя, пароль и приступить к наполнению медиатеки.


Здесь переходите на вкладку Filesystem, выбираете нужную папку, добавляете  ее с автосканированием. И отмечаете параметры, сканировать по времени, рекурсивно и жмете кнопку Set. 

 

Открываете в телевизоре SmartShare или AllShare и проверяйте - работает! Все легко и просто!

P.S.
Что бы отключить папку PC-directory в секции  <server> добавляете опцию
<pc-directory upnp-hide="yes"/>

 

15 октября 2014

Кодировка UTF-8



На вопрос какую кодировку лучше использовать? Ответ простой - выбирайте unicode, не ошибетесь! Это универсальный стандарт, символы выглядят одинаково везде и вы навсегда избавитесь от проблемы подбора правильной кодовой страницы и кракозябр.

А для совместимости со старыми однобайтовыми кодировками придуман формат UTF-8 (Unicode transformation format). 

По сути это ничто иное, как 8-битная форма записи юникода. Но позвольте, скажете вы, как же так? В юникоде около 110 000 разных символов, как они кодируются одним байтом? Давайте разбираться.

На самом деле не одним байтом. Здесь разные символы кодируются разным числом байтов, в зависимости от их кода или порядкового номера.  Как мы знаем, символы ASCII, кодируется всего 7 битами. И в юникоде они располагаются первыми. Поэтому, если байт начинается с 0, то это является признаком ASCII и символ кодируется только одним байтом.
0aaa aaaa
Но если символ имеет код больше 7 битов (128), то для его кодирования приходится использовать второй байт. Для этого в начале первого байта ставится признак "110" - две единицы, это значит два байта и ноль, как признак завершения кода размера. Второй байт обязательно начинается с "10" - это признак продолжения.
110x xxxx 10xx xxxx
Пример, имеем двухбайтовый символ  [11010000] [10011110], отбрасывая признаки, получаем 10000011110 = 0x41E, это символ большая кирилическая О.

Если код символа занимает больше 11 бит (2048), то ставится признак "1110" и используют третий байт, в начале которого так же ставят признак продолжения "10".
1110 xxxx 10xx xxxx 10xx xxxx
И так далее до 6 байт.
Вот такой простой принцип кодирования.

Но на Freebsd почему то все еще используется KOI8-R. Поэтому после того, как вы осознали пользу от Unicoda, давайте установим ее в качестве локали.  Но пользоваться ею нормально можно будет только в удаленной консоли, например по ssh. В системной это не будет работать!

Если вы используете шелл по умолчанию, то для обычных пользователей это sh, а для root - csh.

Что бы узнать свое окружение дайте команду
# echo $shell
или посмотрите в /etc/passwd

Для смены кодировки csh достаточно в файле /etc/csh.cshrc прописать переменные
setenv LANG ru_RU.UTF-8
setenv LC_CTYPE ru_RU.UTF-8
setenv LC_COLLATE POSIX
setenv LC_ALL ru_RU.UTF-8
Для  bash в файле /etc/profile дописываем

LANG="ru_RU.UTF-8"; export LANG
LC_CTYPE="ru_RU.UTF-8"; export LC_CTYPE
LC_COLLATE="POSIX"; export LC_COLLATE
LC_ALL="ru_RU.UTF-8"; export LC_ALL'
 Переподключайтесь и любуйтесь русскими символами!