Заметки за май 2009 года

Ускоряем кодеки для просмотра FullHD

Мой старенький Mac mini (1.66ГГц Intel Core Duo) всегда тормозил при воспроизведении FullHD фильмов. Максимум на что его хватало — это фильмы с разрешением 720p. Из-за особенностей большинства плееров и кодеков, используемых в них, для декодирования задействовалось только одно ядро процессора.

У проекта FFmpeg есть многопоточная версия FFmpeg-mt, которую можно и нужно использовать, например, в MPlayer для того, чтобы загрузить процессор работой по максимуму.

Итак, прежде чем приступить к сборке, нам понадобятся несколько инструментов:

  • Apple Developer Tools (так же есть на любом DVD с Mac OS X)
  • Subversion (консольная версия есть в комплекте Apple Developer Tools)
  • Git

Всю сборку я буду проводить на рабочем столе.

cd ~/Desktop/

Загружаем исходники MPlayer из репозитория.

svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer

Загружаем исходники FFmpeg-mt.

git clone http://git.gitorious.org/ffmpeg/ffmpeg-mt.git

Теперь, чтобы использовать библиотеки FFmpeg-mt, заменим три папки libavcodec, libavformat и libavutil в исходниках MPlayer.

cd mplayer
rm -rf libavcodec libavformat libavutil
cp -R ../ffmpeg-mt/libavcodec .
cp -R ../ffmpeg-mt/libavformat .
cp -R ../ffmpeg-mt/libavutil .

Можно приступать к конфигурации и сборке проекта.

./configure --enable-menu --enable-apple-remote
make
sudo make install

Осталось сделать несколько косметических манипуляций. Нужно указать какой шрифт использовать для OSD и субтитров.

ln -s /Library/Fonts/Arial\ Unicode.ttf ~/.mplayer/subfont.ttf

Так же нужно немного отредактировать конфигурационный файл.

nano ~/.mplayer/config

В файле набираем:

lavdopts=threads=2:skiploopfilter=all
vf=yuy2
fs=yes

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

В целом обновленная версия показала прирост в производительности на 60% в сравнении с однопоточным декодером.

Обновление: отличный GUI MPlayer OSX Extended уже содержит сборку mplayer с многопоточным декодированием.

Комментарии к заметке: 1

Навигация внутри страницы по якорям

Перечитывал спецификацию HTML 4.01 и открыл для себя удивительное свойство ссылок. Чтобы обеспечить навигацию по якорям внутри страниц не обязательно объявлять эти их через <a name="#section"></a>. Достаточно назначить этот идентификатор любому подходящему элементу.

<h1>Table of Contents</h1>
<p><a href="#section1">Introduction</a><br />
<a href="#section2">Some background</a><br />
<a href="#section2.1">On a more personal note</a><br />
…the rest of the table of contents…
…the document body…
<h2><a name="section1">Introduction</a></h2>
…section 1…
<h2><a name="section2">Some background</a></h2>
…section 2…
<h3><a name="section2.1">On a more personal note</a></h3>
…section 2.1…

Аналогичного эффекта можно достичь с помощью более простого кода:

<h1>Table of Contents</h1>
<p><a href="#section1">Introduction</a><br />
<a href="#section2">Some background</a><br />
<a href="#section2.1">On a more personal note</a><br />
…the rest of the table of contents…
…the document body…
<h2 id="section1">Introduction</h2>
…section 1…
<h2 id="section2">Some background</h2>
…section 2…
<h3 id="section2.1">On a more personal note</h3>
…section 2.1…
Оставте свой комментарий

Ещё парочка «Sticky footer»

Не так давно я писал о «Sticky footer». Сегодня мне попалась на глаза ещё пара реализаций: Ryan Fiat’s Sticky Footer и New CSS Sticky Footer.

Они обе имеют одну слабость — необходимо задавать высоту «подвала», что в некоторых ситуациях может быть проблематично. Как вариант, его можно сделать немного больше, чем нужно, и дать тексту пространство для расширения.

Оставте свой комментарий