Вещаем в сети! Курс начинающего медиамагната

Andrushock

Xakep, номер #056, стр. 056-070-1


(andrushock@real.xakep.ru)

В одном из прошлых номеров я рассказывал о том, как создать свой собственный потоковый музыкальный сервер. На эту статью пришло довольно много откликов с просьбой дать более подробную информацию о вещании, как аудио, так и видеопотоков. Сегодня мы продолжим разговор об mp3-серверах, подробно остановимся на потоковых киносерверах и затронем не менее интересную тему – телевидение и сеть. После прочтения ты сможешь, используя самый обычный ТВ-тюнер и свой любимый дистрибутив линукса, не только сам смотреть телепередачи, но и показывать их своим односетчанам!

Мал ffmpeg, да дорог

Разработчики ультрабыстрого аудио/видео конвертера ffmpeg с недавнего времени закрыли анонимный доступ к своему CVS-репозиторию, поэтому придется скачать автоматически генерируемый ежедневный снапшот исходного кода. После распаковки архива перейдем в созданный каталог, озадачим скрипт configure инсталляционным каталогом, скомпилируем и установим:

$ tar zxvf ffmpeg-cvs-YEAR-MONTH-DAY.tar.gz

$ cd ffmpeg-cvs-YEAR-MONTH-DAY

$ ./configure --prefix=/usr/local/ffmpeg

$ nice make

# make install

В итоге мы получим статически слинкованные (т.е. не зависимые от программных библиотек) кодек libavcodec для воспроизведения видеоданных и ffserver для реализации потокового вещания. Простейший конфигурационный файл (синтаксис которого очень напоминает конфиг Apache) потокового mp3-сервера может состоять всего лишь из четырех строчек:

# vi /etc/ffserver.conf

<Stream girls.mp3>

File /path/to/mp3/girls.mp3

Format mp2

</Stream>

Хотя, конечно же, корректней будет сразу задать все необходимые параметры:

<Stream test.mp3>

File /path/to/music/girls.mp3

Format mp2

AudioCodec mp3

AudioBitRate 64

AudioChannels 1

AudioSampleRate 44100

NoVideo

</Stream>

Запускаем ffmpeg-сервер и проверяем, за’bind()’ился ли он на дефолтный 8080 порт:

# /usr/local/ffmpeg/bin/ffserver -f /etc/ffserver

# netstat -na --inet | grep 8080

tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN

Если у тебя этот порт занят апачем или проксей, то в конфиге просто переопредели его значение директивой Port:

Port 8090

Что же подразумевают под потоковым аудио и видеовещанием? Обычно мы действуем последовательно: с удаленного сервера скачиваем на винт нужный файл и скармливаем его проигрывателю. В случае с потоковой информацией все происходит совсем по-другому: сервер, на котором хранятся транслируемые данные, единовременно осуществляет одностороннюю доставку всем клиентам, подписавшимся на определенный виртуальный канал. Доставка происходит односторонняя, так как пользовательские плееры не отправляют никаких команд на сервер, а просто воспроизводят полученные данные в реальном времени, не сохраняя их на жесткий диск.

Теперь для проверки на клиентской машине открываем Winamp, указываем адрес только что созданного mp3-сервера: Add -> Add URL http://ip.address.of.ffserver/test.mp3 и наслаждаемся запрошенной композицией. Для трансляции видео поступаем точно таким же способом (тестовый видеоролик sample.asf можно взять из установленного WinXP в каталоге Program Files\Movie Maker):

Содержание  Вперед на стр. 056-070-2