Эта статья описывает запуск простого сервера для трансляции видео. Всё описаное в статье проделано её автором с целью эксперимента и только эксперимента. Хотя практическое использование и не исключается (автору это просто не было нужно:)).
Упор в статье будет сделан на дистрибутивы Gentoo и Mandriva, однако практически всё написаное применимо и к другим дистрибутивам.
Итак, для начала нам потребуется icecast, настроенный как в одной из предыдущих статей. На всякий случай повторим пройденый материал. Установка icecast в Mandriva:
urpmi icecast
Установка в Gentoo:
emerge icecast
Далее настраиваем его. Подойдёт файл конфигурации из предыдущей статьи:
<icecast>
<limits>
<sources>2</sources>
</limits>
<authentication>
<source-password>hackme</source-password>
<admin-user>admin</admin-user>
<admin-password>hackme</admin-password>
</authentication>
<directory>
<yp-url-timeout>15</yp-url-timeout>
<yp-url>http://dir.xiph.org/cgi-bin/yp-cgi</yp-url>
</directory>
<shoutcast-mount>/stream</shoutcast-mount>
<hostname>localhost</hostname>
<listen-socket>
<port>8000</port>
</listen-socket>
<listen-socket>
<port>8001</port>
<shoutcast-compat>1</shoutcast-compat>
</listen-socket>
<fileserve>1</fileserve>
<paths>
<logdir>/var/log/icecast</logdir>
<webroot>/usr/share/icecast/web</webroot>
<adminroot>/usr/share/icecast/admin</adminroot>
<alias source="/" dest="/status.xsl"/>
</paths>
<logging>
<accesslog>access.log</accesslog>
<errorlog>error.log</errorlog>
<loglevel>3</loglevel>
</logging>
<security>
<chroot>0</chroot>
<changeowner>
<user>icecast</user>
<group>icecast</group>
</changeowner>
</security>
</icecast>
Не забудьте указать более сложный source-password:)
Далее нам нужно установить ezstream - сервер, который будет выполнять роль SOURCE для icecast. В Mandriva это делается очень легко:
urpmi ezstream
В Gentoo несколько сложнее. К сожалению ebuild для ezstream отсуствтует в официальном дереве, однако это не мешает написать его самостоятельно. Вот ebuild, написаный автором статьи:
DESCRIPTION="Enables you to stream mp3 or vorbis files to an icecast server without reencoding"
HOMEPAGE="http://www.icecast.org/ezstream.php"
SRC_URI="http://downloads.xiph.org/releases/ezstream/${P}.tar.gz"
KEYWORDS="x86"
IUSE="taglib"
DEPEND="media-libs/libvorbis
media-libs/libogg
>=media-libs/libshout-2.1
media-libs/libtheora
dev-libs/libxml2
taglib? ( media-libs/taglib )"
RDEPEND="${DEPEND}
net-misc/icecast"
src_compile() {
econf $(use_with taglib) || die "econf failed"
emake || die "emake failed"
}
src_install() {
emake DESTDIR="${D}" install || die "make install failed"
}
Сохряняем этот файл под именем /usr/local/portage/media-sound/ezstream/ezstream-0.5.1.ebuild и выполняем следующую последовательность команд:
ebuild /usr/local/portage/media-sound/ezstream/ezstream-0.5.1.ebuild digest ebuild /usr/local/portage/media-sound/ezstream/ezstream-0.5.1.ebuild merge
Теперь и "гентушники" имеют установленый ezstream, однако прежде чем приступать к его настройке, нужно установить конвертер ffmpeg2theora. Пользователи Mandriva как всегда используют urpm:
urpmi ffmpeg2theora
А пользователи Gentoo - emerge:
emerge ffmpeg2theora
Вот теперь приступаем к написанию файла конфигурации. Создадим файл /etc/ezstream.xml и добавим в него следуюее:
<ezstream>
<url>http://127.0.0.1:8000/video.ogg</url>
<sourcepassword>hackme</sourcepassword>
<format>THEORA</format>
<filename>/etc/ezstream.m3u</filename>
<shuffle>1</shuffle>
<svrinfoname>Test TV</svrinfoname>
<svrinfourl>http://ylsoftware.com</svrinfourl>
<svrinfogenre></svrinfogenre>
<svrinfodescription>Test TV-Chanel</svrinfodescription>
<svrinfobitrate>200</svrinfobitrate>
<svrinfochannels>2</svrinfochannels>
<svrinfosamplerate>44100</svrinfosamplerate>
<reencode>
<enable>1</enable>
<encdec>
<format>THEORA</format>
<match>.avi</match>
<decode>ffmpeg2theora -x 192 -y 128 -a 0 -v 4 --title "@M@" -o - "@T@"</decode>
</encdec>
<encdec>
<format>THEORA</format>
<match>.mpg</match>
<decode>ffmpeg2theora -x 192 -y 128 -a 0 -v 4 --title "@M@" -o - "@T@"</decode>
</encdec>
</reencode>
</ezstream>
Параметры "url" и "sourcepassword" задают параметры соединения с icecast. Параметр "filename" указывает имя стандартного файла плей-листа. Каждая строчка которого - имя файла.
Для запуска ezstream в качестве демона создайте скрипт следующего содеражния:
#!/bin/sh ezstream -c /etc/ezstream.xml >/dev/null 2>/dev/null &
И добавьте его в автозапуск. Для этого нужно дописать стрчку вызова скрипта в Mandriva в файл /etc/rc.local, а в Gentoo - в файл /etc/conf.d/local.start.
Теперь вы можете настроить ваш проигрыватель на воспроизведение потока, находящегося по адресу http://<адрес вашего icecast>/<точка монтирования>. Учтите что трансляция идёт в формате ogg, с использованием кодека theora.
Если вы хотите увеличить разрешение потока - обратите внимание на ключи -x и -y, передаваемые декодеру (см. файл конфигурации).
К сожалению (пере) кодирование видео - достаточно ресурсоёмкий процесс. Эта конструкция испытывалась на двух системах - двухядеhный AthlonXP 2600 Mhz, с 512MB оперативной памяти, и двухядерном Xeon 2400Mhz с 2GB оперативной памяти. В обоих случаях система потребляла примерно 60-80% процессорного времени одного из ядер.

2007-09-19 09:01:49 (#)