Эта статья описывает запуск простого сервера для трансляции видео. Всё описаное в статье проделано её автором с целью эксперимента и только эксперимента. Хотя практическое использование и не исключается (автору это просто не было нужно:)).
Упор в статье будет сделан на дистрибутивы 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 (#)