Голосовая и видеосвязь посредством компьютерных сетей стала популярной во всём мире с начала XXI века и в настоящее время широко используется как частными пользователями, так и в корпоративном секторе. Применение систем IP-телефонии позволяет компаниям операторам связи значительно снизить стоимость звонков (особенно международных) и интегрировать телефонию с сервисами Интернета, предоставлять интеллектуальные услуги.
IP-телефония не скоро вытеснит мобильную связь, но с каждым годом значимость IP-телефонии растет как в частном, так и корпоративном секторе. Деловые звонки удобнее проводить через IP-телефонию, так как это значительно дешевле и звонки имеют лучше качество связи. В домашних условиях частным пользователям так же выгоднее пользоваться IP-телефонией по тем же причинам. Появилась такая вещь как вебинары (онлайн-семинары) – разновидность веб-конференции, проведение онлайн-встреч или презентаций через Интернет. На данном этапе значительным недостатком IP-телефонии является потребность в стабильном интернет соединение.
Очень часто IP-телефония встречается как дополнительная часть какого-либо программного обеспечения. Голосовая связь через интернет имеет большое применение в сетевых компьютерных играх. Большинство мессенджеров, несмотря на главную функцию обмена текстовым сообщениями, также имеют функции голосовой и видео связи через IP-протокол.
IP-телефония или VoIP – телефонная связь по протоколу IP. Под IP-телефонией подразумевается набор коммуникационных протоколов, технологий и методов, обеспечивающих традиционные для телефонии набор номера, дозвон и двустороннее голосовое общение, а также видеообщение по сети интернет или любым другим IP-сетям. Сигнал по каналу связи передаётся в цифровом виде и, как правило, перед передачей преобразовывается (сжимается) с тем, чтобы удалить избыточность информации и снизить нагрузку на сеть передачи данных [1].
Функции и преимущества перед мобильной связью:
• возможность проведения конференции;
• переадресация звонка;
• автоматическое повторение номера;
• определение номера, звонящего;
• безопасные звонки, со стандартизованным протоколом (такие как SRTP);
• независимость от месторасположения;
• видеозвонок;
• обмен сообщениями и данными во время разговора;
• возможность подключения прямых номеров в любой стране мира.
IP телефония работает следующим образом. Голос в компьютере (или в IP-телефоне) преобразуется в цифровой сигнал и передается на компьютер (IP-телефон) вашего собеседника. Там он преобразуется в аналоговый сигнал и воспроизводится динамиком [2].
В случае, если звонок поступает на обычный телефон, сигнал проходит через IP-шлюз, который преобразует цифровой сигнал (VoIP) в аналоговый. То же самое происходит при звонках через IP-телефонию на мобильные телефоны.
Для передачи голоса через IP-сеть, он обычно сжимается специальной программой – кодеком. Это делается для увеличения скорости передачи, и, следовательно, для повышения качества связи. Кроме того, в целях безопасности сигнал может шифроваться (опять же кодеком). Поэтому связь между двумя VoIP терминалами возможна только если они имеют совместимые кодеки.
Кроме того, для того, чтобы два VoIP-терминала могли найти друг друга в сети (интернете) и начать сеанс связи, они оба должны поддерживать одинаковый протокол коммутации. Наиболее распространенным протоколом для этой цели является SIP.
В настоящее время самой популярной программой для VoIP является Skype. По данным 2014 года Skype имеет 40% объёма международного рынка голосовых звонков и более 500 миллиона пользователей по всему миру. Skype – бесплатное проприетарное программное обеспечение с закрытым кодом, обеспечивающее текстовую, голосовую и видеосвязь через интернет между компьютерами (IP-телефония), опционально используя технологии пиринговых сетей, а также платные услуги для звонков на мобильные и стационарные телефоны. Microsoft купили Skype в 2011 год. После этого произошла интеграция Skype во многие приложения Windows и Microsoft и выход на многих устройствах, однако прекратили выходить новые версии на платформе Linux. Основными недостатками Skype являются большое потребление оперативной памяти и ограничения, которые накладываются на бесплатную версию.
В настоящее время набирает популярность Discrod – бесплатное VoIP приложение, изначально предназначенное для игровых сообществ. Оно обрело некоторую популярность в сообществах разработчиков, таких как Reactiflux, благодаря возможности обслуживания большого количества пользователей. Discord имеет более богатую функциональность, чем Skype, однако его уклон в игровое сообщество мешает ему найти корпоративное применение. Так же из-за того, что проект поддерживается только пользователи, Discord уступает в количестве серверов, что иногда может привести к неполадкам.
Большинство популярных мессенджеров (Telegram, Viber, ICQ и т.д.) имеют функции IP-телефонии для проведение голосовых или даже видео звонков, однако эта возможность имеет второстепенный характер и не отличается большой функциональностью.
Популярные программные обеспечения VoIP имеют закрытый код, что осложняет написание собственного приложения для IP-телефонии. Также среди существующих библиотек есть проблема или слабой функциональности (Coccinella, Empathy), или прекращение разработки новый версий (Google Talk, Ekiga, KPhone) [3].
MicroSIP, Twinkle и Telephone не являются кроссплатформенным программным обеспечением, что ограничивает их в использование.
Jitsi является современной VoIP приложение с открытым исходным кодом. Однако, исходный код Jitsi написан на Java и не имеет раздельного с графическим интерфейсом кода, что затруднит разработку собственного приложения.
Blink, который также имеет открытый код, написан на Python, вследствие чего основная функциональность скрыта в многочисленных библиотеках Python, которые могу оказаться не с открытым доступом и переписывания библиотека для Python достаточно трудоемкий процесс.
Ring и Linphone являются бесплатным приложениями для IP-телефонии с открытыми исходным кодом. Оба приложения написаны С/С++ и имеют бек-енд часть отдельно от самого приложения в виде библиотек (libRing и libLinphone). Обе библиотеки предоставляют хорошую функциональность поэтому хорошо подходят для реализации собственного приложения для IP-телефонии. После просмотра исходных кодов библиотек был выбран libLinphone, который более глубокий и удобный в использования и для редактирования.
Linphone – кроссплатформенный программный клиент IP-телефонии в стандарте SIP с открытым исходным кодом, распространяемый по лицензии GNU GPL. Программа Linphone предназначена для организации аудио и видео-вызовов, а также обмена текстовыми сообщениями посредством интернета [4].
SIP-клиент Linphone имеет простой многоязычный (в том числе русский) графический интерфейс, основанный на GTK, и может быть использован на всех наиболее распространённых операционных системах: Mac OS, Microsoft Windows (XP и Vista), Linux, а также на мобильных устройствах iPhone, BlackBerry и других, с поддержкой ОС Android. В Linux также доступны консольные утилиты: интерактивный клиент (linphonec) и утилита для управления Linphone с помощью аргументов командной строки (linphonecsh).
Back-end приложения linphone в исходном коде расположен в отдельном месте и имеет название liblinphone. Liblinphone – высокоуровневая библиотека интеграция всех функций звонка, видео и SIP под одним API. Обычно IP-телефония состоит из двух вещей: медиа (передача аудио и видео, кодирование и декодирование данных и т.д.) и сигналы (начало звонка, получение вызова, принятие вызова и т.д.).
Mediastreamer2 является мощной и легковесной библиотекой для реализации медиапотоков, специализированной для IP-телефонии. Эта библиотека с открытым исходным кодом в liblinphone отвечает за все входящие и исходящие медиапотоки, включая захват/получение аудио и видео данных, кодирование и декодирование медиаданных и воспроизведение.
Belle-sip – бесплатная библиотека с открытым исходным кодом для работы с протоколом SIP. SIP – протокол передачи данных, описывающий способ установления и завершения пользовательского интернет-сеанса, включающего обмен мультимедийным содержимым (IP-телефония, видео- и аудиоконференции, мгновенные сообщения, онлайн-игры). Протокол описывает, каким образом клиентское приложение (например, софтфон) может запросить начало соединения у другого, возможно, физически удалённого клиента, находящегося в той же сети, используя его уникальное имя. Протокол определяет способ согласования между клиентами об открытии каналов обмена на основе других протоколов, которые могут использоваться для непосредственной передачи информации (например, RTP). Допускается добавление или удаление таких каналов в течение установленного сеанса, а также подключение и отключение дополнительных клиентов (то есть допускается участие в обмене более двух сторон – конференц-связь). Протокол также определяет порядок завершения сеанса. В liblinphone данный протокол используется для руководства работы начала и конца звонков, а также определения абонентов в сети. Данный протокол работы с SIP(прокси) сервером IP-телефонии.
ORTP – бесплатная библиотека с открытым исходным кодом для работы с протоколом RTP. RTP (Real-time Transport Protocol) был разработан как протокол реального времени, из конца в конец (end-to-end), для передачи потоковых данных. В протокол заложена возможность компенсации джиттера и обнаружения нарушения последовательности пакетов данных – типичных событий при передаче через IP-сети. Данный протокол используется в LibLinphone для реализации медиапотоков.
Библиотека liblinphone является бесплатным продуктом с открытым исходным кодом, которое позволяется реализовать функциональное приложение для IP-телефонии. Наличие исходного кода в свободном доступе позволяет лучше понять работу приложения IP-телефонии и дополнить библиотеку новой функциональностью. Liblinphone является легковестной и кроссплатформерной библиотекой, что позволяется написать приложение на любую систему или устройство.