2 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Что такое видеозвонок

Что такое видеозвонок

  • Определение видеозвонка
  • История появления видеозвонков
  • Наше время
  • Как работают видеозвонки сегодня
  • Программы для видеозвонков
  • Как позвонить на аппаратные ВКС и видеотелефоны
  • Как сделать групповой видеозвонок?
  • Видеозвонки в браузере
  • Видеозвонки для безопасности

Реализуем видео звонки в iOS приложении (на примере детского монитора и без WebRTC)

В данном посте пойдет речь о том, как написать приложение — baby monitor, когда одно устройство (планшет) вы устанавливаете возле кроватки ребенка, а второе (телефон), берете с собой, скажем на кухню, и время от времени поглядываете за ребенком через экран.

Как новоиспеченный родитель, хочу сказать, что такое приложение экономит кучу нервов — не нужно прислушиваться к каждому шороху или детскому крику с улицы, можно одним взглядом убедиться, что c чадом всё в порядке. Немного о технической части: в приложении используется наша библиотечка iOS видеочата, включая серверную часть (сигналинг и TURN сервер для NAT traversal), это всё в открытом доступе. Видеопоток будет работать как через Wi-Fi, так и через 2G/3G/4G. В аппсторе до недавнего времени не было приложения детского видеомонитора, который бы работал через мобильный интернет (видимо из-за трудностей с NAT traversal), но пока мы прокрастинировали готовили пост, одно из приложений лидеров выпустили платную версию с поддержкой этого функционала. В любом случае, статья будет полезна вам, если вы хотите запилить видеомониторинг или двухсторонний видеозвонок в своём iOS приложении. Специально указываем, что это версия без WebRTC, потому что о веб-совместимой версии (как и об Android) собираемся написать отдельно, там есть свои нюансы.

ТЗ:
В нашем случае приложение представляет собой мониторинг маленьких детей (грудного возраста) посредством мобильного устройства под управлением iOS. При старте приложение должно было найти соседнее устройство, синхронизироваться с ним и далее выполнить видео-звонок. В ходе соединения, родитель видит ребенка, а также может управлять устройством на той стороне — включить свет (вспышку), проиграть колыбельную, поговорить туда в микрофон.

Собственно, проект не тяжелый, основные сложности лежали в реализации 2х пунктов:

  • поиск и синхронизация устройств
  • видеосвязь

Рассмотрим эти пункты чуть подробнее:

Поиск и синхронизация устройств

Синхронизация происходит по сети Wi-Fi или Bluetooth. Погуглив, обнаружили 4 способа как это можно сделать. Приведем их краткое описание, преимущества и недостатки:

  1. Bonjour service — синхронизация по Wi-Fi. В интернетах найти такой семпл не составляет труда. Работает на iOS 6-7
  2. Core Bluetooth — работает, как бы это неожиданно ни звучало, по каналу Bluetooth с iOS 5 и выше. Но вот в чем нюанс — поддерживается только Bluetooth 4 LE.
  3. GameKit. Крутая штука. В принципе, все просто как двери. Работает нормально, на обычном bluetooth (для устройств iPhone 4 и даже ниже). Также работает Bonjour — и для WiFi сетей. Но есть небольшой недостаток — deprecated начиная с iOS 7.
  4. Multipeer Connectivity — новый фреймворк, добавленный в iOS 7. По сути, для нас это выглядело как аналог GameKit, только для iOS 7. Его мы в будущем и использовали.

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

Общий интерфейс такого сервиса выглядит так (префикс «BB» это от нашего названия приложения, вы, естественно, можете назвать как-то по-другому):

Далее наследуемся от BBCommonService в зависимости от вида подключения и переопределяем методы start- и stop-, clean, а также в нужных местах вызываем потом методы делегата.

Видеосвязь

Для видеосвязи мы использовали QuickBlox. Для начала нужно зарегистрироваться — в результате чего вы получите доступ к админ панели. В ней вы создаете свое приложение. Далее скачиваете сам фреймворк с официального сайта. Подключение более детально описано здесь — http://quickblox.com/developers/IOS-how-to-connect-Quickblox-framework. Если вкратце, то:

1) скачиваем Quickblox.framework, добавляем в проект, подключаем штук 15 библиотек — их список есть в туториале
2) После этого, нужно вернуться в админ панель, выбрать свое приложение и скопировать три параметра — Application id, Authorization key и Authorization secret в настройки проекта:

Все, теперь можно работать.

1. Сессия

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

Таким образом посылается запрос на создание сессии и ответ приходит в метод делегата:

2. Создание юзера или логин.

Для дальнейшей работы нам нужен пользователь. Без него никуда. Делается это тоже довольно просто:

Для этих и всех запросов ответ от сервера приходит в метод делегата completedWithResult:

Соответственно, логин/пароль при желании можно брать с UITextField’ов. В нашем случае, чтобы не заставлять пользователя еще что-то дополнительно вводить, мы делали скрытую авторизацию, поэтому создавали логин и пароль на базе vendorID.

3. Хранение информации о паре

После выполнения синхронизации, мы решили создать сущность Pair, в которой хранить свой id и оппонента (второе устройство, синхронизированное с данным). Также, ее не мешало отправлять где-нибудь на сервер, чтобы в будущем не делать синхронизацию. В этом нам помог модуль Custom Objects, который по сути является БД с настраиваемыми полями. Итак, выглядело это приблизительно следующим образом:

Единственное — тут нужно пойти в админ панель и во вкладке Custom Objects создать соответствующую модель с полями. Там все очень просто и интуитивно понятно, так что пример приводить не буду (на что нужно обратить внимание — поддерживаемые типы данных для полей — integer, float, boolean, string, file).

Если нужно достать с БД какие-нибудь сущности, делается это следующим образом —

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

Удалить кастомный объект еще проще — нужно только знать его ID.

Для нас это нужно когда юзер захочет рассинхронизировать свой ipad/ipod/iphone затем, например, чтобы связать его потом с другим устройством. В приложении мы предусмотрели для этого кнопочку «Unpair» в интерфейсе Settings.

4. Трансляция видеосигнала

Здесь уже чуть посложнее. Во-первых, мы должны кроме создания сессии и логина еще дополнительно залогиниться в чате, т.к. чат-сервер используется для видео сигналинга. Это делается следующим образом —

таким образом мы берем текущего пользователя и логиним его в чат, предварительно установив делегат. Если все хорошо, то практически сразу сработает один из методов:

в зависимости от исхода. Также, мы сразу вешаем на таймер отправку presence в случае успешного логина. Без них мы автоматически уйдем в оффлайн где-то через минуту.

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

«Звонящая» сторона вначале создает экземпляр при помощи

Делее настраиваем view для себя и оппонента если нужно, состояние звука (вкл/выкл) и дополнительные настройки — например useBackCamera:

и выполняем звонок:

Следующим шагом реализуем методы делегата согласно поведению. Если все успешно — у оппонента должен отработать следующий метод:

Надеемся на успешный исход 🙂 В нашем случае мы конкретно от стороны по своему настраиваем view и звук. Тут все одинаково как и в начале, с той лишь разницей, что в конце мы посылаем accept инициатору звонка.

У него должен сработать метод

И потом на обоих сторонах сработает

этот метод полезен для UI — например у вас крутится спиннер, пока все это дело происходит, и потом вы его прячете в этом методе. С этого момента должна работать видеосвязь.

Когда нужно закончить сеанс и «положить трубку» — вызываем

после чего срабатывает метод делегата на противоположной стороне

Имеется также версия этого метода с параметрами, на случай если вам необходимо что-то еще передать.

В данном случае используется стандартная аудио- видео сессия. В зависимости от ТЗ — если нужно например записывать видео и аудио и потом с ним что-то сделать — то вам лучше использовать кастомные аудио- видео сессии. SDK это позволяет. В этой статье это не рассматривается, но более подробно можно почитать здесь: http://quickblox.com/developers/SimpleSample-videochat-ios#Use_custom_capture_session

Итак, видеосвязь налажена. Теперь последнее что нужно сделать — это реализовать включение колыбельной на устройстве ребенка, поменять камеру, сделать скриншот и т.д…
Все это делается довольно просто. Помните мы логинились дополнительно в чате? так вот — это еще один модуль, он так и называется — Chat 🙂
В нем можно отправлять сообщения. Что мы сделаем — просто будем отправлять разные сообщения, а на стороне оппонента их парсить и, в зависимости от сообщения, выполнять какие-либо действия — включить вспышку например или еще что-нибудь.

Отправка сообщения делается просто (мы вынесли в отдельный метод) —

Text — это и есть наш тип сообщения в данном случае.

Сообщение приходит сюда —

Все остальное — это UI и некоторые дополнительные фишки. В целом, все получилось неплохо. В конце хотел бы обратить внимание на два нюанса:

1) срок жизни сессии — 2 часа. Он автоматически продлевается после каждого выполненного запроса. Но если например юзер свернул приложение на полдня, то ее нужно как-то восстановить. Делается это несложно — при помощи extended request:

запускать можно, например, в applicationWillEnterForeground .

2) Метод — (void)completedWithResult:(Result *)result очень быстро разрастается, что становится довольно неудобно. Почти каждый метод есть в 2х версиях — простой и с контекстом. Как вариант можно использовать блоки — передавать их как контекст. Вот как это выглядит на примере создания сессии:

Так намного проще.

На этом, в принципе, всё. Если что не понятно — пишите в личку или комментарии. Здесь можно добавить, что приложение, о котором шла речь в данной статье, было рекомендовано Apple, вышло в US Appstore на первые места и из трёх платных in-app purchase, функция видеомонитора оказалась самой востребованной. Мы много работаем над приложениями, связанными с видео звонками под iOS, Android, Web — обычно это дейтинг/социалки или безопасность/видеонаблюдение, так что буду рад помочь советом или примерами кода, если вы делаете что-то подобное.

Скорость и стабильность

Никаких резких разъединений и обрывов. Когда это технически возможно, Ваши звонки будут проходить по принципу пиринговой сети. Такое соединение организуется напрямую между пользователями, поэтому Вы сможете связаться с собеседником максимально быстро. Если возможности прямого подключения нет, трафик проходит через серверы ВКонтакте без сохранения данных.

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

Вы можете без препятствий переключаться между Wi-Fi и мобильным интернетом. Никаких неожиданностей. Звонки автоматически адаптируются к скорости и типу соединения, чтобы потреблять как можно меньше данных без вреда для качества связи.

Это одно из малоизвестных приложений для видеочатов. Однако оно в действительности весьма неплохое. Можно настроить внешний вид приложения по своему усмотрению.

Можно использовать Wi-Fi или мобильный Интернет (2.5G/3G/4G).

Кроме того, во время разговора Вы можете рисовать каракули для того, чтобы сделать процесс общения более веселым.

Еще приложение позволяет создавать групповые чаты, шифровать диалог, а также имеет кроссплатформенную поддержку (т.е. поддерживает видеозвонки для разных мобильных платформ, а не только для Андроида).

JustTalk распространяется бесплатно, за дополнительную стоимость можно приобрести расширенный функционал.

ICQ New

Бесплатное приложение Mail.ru Group, в котором можно обмениваться текстовыми и аудиосообщениями, совершать голосовые и видеовызовы, а также проводить групповые аудио- и видеочаты. Имеется возможность использовать ICQ как на планшете или смартфоне, так и через веб-версию или версию для ПК. Особенностью сервиса является преобразование голосовых сообщений в текстовые и отправка фото и видео без сжатия и потери качества.

  • Доступно на: Web, Windows, macOS, iOS, iPadOS и Android
  • Максимальное количество участников в видеочате: 30
  • Возможность отправки файлов: фото, видео, документы

Выбираем мессенджер для android-устройств: голосовые и видеозвонки – Skype, Viber и WhatsApp

Оглавление

  • Вступление
  • Skype
    • Тарифы и услуги
    • Звонки
    • Выводы
  • Viber
    • Тарифы и услуги
    • Звонки
    • Выводы
  • WhatsApp
    • Звонки и услуги
    • Выводы
  • Заключение

Вступление

Наша редакция продолжает рассмотрение программ для общения и звонков в Сети для операционной системы Android. В предыдущих статьях мы поговорили о текстовой составляющей таких топовых программ как Skype, Viber и WhatsApp, альтернативных им решений Messenger Facebook, ICQ и Line, а также менее известных, но не менее интересных imo, Tango и WeChat, универсальных Xabber, Mail.Ru Agent и IM+, популярных Hangouts, Telegram и 4talk Messenger. Пришло время проверить их голосовые и видеовозможности.

реклама

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

В качестве тестового оборудования применялся планшет DEXP Ursus 8EV2 3G (Android 4.4.2, процессор MT8382, 4 х 1300 МГц, 1 Гбайт ОЗУ).

Skype

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

Иной раз несведущий человек все видеозвонки через любое приложение называет «скайпом», но это уже из области анекдотов, поэтому перейдем к разбору полетов.

Тарифы и услуги

Skype предлагает для ознакомления бесплатный первый месяц звонков на мобильные и стационарные. При этом вы автоматически становитесь абонентом тарифного плана «Мир» с платой 10.49 евро в месяц. Конечно же, от этой опции можно отписаться, однако сделать это надо в течение 27 дней, иначе с вашей банковской карты автоматически спишется ежемесячный платеж.

Не обошлось и без подводных камней – безлимитные звонки по Беларуси доступны только на стационарные телефоны, а вот на мобильные можно позвонить лишь в Гонконге (САР), Гуаме, Канаде, Китае, Пуэрто-Рико, Сингапуре, США и Таиланде.

реклама

Стоимость и тарифы приведены выше на скриншотах. Отметим, что минимальная стоимость звонка (поминутная тарификация) на стационарный телефон (по Беларуси) составляет 1.7 цента, на мобильный – 7.4 цента. Минимальный пакет минут на стационарные телефоны (равный 120 минутам) стоит 1.29 евро, на мобильные 60 евро/месяц за 60 минут.

Например, в Штаты можно позвонить дешевле, то есть 60 минут за 89 центов в месяц (на все форм-факторы телефонов), в Китай – ровно столько же, но пакет включает 120 минут, а вот звонок в Германию и того меньше – всего 49 центов за два часа разговора в месяц, но только на стационар. В случае с мобильными и «домашними» номерами придется платить 2.69 евро за 60 минут в месяц.

Таким образом Skype можно считать выгодным решением для звонков за границу, но отнюдь не по Беларуси. Что касается голосовых и видеовызовов со «скайпа» на «скайп», то тут полный безлимит.

Не обошлось и без подарочных карт, стоимость которых колеблется в диапазоне 10-60 долларов США. Кстати, если вы подписались на один из безлимитных тарифных планов и затеяли устроить небольшой call-центр или автообзвон, то долго пользоваться халявой не придется – обязательно забанят.

Звонки

реклама

Что касается звонков – как на мобильные, так и стационарные телефоны – то тут претензий нет. Конечно, в Зимбабве мы не звонили, но вот качество связи по Беларуси – отличное.

Правда, лучше всего разговаривать через гарнитуру, поскольку при звонке на стационар в небольшой городок Заринск, что в Алтайском крае, наблюдалась приглушенность голоса, как будто разговаривали с бункером, однако это можно списать на местную АТС-ку.

реклама

Качество видеозвонков в Skype известно всем. Естественно, все зависит от скорости соединения на обоих концах, а также фронтальных камер, но эти аспекты, думаем, читателю объяснять не надо.

Кстати, у приложения есть отдельная опция – Skype Wi-Fi, которая позволяет автоматически присоединяться к бесплатным точкам доступа или оплачивать услуги платных Wi-Fi-зон со своего кошелька в «скайпе». А что, очень удобно.

Теперь о нагрузке на систему. При видеосоединении она составляет 109.6 Мбайт при нулевой на процессор, что не так отличается от базовой в 0-0.7%/78-90 Мбайт.

Естественно, если вы затеете видеоконференцию, то показатель поползет вверх, однако это не так страшно. Например, Line при работе с сообщениями выдавал 0%/100-123 Мбайт, но о нем мы еще поговорим в дальнейшем.

реклама

Что касается входящего и исходящего трафика, то если хотите часто пользоваться Skype, стоит перейти на безлимитный интернет. За несчастные 18 секунд видео израсходовалось 10 Мбайт на исходящее соединение и 1.5 Мбайт на входящее. Зато голосовой вызов потребляет сущие «копейки», в районе одной пятой от видеовызова, оно и понятно.

Выводы

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

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

реклама

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

Заключение

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

Но чаще всего на телефон и компьютер устанавливают сразу несколько мессенджеров. У меня, например, есть Skype, Viber и WhatsApp. Еще для связи с родственниками я довольно часто использую Messenger Facebook.

Какое приложение больше всего нравится вам и почему? Напишите нам об этом в комментариях. Посмотрим, какая программа лидирует среди наших читателей.

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

Сохраняйте статью и делитесь ей с друзьями, если она помогла вам решить задачу.

Ссылка на основную публикацию
Статьи c упоминанием слов:
Adblock
detector