вторник, 30 сентября 2008 г.

Программы для потокового видео (Streaming video)


Главная особенность потокового видео заключается в том, что при его передаче пользователь не должен ждать полной загрузки файла для того, чтобы его просмотреть. Streaming video пересылается непрерывным потоком в виде последовательности сжатых пакетов и проигрывается по мере того, как передается на компьютер получателя.

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

Чаще всего используются три проигрывателя - RealOne Player, Windows Media Player и Quicktime Player.

Способы передачи

Существуют два способа передачи потокового видео - последовательный (progressive streaming) и в реальном времени (Real-time streaming). При передаче последовательным способом качество изображения всегда лучше, поскольку видео воспроизводится с вашего жесткого диска. Для такого способа передачи видео можно использовать стандартный веб-сервер.

Однако, недостатком последовательного способа передачи является то, что при воспроизведении файла перескакивать от одного эпизода к другому невозможно. Таким образом, чтобы просмотреть какую-нибудь часть клипа, вам необходимо будет загрузить его до нужного момента. Поэтому последовательная передача видео через интернет, в основном, используется для коротких клипов.

Для осуществления передачи видео в реальном времени требуется специальный потоковый сервер (streaming server). Видеофайл хранится на этом сервере, и для просмотра загружать его на жесткий диск не нужно. Пользователь может начать просмотр видео с любого момента, не дожидаясь, пока файл закачается. Передачу видео в реальном времени удобно использовать для трансляции файлов большой длины.

Потоковые серверы дают возможность управлять медиа-передачей, однако, они более сложны в настройке и администрировании, чем обычные HTTP-серверы. Кроме специальных серверов, используются и особые сетевые протоколы, например, RTSP (Real-Time Streaming Protocol). Этот протокол используется Windows Media по умолчанию, но он также поддерживается Real Video.

RTSP - это протокол, с возможностью контролируемой передачи видеопотока в интернете. Протокол обеспечивает пересылку информации в виде пакетов между сервером и клиентом. При этом получатель может одновременно воспроизводить первый пакет данных, декодировать второй и получать третий.

Протокол RTP (Real-time transport protocol) определяет и компенсирует потерянные пакеты, обеспечивает безопасность передачи контента и распознавание информации. Вместе с RTP работает протокол RTCP (Real-Time Control Protocol). Он отвечает за проверку идентичности отправленных и полученных пакетов, идентифицирует отправителя и контролирует загруженность сети. Форматы

Существует несколько основных форматов потокового видео в интернете. Это - Real Media, Windows Media и Quicktime. До недавнего времени наряду с ними широко использовался MPEG, однако, в последнее время он сильно сдал позиции.

MPEG

Формат MPEG был разработан компанией Moving Picture Experts и до недавнего времени считался стандартом потокового вещания. Существует несколько версий MPEG.

Формат MPEG-1 был создан в далеком 1988-м году и обеспечивал качество VHS при записи видео на CD-ROM. Несмотря на то, что MPEG-1 разрабатывался как формат хранения, а не передачи файлов, он обеспечивает отличное качество потокового видео на высоких битрейтах. Оптимальный битрейт для этого формата - 1.5мб/с для разрешения 352x240 при частоте 30 кадров в секунду. Однако, файлы MPEG-1 обычно слишком велики для передачи по интернету.

Формат MPEG-2 был разработан для вещания цифрового телевидения и со временем также стал использоваться при записи DVD. Его битрейт еще выше, чем у MPEG-1 (между 4 и 9 мб/c), что позволяет добиться изображения высокой четкости. Его использование как потоковой технологии не очень распространено, так его скорость передачи информации очень велика. Для просмотра файла в формате MPEG-2 в режиме онлайн нужно иметь скорость передачи данных около 400 кб/c и выше.

Формат MPEG-4 был специально разработан для передачи данных по интернету и мобильной связи. Его оптимальный битрейт - между 385 и 768 кб/c. MPEG-4 может использоваться для передачи аудио и видео потоков, обеспечивая при этом высокое качество кодирования при большой степени компрессии. Однако, если на небольшой скорости передачи данных он обеспечивает хорошее качество, для широкополосной передачи он не приспособлен.

RealVideo

RealVideo - это формат, который был разработан для потоковой трансляции. Для передачи данных на DVD или CD-ROM он практически не используется из-за высоких аппаратных требований. Особенностью файлов RealVideo является невозможность редактирования или повторной компрессии. Этот формат использует методы компрессии, которые уменьшают количество кадров в видео, и удаляет ненужную информацию из кадров. Качество при этом будет зависеть от количества деталей в кадрах и от динамики событий. Благодаря большому уровню компрессии этот формат подходит для пользователей с низкой скоростью соединения.

QuickTime

Этот формат, разработанный Apple, широко используется как на компьютерах Mac, так и в среде Windows. QuickTime имеет много общего с форматом Real Media. Степень сжатия файла QuickTime - 1 мб для 3.75 секунд видео, поэтому размер изображения может быть увеличен и уменьшен без потери качества. Это означает, что видеофайл с разрешением 320x240 может быть просмотрен в полноэкранном режиме с таким же качеством. Формат QuickTime лучше всего подходит для последовательной передачи потокового видео, так как в процессе загрузки файла запускается плеер, который воспроизводит полученную информацию.

Windows Media

Windows Media это относительно молодой формат в области потокового вещания, поддерживаемый Microsoft. Последняя разработка компании - Windows Media Video 9. Этот формат превосходит по производительности своего предшественника WMV8 на 15-30 процентов. Сравнение же с другими форматами потокового вещания тоже говорит только в его пользу. Так, например, видео в формате MPEG-4, транслируемое с битрейтом 6 мб/c, будет выглядеть аналогично сделанному при помощи WMV9 при 2 мб/c. А качество видео в формате WMV9, передаваемого на скорости 150 кб/с, ничуть не хуже, чем аналогичного в формате MPEG-4 на 300 кб/c.

Какой формат выбрать

На сегодняшний день еще можно говорить о том, что значительная часть пользователей выходит в интернет через dial-up, а значит, на очень низких скоростях. Лишь немногие могут себе позволить скорость более 2 мб/c, однако в последние пару лет значительно увеличилось количество пользователей, которые выходят в интернет через выделенную линию со скоростями от 128 кб/с. На таких скоростях уже возможна передача данных с качеством на уровне VHS.

Скорость вашего интернет-соединения имеет значение при выборе формата. Windows Media 7,8, Windows MPEG-4, Real Media, Quicktime лучше всего подходят для диапазона скорости от 36 кб/c до 500 кб/c. Windows media 9, MPEG4 (ISO и DivX) можно выбирать, если ваша скорость от 500 кб/c до 3 мб/c. Для высоких скоростей (от 1 мб/c до 3 мб/c) лучше всего подойдет MPEG-1, а для очень высоких (от 3 мб/c до 15 мб/c) - MPEG2. Хороший кодировщик MPEG-1 даст качество VHS на скорости 1.5 мб/c, качество SVHS - на 2.5 мб/c. MPEG-2 обеспечит качество DVD (4:2:0) на 5 мб/c, видео качество 4:2:2 - на 10 - 15 мб/c. Таким образом, MPEG 1, 2 позволяют достичь очень высокого качества передачи видео, правда, и интернет-доступ для получения этого качества должен быть соответствующий.

Проблемы передачи

При трансляции потокового видео через интернет могут возникать проблемы, ухудшающие качество передачи. Среди них можно выделить несколько основных.

Перебои в связи

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

Маломощный компьютер

Даже если просмотр потокового контента осуществляется на мощном компьютере, но при этом открыто большое количество приложений, скорость загрузки видео будет невелика. Поэтому желательно закрыть все окна и программы, кроме браузера и проигрывателя.

Помехи на телефонной линии

Эта проблема актуальна только для пользователей, которые выходят в интернет через dial-up. Всевозможные потрескивания, щелчки и прочие шумы снижают качество передачи. Решением этой проблемы может быть использование более качественного доступа в интернет посредством cable или DSL.

Как сохранить видео на диск

Существует несколько способов сохранения потокового видео на диск. Самый простой - определение ссылки на файл и последующая его загрузка любым менеджером закачки.

Обычно ссылка скрыта в метафайле (RAM, ASX, SMIL). Если кликнуть правой кнопкой мыши по ссылке на видеофайл в окне браузера и выбрать команду "Save target as ...", метафайл будет сохранен на жесткий диск. После этого его можно открыть в любом текстовом редакторе (например, в Блокноте) и скопировать ссылку на файл. Если метафайл защищен паролем или скрыт при помощи JavaScript, Flash и т.д., можно попытаться открыть файл в плеере и просмотреть его свойства.

Например, чтобы увидеть ссылку на видео файл в RealOne Player, нужно выполнить команду View > Clip > Clip Info или View > Clip > Clip Source. В качестве альтернативы этому способу можно использовать программы, позволяющие отследить источник файла, например URLSnooper.

Если ссылку определить не удалось, можно попробовать использовать для загрузки специальные программы. Их можно условно разделить на два типа: менеджеры закачки, поддерживающие протоколы, которые используются при передаче потокового видео, и программы для захвата видео потока. Первые позволяют скачать файл с сервера на жесткий диск, а вторые - перехватить его в процессе просмотра и записать отдельным файлом.

HiDownload

Основное преимущество этого менеджера перед аналогичными - возможность записи потоков в форматах Windows Media и RealVideo. HiDownload поддерживает все стандартные протоколы, которые используются для передачи потокового видео. При помощи программы можно также загружать потоковое видео, защищенное паролем.

Net Transport

Бесплатная программа, работающая с большинством потоковых протоколов. Поддерживает протоколы HTTP, HTTPS, FTP, MMS (Microsoft Media Services), и RTSP (Real-Time Streaming Protocol). Как и большинство современных download-менеджеров, Net Transport может разбивать скачиваемый файл на отдельные части, что увеличивает скорость передачи данных. Net Transport позволяет загружать видео в форматах Windows Media и RealVideo, защищенное паролем.

Offline Explorer

Оффлайн-браузер, позволяющий скачивать файлы по протоколам HTTP, FTP, HTTPS, MMS и RTSP. Программу особенно удобно использовать для загрузки больших файлов. Программа доступна в трех версиях, и только две из них (Pro и Enterprise) поддерживают потоковые протоколы.

WM Recorder

WM Recorder записывает потоковое видео в формате Windows Media в процессе просмотра через Windows Media Player. Потоковые данные перехватываются и записываются в файл ASF, который впоследствии может быть воспроизведен любым проигрывателем, поддерживающим этот формат. WM Recorder поддерживает докачку файлов при последовательной передаче. При передаче в реальном времени докачка невозможна. Недостатком WM Recorder можно считать невозможность перехвата файлов, защищенных DRM (Digital Rights Management).

При попытке сохранения видеопотока можно столкнуться с проблемой недостаточной пропускной способности линии. Видео высокого качества требует и большой скорости соединения. Однако, в некоторых случаях возможно сохранить видео высокого качества и при низкоскоростном коннекте. Если используется передача в реальном времени, видео поток не может быть записан на скорости, которая превышает скорость вашего соединения. Если же передача ведется последовательным способом, это возможно. Для этого нужно изменить настройки пропускной способности канала. Некоторые утилиты, например, упомянутые выше HiDownload и WM Recorder позволяют сделать это автоматически.

воскресенье, 21 сентября 2008 г.

IP-PBX Asterisk - Часть 1 - Сборка сервера

На самом деле ASTERISK не требователен к железу, если вы не планируете обслуживать до нескольких сотен и тысяч соединений одновременно. Для средней организации, в 50-100 сотрудников будет достаточно сервера:

CPU: 2.8 GHz
RAM: 2x512Mb
HDD: 80GB
LAN: 100/1000Mb

Операционной ситемой в данном случае выступает DEBIAN LINUX r3. При установке выбераем минимальную установку. Все что нужно доустановим позднее.

Ещё раз уточню свою первую задачу - установить и настроить Asterisk для работы в качестве офисной АТС по протоколу SIP, настроить несколько рабочих мест, организовать выход в ТфОП через VoIP-сеть, а также используя FXO-шлюз(ы) и опытным путём определить максимальную нагрузку для полученной схемы.
Итак, следуя вышеупомянутому алгоритму, я проверил наличие, скачал и установил следующие пакеты: glibc-devel, kernel-devel, kernel-header, db-devel, openssl, openssl-devel, gcc, cpp, binutils, bison, expat-devel и ncurses.Все пакеты устанавливаются с помощью команды:
$ sudo apt-get install название_пакета

Если же вы не знаете точное навание пакета, то можно и поискать его:
$ sudo apt-cache search название_пакета

Также советую почитать следующие руководства:"Asterisk Handbook (draft)" и "Asterisk: The Future of Telephony". Оказалось, что для полноценной поддержки функции Music On Hold и конференций необходимо установить псевдоустройство ztdummy, входящее в состав пакета zaptel.
Ну вот, некоторые немаловажные моменты прояснились, и теперь можно приступить к установке.
Сначала скачиваем самые свежие версии необходимых пакетов (пока неясно, насколько необходимы пакеты libpi и asterisk-sounds, но по ходу разберёмся):
# cd /usr/src/
# wget -–passive-ftp ftp.digium.com/pub/asterisk/asterisk-1.*.tar.gz
# wget -–passive-ftp ftp.digium.com/pub/asterisk/asterisk-sounds-*.tar.gz
# wget -–passive-ftp ftp.digium.com/pub/zaptel/zaptel-*.tar.gz
# wget -–passive-ftp ftp.digium.com/pub/libpri/libpri-*.tar.gz

Дальше распаковываем их:
# tar zxvf zaptel-*.tar.gz
# tar zxvf libpri-*.tar.gz
# tar zxvf asterisk-*.tar.gz
# tar zxvf asterisk-sounds*.tar.gz

Первым устанавливаем zaptel. Перед началом установки надо отредактировать файл Makefile, чтобы включить модуль ztdummy. Для этого переходим в папку /usr/src/zaptel-VERSION/, открываем Makefile, находим строчку
MODULES:=zaptel tor2 torisa wcusb wcfxo wctdm wctdm24xxp \
ztdynamic ztd-eth wct1xxp wct4xxp wcte11xp pciradio \
ztd-loc # ztdummy

и убираем в ней решётку перед ztdummy.
Дальше идёт стандартная процедура компиляции и установки пакета:
# make clean
# make
# make install

После этого надо загрузить модуль ztdummy:
# modprobe ztdummy

Дальше устанавливаем пакет libpri:
# cd /usr/src/libpri-VERSION
# make clean
# make
# make install

И последним устанавливаем сам asterisk:
# cd /usr/src/asterisk-VERSION
# make clean
# make
# make install
# make samples

Последняя команда нужна для установки демонстрационных настроек в папку /etc/asterisk. Кроме того, можно запустить команду make config для установки Asterisk в автозагрузку.
Для libpri и asterisk никаких специфических настроек перед установкой проводить не требуется.
В пакете asterisk-sounds содержатся дополнительные звуковые файлы для функций голосовой подсказки. Его можно установить при помощи следующих команд:
# cd /usr/src/asterisk-sounds-VERSION
# make install

Вот и всё, на этом установка Asterisk завершена.

Время переходить на IP

Речь пойдёт о перспективном современном веянии в российских телекоммуникациях (или даже "инфокоммуникациях", как сейчас модно говорить) - переводе традиционной телефонной связи на базу IP. Сейчас многие телекоммуникационные вендоры приходят к необходимости создания переходных решений. Кто-то приходит со стороны IP, кто-то со стороны TDM. И многие традиционные операторы ощущают необходимость миграции в IP.
Но обо всём по порядку...

"Московскому телефону исполнилось 125 лет!" - гласят надписи на счетах самой крупной (до недавних пор единственной) в Москве телефонной компании. Задумайтесь, уже примерно полтора века развивается в России и во всём мире телефонная связь!
Если обратиться к началам этого развития, можно вспомнить и телефоны, связанные каждый с каждым, и ручные телефонные станции, и первые шаговые АТС. Дальше, с увеличением популярности и потребности в телефонной связи появились декадно-шаговые и координатные АТС с увеличенной ёмкостью и производительностью. С развитием техники и, в частности, электроники сравнительно недавно появились различные электронные и цифровые телефонные станции. Параллельно с процессом развития систем коммутации развивались и технологии связи между станциями и абонентами. Линии связи прошли путь развития от воздушных проводов и подвесных кабелей до волоконно-оптических соединительных линий. Декадная импульсная абонентская и межстанционная сигнализация сменилась аналоговой двухтональной многочастотной (DTMF) и цифровой (DSS, CCS) сигнализацией.
Примерно в то же время, когда появились первые цифровые коммутационные станции, начали своё развитие и сети передачи данных общего пользования (СПД ОП). И этот процесс оказался более стремительным и бурным, чем развитие телефонных сетей. Сети эти сейчас тесно связаны, переплетаются и накладываются одна на другую.
За свою сравнительно короткую историю СПД претерпевали многочисленные смены стандартов, протоколов сигнализации, физических носителей и т.д. Сейчас же лидирующую позицию практически повсеместно заняло семейство протоколов IP (Internet Protocol) вне зависимости от физической среды, а получившуюся универсальную всемирную СПД принято называть просто Internet.
А какая же нынче обстановка сложилась в российских телефонных сетях и СПД? Налицо два процесса: повсеместное распространение IP-сетей и постепенный выход из строя старой коммутационной базы в телефонных сетях. С одной стороны, стремительный рост спроса на доступ в Интернет заставляет операторов строить собственные СПД (IP-сети), а с другой стороны, выход из строя старого телефонного коммутационного оборудования заставляет операторов заменять выработавшие свой ресурс старые станции новыми цифровыми и, соответственно, обновлять телефонные сети. И в результате у многих операторов складывается ситуация, когда параллельно функционируют две сети: IP-сеть и телефонная сеть (TDM).
Современные технологии предлагают операторам несколько возможных путей развития. Как уже неоднократно говорил и писал И.О. Масленников (директор по развитию бизнеса компании МФИ Софт), можно покупать простенькие, сравнительно недорогие цифровые TDM-коммутаторы взамен выходящих из строя, но производителей таких станций осталось немного; можно заменить целиком всю сеть и построить IMS, что наверняка влетит оператору в копеечку; а можно покупать телефонные коммутаторы построенные на базе IP.
Кроме своей популярности, чем же так привлекательны могут быть IP-коммуникации для телефонных операторов? Есть несколько интересных особенностей. Например, дешевизна инсталляции и эксплуатации IP-сетей по сравнению с ТфОП, простота разработки и внедрения новых голосовых сервисов и услуг, интеграции с различными веб-сервисами. Как сказал Алексей Найдёнов (генеральный директор ITooLabs) на 12-й конференции по IP-телефонии и IP-коммуникациям: "С голосом в IP-пакете я могу сделать всё, что угодно!". Чем он, собственно, успешно и занимается, а также этим ещё более успешно занимаются такие гиганты как Google, Skype, Yahoo! и многие другие.
Сейчас операторы в большинстве своём предоставляют лишь услугу базового вызова и постепенно становятся поставщиками транспорта для IP-коммуникаций, а большую часть интересных потребителю услуг и сервисов предоставляют сторонние организации. Переводя же свои сети на базу IP и внедряя современные услуги и сервисы на своей собственной сети, оператор может сохранять свои позиции, оставаясь в мейнстриме, в то время как клиент не будет бродить по Интернету в поисках интересных ему сервисов у сторонних провайдеров, а будет лоялен к своему оператору, у которого есть все необходимые сервисы.
Таким образом, меняя устаревшие и вышедшие из строя TDM-коммутаторы на IP-телефонные коммутаторы, оператор может не только сохранять большую часть своей TDM-инфраструктуры, но и заинтересовывать своих клиентов новыми услугами и сервисами. А уж решений на нашем и зарубежном рынке для такого постепенного перехода на IP-коммуникации сейчас довольно много. В качестве примера могу привести "РТУ" от МФИ Софт, NGN решения от НТЦ Протей, "Сапфир" от ФГУП ЛОНИИС и т.д. "Ищущий да обрящет!"

SIP, H.323, IAX2

Каждый раз, при интеграции оборудования, проектировании сети, необходимо определиться с VoIP протоколами, которые мы будем использовать. На сегодняшний день широкое распространение получили протоколы SIP (Session Initiation Protocol) и рекоммендация H.323, но некоторые операторы начинают использовать IAX2 (Inter-Asterisk eXchange) для организации голосовых потоков между удаленными терминалами. Для того, чтобы разобраться в преимуществах и недостатках таких вариантов, предлагается весьма короткая обзорная заметка.

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

Наиболее удачная реализация в смысле экономии трафика у IAX2, особенно при большом количестве звонков с использованием технологии транков. Далее, SIP и H.323 используют по пять портов (три минимум), IAX2 – только один, что увеличивает конроллируемость и гибкость сети. Также IAX2 поддерживает работу через межсетевые экраны полностью, SIP и H.323 – далеко не во всех случаях.

IAX2 и SIP имеют различные способы для адрессации абонентов. H.323 в этом плане ограничен. Также IAX2 полностью отделяет параметры регистрации от идентификации абонента в сети, что безусловно удобно.

На текущий момент наиболее практичен SIP, как наиболее поддерживаемый. H.323 медленно уходит с рынка VoIP услуг, IAX2 же пока поддерживается только на установках с Asterisk.

Что такое ASTERISK?

Asterisk IP-PBX — Это проект с открытым исходным кодом компании Digium, первоначально начатый Марком Спенсером. Приложение работает на операционных системах GNU/Linux, FreeBSD и Solaris и предназначено для создания решений компьютерной телефонии. Имя проекта произошло от названия символа *, который в Unix и DOS операционных системах обозначает совпадение любой последовательности символов в именах файлов.


Asterisk, в комплексе с необходимым оборудованием, обладает всеми возможностями классической АТС, поддерживает множество VoIP протоколов и предоставляет функции голосовой почты, конференций, интерактивного голосового меню (IVR), центра обработки вызовов (постановка звонков в очередь и распределение их по агентам используя различные алгоритмы), запись CDR и прочие функции. Для создания собственной функциональности можно воспользоваться собственным языком Asterisk для написания диалплана, написав модуль на языке C, либо воспользовавшись AGI, который является гибким и универсальным интерфейсом для интеграции с внешними системами обработки данных, выполняемое через AGI может быть написано на любом языке программирования.

Asterisk распространяется по условиям двойной лицензии, благодаря которой одновременно с основным кодом, распространяемым по открытой лицензии GNU GPL, возможно создание закрытых модулей, содержащих лицензируемый код. Например модуль для поддержки кодека G.729.

Благодаря открытой лицензии, Asterisk активно развивается и поддерживается тысячами людей со всей планеты. В течение последних двух лет Asterisk приложения активно развиваются в Соединенных Штатах и уже заняли прочное место на рынке IT-технологий (более 1000 компаний, центры поддержки, online-консультации). В Россию данный продукт попал совсем недавно, но интерес российского потребителя растет, в первую очередь благодаря открытости системы. Многие компании применяют Asterisk в своих серийных VoIP устройствах, например компании Linksys, Nateks и т. п.