Streaming Media в Интернете
Что необходимо учитывать при выборе Streaming Media-системы
Появление Интернета и создание довольно надежно работающей системы передачи данных привело к тому, что электронные письма, Web-страницы и серверы новостей с обновляющейся лентой информации стали неотъемлемой частью жизни для тех, у кого есть доступ к Интернету. Поэтому вполне естественной выглядит идея приспособить Интернет для передачи звука и видео в реальном времени. Например, создать радио, вещающее в Интернете. Однако очевидно, что решить эту задачу напрямую нельзя. Тот объем данных, который необходимо передавать, чрезмерно велик для имеющихся на данный момент соединений. Более того, необходимо организовать передачу сразу нескольким клиентам. Для примера: качество звука на стереодиске требует примерно 200 Кбайт/с. Такая пропускная способность существует лишь в локальных сетях или на некоторых немногочисленных оптоволоконных каналах. Однако замечательным является тот факт, что какие-то решения, позволяющие совместить не очень высокую пропускную способность линий связи и передачу информации в реальном времени, все же были найдены. А именно: были созданы технологии передачи потоков информации (Streaming Media) и реализованы программные компоненты этих технологий — программы создания потоков и управления ими. Краткому описанию принципов построения такого рода технологий и посвящена эта статья. Известно, что одним из лидеров Streaming Media-технологий является RealNetworks. Поэтому большая часть статьи, затрагивающая общие положения, опирается на материал Real. Однако в качестве конкретного примера мы рассмотрим недавно запущенную в Москве Интернет-радиостанцию, которая реализована с использованием Windows Media.
Что такое Streaming Media
Streaming Media — это метод создания звука, видео и других multimedia-сред, доступных в реальном времени, без предварительной разгрузки. Streaming Media включает в себя следующие пять основных элементов (рис. 1): кодировщики и программы (1), используемые для того, чтобы создавать или перенаправлять данные (2), которые с помощью сервера (3) передаются по сети (4) клиентам (5) постоянно (live) или по запросу (on-demand).
Самая простая реализация Streaming Media-системы — это два компьютера в сети, где один оборудован устройством захвата информации (карта видеоввода или микрофон), а другой показывает эту информацию на своем мониторе или проигрывает в колонках.
В предложенном примере (рис. 2) для создания видео используется, скажем, камера и карта видеоввода (1). Программа кодирует сигнал в формат, который позднее может быть обработан как единый файл или непосредственно отправлен как поток данных (2). Такой поток или файл передается на компьютер, где есть программное обеспечение сервера (3) (конечно, это может быть один и тот же компьютер, если он достаточно мощный). В дальнейшем эта информация по сети (4) выдается клиентам (5). Таким клиентом может быть, например, программа WebTV.
Что необходимо учитывать при выборе Streaming Media-системы
Основными критериями являются качество и то, насколько имеющиеся программы и оборудование отвечают конкретным потребностям и запросам.
Что значит «качество»? Большинство пользователей ожидают видеть полноэкранное видео, стереозвук, полноценную динамику изображения. Этим требованиям отвечает RealSystem.
RealSystem имеет серверы, корректно обрабатывающие ошибки (такие как ухудшение связи), кодирующие устройства, допускающие live-звук на 120-мегагерцевой машине, и проигрыватель RealPlayer, который по некоторым показателям превосходит аналогичные программы. Считается, что используемый алгоритм кодировки-декодировки информации является одним из самых эффективных. RealSystem реализована на различных типах процессоров и для разных операционных систем, что делает ее еще более привлекательной.
Что такое RealSystem
RealSystem — это семейство RealSystem G2-программ. Это семейство состоит из RealProducer, который позволяет создавать и обрабатывать данные (звук, видео и т.д.). Основной целью RealProducer является создание данных в том формате, который наиболее применим для эффективной передачи по сети. В сущности, это кодировщик, как мы его и будем называть в дальнейшем. Из RealServer, который передает потоки данных по сети, притом так, что клиент может смотреть и слушать, не дожидаясь полной загрузки. А также из RealPlayer, который принимает данные и их воспроизводит.
Давайте подробнее остановимся на работе сервера.
Что такое RealServer
RealServer — программа, которая может передавать по сети как сохраненные файлы, так и входной поток данных. Клиент получает данные в реальном времени, не дожидаясь полной загрузки файла.
RealServer состоит прежде всего из самой программы — rmserver.exe для Windows или rmserver для UNIX. Также есть программы-дополнения, обеспечивающие некоторые специфические функции. Конфигурация хранится в XML-формате в файле rmserver.cfg. Имеется специальная программа — RealSystem Administrator, цель которой — управлять и следить за работой сервера.
RealServer используют два канала передачи данных. Один — для общения с клиентом, передачи служебной информации, паролей, сигналов начала и остановки. Другой — для реального потока данных.
Для передачи данных используются два основных протокола: RTSP (Real Time Streaming Protocol) и PNA (Progressive Networks Audio). Иногда RealServer использует протокол HTTP для передачи страниц (например, при работе RealSystem Администратора). Также иногда этот протокол используется, если есть Firewall.
Внутри своих каналов RealServer использует два других протокола для пересылки служебной информации: TCP — для пересылки от клиента команд типа «старт» и «пауза» и от RealServer к клиенту информации типа названий клипов; UDP — для пересылки реальных данных. Иногда конфигурация Firewall приводит к тому, что используется только TCP и HTTP.
Связь между кодировщиком и RealServer осуществляется посредством UDP и является односторонней. Связь между RealServer и RealPlayer является двусторонней.
Существуют три режима передачи информации.
Первый — по запросу (on-demand). Клиент получает клип, может его слушать, прокручивать вперед и назад, ставить на паузу.
Второй — непрерывный в реальном времени (live). Здесь полная аналогия, например, с телевизором. Клиент получает то, что происходит в данный момент. Очевидно, что это более ресурсоемкий метод.
Третий метод — передача клипов по запросу, но без возможностей паузы и прокрутки. Это аналогично тому, что вы смотрите, скажем, передачи в другой временной зоне.
RealServer может быть настроен на работу в любом из этих трех режимов.
Для реальной передачи используются следующие методы.
Unicasting
Самый простой и наиболее популярный метод передачи потока данных. Существует одна связь для каждого клиента.
Splitting
Расщепление — метод, когда наряду с самим сервером запущен Splitter — программа, которая осуществляет реальную связь с клиентом. Это позволяет уменьшить загруженность основного сервера, давая ему возможность передавать каждый различный поток лишь в одной копии. Дальнейшим разделением занимается Splitter.
Multicasting
Это специально разработанный метод для одновременного обслуживания большого числа клиентов. Для каждой группы клиентов передается только одна копия потока. В результате значительно экономится полоса пропускания на транспортной магистрали.
Выбор метода, несомненно, связан как с конкретными целями, так и с возможностями аппаратного обеспечения. В основном это частота процессора, объем оперативной памяти и пропускная способность сети.
Следующая информация наглядно показывает, что требования к системе достаточно высокие.
RealServer реализован для процессоров Intel Pentium, Sparc, SGI IRIX.
Операционные системы: Windows NT 4.0 или 2000 Workstation или Server, Linux 2.2, glib c6, SCO 7.0.1, 7.1.0, 7.1.1, FreeBSD 3.0, на Sun — Solaris 2.6, 2.7, 2.8, на SGI — IRIX 6.2, 6.5.
RealServer и RealServer Plus требуют минимум 128 Мбайт памяти, RealServer Professional требует 256 Mбайт, причем от количества памяти напрямую зависит количество клиентов, которые одновременно могут работать с сервером. Для работы более 1000 клиентов нужно 512 Mбайт памяти.
Оценка необходимой пропускной способности сети дается произведением частоты одного канала на количество пользователей и на коэффициент сжатия данных. Вся остальная информация пренебрежимо мала по объему. Поэтому при частоте информации 20 Кбайт/c и 60 пользователях нужно 1,2 Мбайт/c.
Объем дискового пространства в основном определяется объемом данных. Сам сервер требует около 8 Mбайт.
Для работы самого сервера нужно, чтобы он находился на зарегистрированном Интернет-компьютере, на котором был бы запущен HTTP-сервер. RealServer может работать с такими распространенными HTTP-серверами, как Apach, CERN HTTPD, EMWC HTTPS, HTTPD4 Mac, Mac HTTP, Microsoft Internet Information Server, NCSA HTTPD Netscape Netsite и Netscape Enterprise Server, O’Reilly Website NT, Spinner, Webstar и Webstar PS.
Отметим, что в дополнение к RealServer может быть установлен RealProxy — специальный Proxy-сервер для хранения потоков данных. Такой сервер будет разгружать работу основного сервера, выдавая уже готовые файлы.
Все вышесказанное, несмотря на обилие слов «real», имеет достаточно общий характер и может быть отнесено к любой системе передачи потоков данных в реальном времени. Давайте рассмотрим конкретный пример, который, как уже было сказано во введении, основан не на Real-технологиях, а использует Windows Media.
Речь пойдет о радиостанции, созданной компанией «Зенон Н.С.П.» и авторской группой SoftWaveRadio и посвященной джазу. Ее адрес: http://www.softwave.aha.ru.
Весь рабочий комплекс радиостанции можно разделить на две части.
Есть серверная часть, которая позволяет ретранслировать в Интернет видео/аудиопотоки. Это своего рода «передатчик», осуществляющий «раздачу» живых потоков зеркальным серверам и конечным слушателям. Есть комплекс программного и аппаратного обеспечения, с помощью которого аналоговый или цифровой аудио/видеосигнал преобразуется в поток и передается на сервер.
В качестве серверной платформы радиостанции используются компьютеры на базе двух процессоров Intel Pentium III 550 МГц. На них работает операционная система Microsoft Windows 2000 Advanced Server со встроенными в нее Windows Media Services. Для кодирования сигнала можно применять менее мощные машины. В случае с SoftWave Radio это рабочая станция с Celeron 400 МГц, работающая под управлением Windows 98.
Изначально звук записывается с компакт-дисков на жесткие диски без компрессии. Далее специальная радиостанционная программа по различным характеристикам песен, введенным в базу при записи, составляет списки проигрывания песен. Полученный аудиосигнал попадает на рабочую станцию — Encoder. С помощью Windows Media Encoder’а на этой рабочей станции происходит формирование исходных потоков на 28 Kбит и на 64 Kбит из аудиосигнала. При скорости потока 64 Kбит получается качество выше, чем FM-эфир. Потом эти потоки передаются на Windows Media Server, откуда их и получают слушатели. Никаких особых тонкостей нет. Web-сервер www.softwave.aha.ru — это обычный виртуальный сервер. На нем размещена ссылка на поток. На сегодняшний день платформа готова выдержать до 2000 одновременных слушателей. При работе слушателя из-за Firewall или Proxy поток передается средствами стандартного протокола http.
В данный момент в спектр услуг входит вещание живых потоков. В дальнейшем будут введены некие расширения услуг хостинга, которые позволят размещать аудио/видеофайлы на специализированном сервере, для дальнейшего воспроизведения в режиме on-demand. В принципе, это возможно и на обычном виртуальном сервере, однако это в чем-то сравнимо просто с загрузкой файла, только содержимое его просматривается «на лету». Нет возможности прокрутить изображение и звук вперед-назад. На специализированном сервере такая возможность есть.
Серьезными основаниями для использования именно Windows Media, по словам создателей проекта, являются почти 20-кратный выигрыш в цене по сравнению с технологиями Real Networks и лучшее качество при равной скорости.
Скажем еще несколько слов о реальных вещах. На самом деле сегодня реализовано довольно много сайтов, где есть радио и даже телевидение в режиме live. Это существует как за рубежом, так и у нас. Однако нужно признать, что не всегда данные ресурсы бывают легкодоступными. Основной проблемой является пропускная способность сетей. Зачастую это не зависит ни от сервера, ни от клиента, а только от промежуточного соединения. Более того, доступ к таким ресурсам при модемном подключении требует скорости 33 600 или выше (выше означает протокол V90, который не всегда физически возможен; правда, это не наша тема). Почему 33 600, а не 28 800, как пишут на сайтах, — потому что 28 800 для модема включает его служебную информацию и реально для передачи данных с частотой 28 800 нужна большая скорость. Это не означает, что при меньшей скорости вообще ничего нельзя получить. Личный опыт показал, что даже при скорости 14 400 удается соединяться с такими сайтами, правда, при этом качество оставляет желать лучшего. Справедливости ради нужно сказать, что в случае описанной выше радиостанции SoftWaveRadio скорость 28 Kбит является минимальной и получение данных при меньшей скорости невозможно.
В заключение скажу, что на самом деле, несмотря на возможные трудности технического характера, на мой взгляд, использование Интернета для передачи информации в реальном времени является сегодня наиболее современным и интересным направлением. Хочется верить, что ситуация с Интернетом изменится в лучшую сторону для пользователей, что, несомненно, поднимет популярность Интернет-радиостанций.
Автор благодарен Виктору Белову («Зенон Н.С.П») за информацию о радиостанции SoftWaveRadio.
КомпьютерПресс 6'2000