Русский
Русский
English
Статистика
Реклама

Zoom

Security Week 37 атаки на системы дистанционного обучения

07.09.2020 18:22:46 | Автор: admin
В пятницу 4 сентября специалисты Лаборатории Касперского опубликовали отчет (расширенная версия в PDF) об атаках на системы дистанционного обучения.

Тема более чем актуальная: во II квартале миллионы школьников и студентов вынужденно перешли на онлайн-занятия. Соответственно выросло и количество атак как на пользователей платформ для дистанционного обучения, так и на сами платформы. В исследовании Лаборатории Касперского невозможно отделить сугубо образовательные сервисы от систем конференц-связи широкого профиля, поэтому отчет также дает представление об атаках на такие платформы, как Zoom и Google Meet.



Помимо платформ Zoom и Google специалисты Лаборатории Касперского изучали Moodle, Coursera, Blackboard и другие образовательные сервисы. На графике выше проблема показана под интересным углом: это количество заблокированных вредоносных программ, попавших на компьютеры пользователей под видом софта для конкретного сервиса.

Zoom со своим абсолютным лидерством ломает график количество атак на его пользователей за первое полугодие 2020-го выросло в 1400 раз. Помимо этого, число DDoS-атак на сами сервисы стало в пять раз больше. Значительно выросло и число попыток фишинга паролей для доступа к конференц-связи и учебным программам.



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

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

Что еще произошло



В канву креативного фишинга хорошо ложится исследование компании Cofense. Они обнаружили чуть более правдоподобный, чем обычно, метод кражи паролей к корпоративной почте, использующей облачную систему (как правило, на базе Office 365). Атака начинается с традиционного поддельного письма со ссылкой, но по клику по ней открывается фишинговая страница, где на фоне подгружается реальный сайт организации. В некоторых случаях e-mail потенциальной жертвы уже подставлен в поле для ввода.

Модераторы Apple случайно одобрили навязчивый рекламный софт Shlayer для запуска на компьютерах под управлением macOS (см. также новость на Хабре). Кроме того, из магазина приложений Google Play недавно удалили шесть программ со шпионом Joker.

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

Представители Microsoft анонсировали сервис Video Authenticator для борьбы с дипфейками. Конечным пользователям он не будет доступен напрямую по крайней мере, в анонсе про это ни слова. Сервис натренирован на датасете DeepFake Detection Challengе. Недавний конкурс алгоритмов на базе этого же датасета показал средние результаты передовые разработки определяли максимум 65% подделок.

В WordPress-плагине File Manager, набравшем 700 тысяч установок, закрыли уязвимость, но атаки на непропатченные страницы продолжаются.

В мессенджере WhatsApp закрыли шесть уязвимостей. Новость об этом появилась на новом сайте, где разработчики Facebook планируют и далее раскрывать подобную информацию. Одна из уязвимостей позволяет узнать IP-адрес пользователя нужно лишь отправить подготовленный стикер, который начнет загрузку картинки с произвольного сайта.

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

Компания Google увеличивает бюджет программы bug bounty, которая должна ответить на вопрос: Как злоумышленники могут использовать сервисы Google во вред?. Почта, Формы, Диск и другие решения корпорации регулярно используются для рассылки спама и распространения вредоносного ПО.
Подробнее..

Security Week 46 подсматривание паролей в телеконференциях

09.11.2020 16:20:11 | Автор: admin
Исследователи из Техасского университета в Сан-Антонио предложили необычный способ кейлоггинга через анализ движений головы и плеч на видеозаписи (новость, исследование в PDF). С довольно широкими допущениями сценарий выглядит так: подключаемся к видеоконференции, записываем жертву на видео. Если она во время звонка набирает текст на клавиатуре, мы можем ассоциировать движения в кадре как минимум с нажатием на определенные клавиши. Дальнейшее уточнение с использованием словарей позволило на практике угадывать текст в 75% случаев.


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

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

В научной работе есть дюжина ссылок на похожие прошлые исследования, чтобы оценить арсенал средств подслушивания и подсматривания. Среди них кейлоггинг по электромагнитному излучению, по движению глаз печатающего, по движениям планшета (предполагается, что мы снимаем заднюю часть устройства). Упоминается используемый на практике, в реальных атаках, анализ видео, где на клавиатуре банкомата или платежного терминала набирается PIN-код. Дальше еще интереснее: распознавание ввода через анализ вибраций сторонним датчиком или с помощью штатных сенсоров мобильного устройства или умных часов. Ближайшие по теме исследования определяют нажатия клавиш по собственно звуку клавиатуры, для этого даже видео не требуется. В Zoom-версии теоретически можно совместить методы анализа по звуку и картинке.


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

Пароль если и удастся украсть, то самый простой, который можно перебором определить за пять минут. Для минимально сложных вероятность определения составила 18,9%. Методика также страдает от простейших методов, затрудняющих отслеживание. Предполагается набор двумя руками, а значит, не получится определить набор букв пальцами одной руки. Требуется определить движение плеч, а этому мешает свободная одежда. В общем, это предельно непрактичное исследование, которое тем не менее впечатляет своей дерзостью и наверняка пригодится ИБ-энтузиастам.



Что еще произошло

Специалисты Лаборатории Касперского исследуют троян-шифровальщик для Linux, недавно замеченный в атаках на Департамент транспорта штата Техас и компанию Konica Minolta. Картинка выше результат работы трояна под Windows, предположительно используемого той же группировкой.


В треде из Твиттера выше описывается интересный эксперимент. На публичный репозиторий исходного кода заливается секретный ключ для доступа к серверу на Amazon Web Services, и отслеживается время до попытки входа на сервер. На хостинге GitHub токен AWS использовали уже через 11 минут, на GitLab через час после коммита.

В релизе iOS и iPadOS 14.2 компания Apple закрыла 24 уязвимости, три из них предположительно используемые в атаках.

Американские правоохранительные органы получили контроль над Bitcoin-кошельком, использовавшимся в операциях даркнет-рынка Silk Road (закрыт в 2013 году). Там с тех пор хранилось почти 70 тысяч биткойнов, на момент публикации это около миллиарда долларов США.

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

Перевод Как смотреть людям в глаза во время видеоконференций

03.08.2020 16:04:44 | Автор: admin

Вам понадобятся камера от старого ноутбука, полистирол и тонкое оргстекло




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

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

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

В моём случае такой мерой стало конструирование одного из проектов с сайта Hackaday устройства, разработанного одним видеоблоггером, и хитроумно использующего эффект полупрозрачного зеркала. По сути, подобную технологию используют для изготовления телесуфлёров, только в данном случае это выходит гораздо дешевле и из подручных материалов. С таким зеркалом можно видеть экран и одновременно смотреть в камеру. Я назвал это устройство Zoom Box, и оно помогает мне смотреть другим людям в глаза во время конференций в Zoom или Webex.

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


Всё дело в зеркалах: устройство представляет собой полистироловую коробку. Некоторые его компоненты показаны здесь (не в масштабе). В одной из стенок нужно вырезать углубление под веб-камеру, извлечённую из сломанного ноутбука. Среди других компонентов светодиоды на шайбах, радиаторы для них и полупрозрачное оргстекло.

На плате моей камеры расположены два микрофона, поэтому в идущем из неё отрезанном пучке проводов немудрено запутаться. Землю найти оказалось достаточно легко я просто проверил наличие контакта с медной пластиной платы. Тяжелее было найти питание +5 В сначала нужно было отыскать регулятор напряжения, к которому она подключается, а потом проверить ещё немного контактов.

Найти два сигнальных провода от USB достаточно легко это единственная пара перекрученных проводов. При соединении с USB-разъёмом оставалось только угадать, который из них data+, а который data. Мне повезло камера заработала при подключении ко всем компьютерам, с которыми я её опробовал, включая две машины под Windows и один Mac.

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

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


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

У меня осталось достаточно много кусков полистирола, поэтому я вырезал корпус для веб-камеры подходящей формы, и сделал в нём отверстие напротив объектива. Второй кусочек полистирола приклеен с обратной стороны, и удерживает камеру.

В качестве последнего украшения я добавил к своей коробке подсветку, помогающую вести конференции даже ночью. Обычное потолочное освещение часто отвлекает от разговоров, давая странные тени или мешая выбрать правильную экспозицию. Я использовал три мощных белых светодиода, у одного из которых была тёплая цветовая температура. Я подключил их последовательно и запитал от блока питания на 9 В через недорогую ШИМ-плату, предназначенную для управления моторами. Закрепил я их на радиаторы, один из которых находится сверху, а двое по бокам.

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

Перевод Делаем аппаратную кнопку выключения звука в Zoom

16.03.2021 10:10:28 | Автор: admin
Недавно Instagram показал мне рекламу специальной кнопки для выключения звука в Zoom, которая оказалась для меня уж очень актуальной.



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

Но у меня есть предубеждения. В Instagram рекламируется проект с Kickstarter. К тому же, я не хочу делать свой вклад в доходы от рекламы Facebook, даже нажимая на этот ролик. Выражение Дженни Оделл Бесплатных часов не бывает полностью описывает мою точку зрения на качество продуктов в рекламе Instagram. Кроме того, мой лимит на финансирование проектов с Kickstarter практически исчерпался.

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


Так что давайте соберём такую кнопку сами.

Первое, о чём стоит задуматься: какую кнопку мне будет приятно нажимать?

Я люблю клавиатуры с переключателями Cherry MX. Существует три типа механических переключателей: линейные, тактильные и кликающие. Линейный простейший тип переключателя, перемещающийся вверх-вниз почти без обратной связи. У тактильных переключателей в середине хода есть выступ, позволяющий почувствовать, когда произошло нажатие клавиши. А кликающие переключатели имеют более сильную тактильную обратную связь И производят слышимый клик при нажатии.

В обычной ситуации мы бы купили тестер переключателей, чтобы разобраться, какой тип нам отзывается, а ещё опросили бы своих коллег, какой звук должна издавать клавиатура, чтобы они нас не убили. Но мы посередине пандемии COVID, поэтому коллег рядом нет! Выберем переключатель Cherry MX Blue с удобной тактильной обратной связью, который при этом чрезвычайно громкий. На сайте Cherry MX этот переключатель называют кликающим и заметным, но это ещё очень слабо сказано.


Выглядит красиво, но можно придумать и кое-что получше. Если мне приятно нажимать переключатель Cherry MX Blue, то не будет ли ещё приятнее нажимать комически большой Cherry MX Blue?

И это Novelkeys Big Switch.


Он в 4 раза больше по каждой из размерностей и в 64 раза больше по объёму, чем обычный переключатель. У него даже есть огромный колпачок!


К сожалению Большой Переключатель не продаётся в корпусе, поэтому мне пришлось воспользоваться 3D-печатью. Красивый корпус нашёлся на Thingiverse: NovelKeys Big Switch Case. Всегда стоит поискать ремиксы на случай, если кто-нибудь решил усовершенствовать исходный дизайн. В данном случае нашёлся ремикс, в который добавлен отсек для Pro Micro, а переключатель устанавливается более плотно, поэтому я напечатал его.


Теперь, когда у нас есть корпус, нужна плата, которую мы вставим в него и прикрепим к переключателю.

У Pro Micro есть чип ATmega32U4, позволяющий эмулировать устройство USB HID, например, USB-клавиатуру. К тому же, эта плата имеет маленький размер.


В нижней части Большого Переключателя есть два металлических контакта.


При нажатии клавиши внутри переключателя происходит замыкание цепи между этими двумя контактами.


Взглянем на расположение контактов Pro Micro:


Можно подключить GND к одному металлическому контакту, а Pin 2 ко второму. Pin 2 это контакт цифрового ввода-вывода, который считывает HIGH, когда клавиша нажата, и LOW, когда нет.

Было бы ещё здорово иметь какой-нибудь наглядный индикатор состояния Mute, поэтому можно добавить светодиод.

Я заказал светодиод размером 10 мм:


И резистор на 220 ом:


Длинная нога светодиодов подключается к PWR, а короткая к GND. Мы вставим резистор между длинной ногой и другим контактом, чтобы снизить величину тока. Я выбрал Pin 9 в нижней части платы. Короткую ногу я соединил с GND. Мне показалась полезной эта страница о светодиодах и резисторах.

Между платой и переключателем я припаял такой провод 20 AWG:


В результате получилась вот такая конструкция:


Просто запихнём всё это в наш напечатанный корпус:


Теперь нужно написать код.

Я начал с кода, который Sparkfun написала для создания огромной Кнопки Сохранения, и немного его изменил.

Принцип заключается в следующем: при нажатии клавиши она посылает сочетание горячих клавиш Zoom включения и отключения звука (на Mac это Cmd-Shift-A). Нужно будет изменить настройки Zoom, чтобы это сочетание клавиш распознавалось, даже когда Zoom находится не в фокусе. Поставим флажок Enable Global Shortcut:


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

Но если просто включать-выключать светодиод при каждом нажатии на клавишу, то как сохранять синхронизацию с состоянием Mute в самом Zoom?

Удобство Pro Micro заключается в том, что она имеет и последовательное подключение. Обычно оно используется для печати отладочной информации в Arduino IDE, но мы можем использовать его для обеспечения синхронизации с состоянием включения звука в Zoom.

Вот код, который мы загружаем в саму Pro Micro:

#include "Keyboard.h"// OS parameterstypedef enum {  LINUX,  WINDOWS,  MAC} os_types;// Change this to your operating systemconst os_types OS = MAC;// Pinsconst int btn_pin = 2;const int led_pin = 9;// Constantsconst int debounce_delay = 50;              // ms// Globalsint btn_state = HIGH;int btn_prev = HIGH;unsigned long last_debounce_time = 0;int os_ctrl;int led_state = LOW;void setup() {  Serial.begin(57600); // opens serial port, sets data rate to 57600 bps    // Set up LED and button pins  pinMode(btn_pin, INPUT_PULLUP);  // Set the button as an input  pinMode(led_pin, OUTPUT);  digitalWrite(led_pin, led_state);  // Begin keyboard  Keyboard.begin();  // Switch to correct control/command key  switch(OS){    case LINUX:    case WINDOWS:      os_ctrl = KEY_LEFT_CTRL;      break;    case MAC:      os_ctrl = KEY_LEFT_GUI;      break;    default:      os_ctrl = KEY_LEFT_CTRL;      break;  }  // Get initial timestamp  Serial.println("started");  }void loop() {  // Read current state of the button  int btn_read = digitalRead(btn_pin);  // Remember when the button changed states  if ( btn_read != btn_prev ) {    last_debounce_time = millis();  }  // Wait before checking the state of the button again  if ( millis() > (last_debounce_time + debounce_delay) ) {    if ( btn_read != btn_state ) {      btn_state = btn_read;      if ( btn_state == LOW ) {        // Send cmd+shift+a        Keyboard.press(KEY_LEFT_SHIFT);        Keyboard.press(os_ctrl);        Keyboard.press('a');        delay(100);        Keyboard.releaseAll();        Serial.println("pressed");        if (led_state == LOW) {          led_state = HIGH;        } else {          led_state = LOW;        }        digitalWrite(led_pin, led_state);      }    }  }  // Remember the previous button position for next loop()  btn_prev = btn_read;  if (Serial.available() > 0) {    String incomingString = Serial.readStringUntil('\n');    if (incomingString == "muted") {      led_state = LOW;    } else if (incomingString == "unmuted") {      led_state = HIGH;          }    digitalWrite(led_pin, led_state);      }  }

Дальше мы можем добавить Applescript, сообщающий о текущем состоянии Zoom. Я нашёл Zoom-плагин для устройства Streamdeck, содержавший исходный Applescript, и изменил его так, чтобы он сообщал о том, открыт ли Zoom, и каково состояние его звука. Также я модифицировал скрипт, чтобы он выводил JSON.

set zoomStatus to "closed"set muteStatus to "disabled"tell application "System Events"if exists (window 1 of process "zoom.us") thenset zoomStatus to "open"tell application process "zoom.us"if exists (menu bar item "Meeting" of menu bar 1) thenset zoomStatus to "call"if exists (menu item "Mute audio" of menu 1 of menu bar item "Meeting" of menu bar 1) thenset muteStatus to "unmuted"elseset muteStatus to "muted"end ifend ifend tellend ifend tellcopy "{\"mute\":\"" & (muteStatus as text) & "\",\"status\":\"" & (zoomStatus as text) & "\"}" to stdout

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

$ osascript get-zoom-status.scpt{"mute":"muted","status":"call"}

Затем я написал небольшое приложение на Node, используемое в качестве посредника между Pro Micro и этим скриптом:

const { exec } = require('child_process');const SerialPort = require('serialport');const Readline = require('@serialport/parser-readline');const port = new SerialPort('/dev/tty.usbmodemHIDPC1', {    baudRate: 57600});var checkStatus = function() {    console.log('Checking status...');    exec('osascript get-zoom-status.scpt', (error, stdout, stderr) => {        if (error) {            console.error(`exec error: ${error}`);            return;        }        var status = JSON.parse(stdout);        if (status.mute == 'unmuted') {            port.write('unmuted');        } else {            port.write('muted');        }    });}const parser = port.pipe(new Readline({ delimiter: '\r\n' }))parser.on('data', function (data) {    if (data == "pressed") {        console.log('Button pressed.');        checkStatus();    }})checkStatus();setInterval(checkStatus, 30000);

Этот скрипт выполняет две задачи. При нажатии кнопки он отправляет плате Pro Micro через последовательный порт команду нажато, при этом запускается Applescript для определения текущего состояния звука в Zoom. Затем он отправляет плате Pro Micro команду звук выключен или звук включен, благодаря чему светодиод переключается в соответствующее состояние. Также я создал таймер, запускающий скрипт через каждые 30 секунд на случай, если я случайно отключу или включу звук через интерфейс Zoom, а не через кнопку, в противном случае состояние будет обновляться только при нажатии кнопки.

Вот как выглядит кнопка при использовании в звонке через Zoom:


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



На правах рекламы


Закажите сервер и сразу начинайте работать! Создание VDS любой конфигурации в течение минуты. Эпичненько :)

Подробнее..

Перевод Как я сделал кнопку выхода из Zoom

17.03.2021 16:04:48 | Автор: admin

2020 год однозначно можно назвать годом Zoom. Такого количества онлайн-встреч, кажется, не было никогда. И в начале 2021 пока изменений не видно. Но есть способы разнообразить это и заодно немного повеселиться. Эта кнопка аварийного выхода из Zoom позволяет мгновенно выйти из конференции. Она проста в изготовлении и требует очень небольшого опыта работы с электроникой. Я сделал её, потому что я всегда искал кнопку выхода в нижней части экрана и, казалось, всегда был тем человеком, который уходил с каждого собрания последним. Теперь, когда я сделал кнопку аварийного выхода, я могу уйти с любого собрания Zoom как чемпион. Я бы сказал, что качество моей жизни улучшилось на 357 % (плюс-минус).


Запчасти:

(X1) Блок аварийной кнопки.

(X1) Контроллер Adafruit Trinket M0.

(X1) Микро-USB кабель.

(X2) 22AWG M4 Вилочная клемма.

(X2) 6-дюймовые многожильные провода.

(X1) Кнопка мгновенного действия (опционально).

Инструменты:

(X1) Паяльник.

(X1) Инструмент для зачистки проводов.

(X1) Отвёртка.

(X1) Канцелярский нож.

Шаг 1. Установите программное обеспечение

Этот проект предполагает, что у вас есть некоторые практические знания об Arduino. Тем не менее я остановлюсь на процессе установки программного обеспечения.

Прежде всего загрузите Arduino IDE, если вы ещё это не сделали.

Затем вам нужно будет добавить Adafruit Trinket M0 в Arduino IDE. Самый простой способ сделать это следовать инструкциям по установке на странице Adafruit.

Наконец, настройте плату следующим образом

Tools > Board > Adafruit Trinket M0.

Tools > Port > /dev/cu.usbmodem (или похожие).

Шаг 2. Запрограммируйте контроллер

Загрузите в контроллер следующий код:

// ******************************************************// //            Code for quitting Zoom quickly////           Designed for Adafruit Trinket M0//                   by Randy Sarafan////               For more info check out://  https://www.instructables.com/Easy-Zoom-Quit-Button///// ******************************************************// Add the keyboard library#include <Keyboard.h>void setup() {     // Configure Pin 2 as input switch.    // Triggered when connected to ground.     pinMode(2, INPUT_PULLUP);    // Start running the board as a virtual computer keyboard    Keyboard.begin();  }void loop() {      // Check for a button press event    if (digitalRead(2) == LOW) {           // Press command w and wait 1/10 second        Keyboard.press(KEY_LEFT_GUI);        Keyboard.press('w');        delay(100);            // Release all keyboard keys        Keyboard.releaseAll();        // Press the return key and wait 1/10 second        Keyboard.press(KEY_RETURN);        delay(100);            // Release all keyboard keys        Keyboard.releaseAll();        // Wait for the pushbutton to be released before resuming        while (digitalRead(2) == LOW){           delay(1000);        }     }}

Шаг 3. Присоедините разъёмы

Отрежьте два провода диаметром 6 дюймов. Предпочтительно, чтобы один был чёрным (для заземления), а другой любого другого цвета, который вам нужен.

Зачистите один конец каждого провода и обожмите клеммы вилки на концах каждого из них.

Шаг 4. Припаяйте провода.

Припаяйте чёрный провод к земле.

Другой провод припаяйте к контакту 2.

Примечание: если вы не умеете паять, вы можете узнать, как это сделать, в моей инструкции Введение в пайку.

Шаг 5. Вставьте USB

Найдите резиновую втулку корпуса.

С помощью лезвия бритвы сделайте небольшую прорезь, чтобы пропустить через неё конец USB-кабеля, а затем сделайте это.

Шаг 6. Подключите USB

Установите резиновую втулку в корпус, а затем подключите кабель USB к контроллеру Trinket M0.

Шаг 7. Замените кнопку (необязательно)

Блок аварийного выключателя поставляется с блокирующим выключателем. Это означает, что, когда вы нажимаете на него, кнопка фиксируется на месте и остается там, пока вы её не повернёте и не отпустите.

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

Для этого я просто разобрал фиксирующую кнопку и вынул её из корпуса. Затем я разобрал и вместо этого установил кнопку мгновенного действия.

Шаг 8. Подключите коммутатор

Внутри коммутатора есть два набора соединений. Один нормально открытый (не подключён), а другой нормально закрытый (подключён). Мы хотим подключить два провода к нормально разомкнутому контакту. Таким образом, при нажатии кнопки соединение закрывается.

Обычно эти соединения маркированы. В моём переключателе этого не было, но корпус был чистым, и я мог видеть, какое соединение было тем, которое обычно не подключается к клеммам.

Я прикрепил плоские клеммы на печатной плате к этим двум клеммам с помощью крепёжных винтов.

Примечание: не беспокойтесь, если вы ошибётесь. Просто подключите провода к другому набору клемм.

Шаг 9. Закройте корпус

Установите крышку на корпус и закрепите её крепёжными винтами.

Шаг 10. Закройте Zoom!

Чтобы использовать это, просто подключите его к USB-порту.

Когда вы будете готовы выйти с собрания в Zoom, просто нажмите кнопку.

Вот и всё.

Такая кнопка пригодится и на наших вебинарах, которые мы на регулярной основе проводим для наших студентов на всех курсах. На них менторы разбирают со студентами особо сложные темы, попутно отвечая на вопросы. Неважно, какое направление вы выберете Этичный хакинг, Data Science илиMachine Learning на каждом из них вы найдёте современную программу и внимательную службу поддержки.

Узнайте, как прокачаться в других специальностях или освоить их с нуля:

Другие профессии и курсы
Подробнее..

Настраиваем экспорт IPFIX на VMware vSphere Distributed Switch (VDS) и последующий мониторинг трафика в Solarwinds

26.06.2020 08:09:31 | Автор: admin
Привет, Хабр! В начале июля Solarwinds анонсировал релиз новой версии платформы Orion Solarwinds 2020.2. Одно из нововведений в модуле Network Traffic Analyzer (NTA) поддержка распознавания IPFIX-трафика от VMware VDS.



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

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

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

Настройка трафика от VDS


Начнём с добавления экземпляра vCenter в Solarwinds. После этого NTA будет обладать информацией о конфигурации платформы виртуализации.

Перейдите в меню Manage Nodes, далее Settings и выберите Add Node. После этого нужно ввести IP-адрес или полное доменное имя экземпляра vCenter и выбрать VMware, Hyper-V, or Nutanix entities в качестве метода опроса.

image

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

image

В течении некоторого времени будет выполняться начальный опрос экземпляра vCenter, обычно 10-20 минут. Нужно дождаться завершения, а уже потом включить экспорт IPFIX на VDS.

После настройки мониторинга vCenter и получения инвентарных данных по конфигурации платформы виртуализации, включим на коммутаторе экспорт записей IPFIX. Самый быстрый способ сделать это через клиент vSphere. Перейдем на вкладку Networking, выберем VDS и на вкладке Configure найдём текущие настройки для NetFlow. VMware использует термин NetFlow для обозначения экспорта потока, но фактический протокол, который используется IPFIX.

image

Чтобы включить экспорт потока, выберите Settings в меню Actions вверху и перейдите к Edit NetFlow.

image

В этом диалоговом окне введите IP-адрес коллектора, который по совместительству является экземпляром Orion. По умолчанию обычно используется порт 2055. Рекомендуем оставить поле Switch IP Address пустым, что приведет к получению потоковых записей, получаемых именно от гипервизоров. Это даст гибкость при дальнейшей фильтрации потока данных от гипервизоров.

Оставьте поле Process internal flows only отключенным, что позволит видеть все коммуникации: как внутренние, так и внешние.

Как только включите экспорт потока для VDS, нужно будет включить его также и для распределенных порт-групп, от которых хотите получать данные. Самый простой способ сделать это щелкнуть правой кнопкой мыши на панели навигации VDS и выбрать Distributed Port Group, а затем Manage Distributed Port Groups.

image

image

Откроется диалоговое окно, в котором нужно установить флажок Monitoring и нажать Next.

На следующем шаге можете выбрать определённые или все группы портов.

image

На следующем шаге переключите NetFlow на Enabled.

image

Когда на VDS и распределенных порт-группах включен экспорт потока, вы увидите, что записи потоков для гипервизоров начинают поступать в экземпляр NTA.

image

Гипервизоры можно увидеть в списке источников данных потока на странице Manage Flow Sources в NTA. Переключитесь на Nodes.

image

Результаты настройки вы можете увидеть на демо-стенде. Обратите внимание на возможность провалиться на уровень узла, протокола взаимодействия и т.д.



Интеграция с другими модулями Solarwinds в одном интерфейсе, позволяет проводить расследования в различных разрезах: посмотреть какие пользователи входили на виртуальную машину, производительность сервера (посмотреть демо), и приложений на нём, посмотреть связанные сетевые устройства и много чего ещё. Например, если в вашей сетевой инфраструктуре используется протокол NBAR2, Solarwinds NTA может успешно распознавать трафик от Zoom, Teams или Webex.

Основная цель статьи показать простоту настройки мониторинга в Solarwinds и полноту собираемых данных. В Solarwinds есть шанс увидеть полную картину происходящего. Если хотите презентацию решения или проверить всё у себя оставьте заявку в форме обратной связи или позвоните.

На Хабре у нас также есть статья о бесплатных решениях Solarwinds.

Подписывайтесь на нашу группу в Фейсбуке.
Подробнее..

Найти 15 инженеров за две недели карантина

01.10.2020 12:15:50 | Автор: admin
Привет, Хабр!

Я работаю эйчаром в DataLine, в том числе курирую набор дежурных инженеров в службу технической поддержки. Мы уже рассказывали о важности этой позиции для компании. Дежурным инженерам мы доверяем проверку оборудования в дата-центре и работу с клиентами на первой линии. На этой должности новички набираются опыта и пополняют технические отделы: эксплуатации, виртуализации, сети, киберзащиты и другие. Для нас дежурка это первая ступень карьерной лестницы.

Весна-2020 принесла сразу 2 трудности: самоизоляцию и быстрый рост компании. Нам нужно еще больше дежурных для новых дата-центров, но привычными способами набирать уже не получается.

Сегодня расскажу, как мы с коллегой Александрой искали лучших инженеров на расстоянии и, самое главное, нашли.



Что было до: групповой отбор, экскурсии, экзамен

Раньше все дежурные инженеры перед подписанием договора проходили отбор в 2 этапа: групповое собеседование и вводное обучение.

На групповое собеседование мы приглашали 1215 человек. Кандидаты знакомились с компанией и будущими коллегами, а потом решали несколько кейсов. В мире ИТ многие скептически относятся к таким собеседованиям. Но для нас формат полезен по трем причинам:
  • Мы быстрее находим нужное количество своих. Это стартовая позиция: набираем сразу по 510 человек среди студентов и выпускников технических вузов. Меньше смотрим на резюме с опытом работы, больше оцениваем мотивацию и интерес к нашей сфере.
  • На примере кейсов кандидаты примеряют роль на себя. Каждый получает ситуацию из жизни и проигрывает ее в группе. Сразу понятно: теряется человек или нет, комфортно ли ему взаимодействовать с разными людьми.
  • Из новичков формируется самостоятельная команда дежурных. Все знакомятся еще на отборе и быстрее адаптируются, появляется взаимная поддержка и дух соревнования.

Собеседование занимало 6 часов почти целый рабочий день. Но в результате сразу набиралась готовая группа на обучение.

Вводное обучение длилось 3 дня. Мы проводили экскурсию по дата-центру, знакомили с обязанностями дежурного инженера и давали практические задания, например, подключить оборудование. Будущие инженеры могли проявить себя в деле и проверить мое-не мое.
В конце кандидаты сдавали экзамен по теории и практике. Если результат не менее 70% от максимального количества баллов добро пожаловать на оплачиваемую стажировку. К обучению подключали руководителей отделов: так можно сразу найти интересных кандидатов в одну из смежных технических групп.

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

Какие сюрпризы принес 2020


Долгий режим ожидания

После введения локдауна мы приостановили набор в дежурку и ждали, пока ситуация не прояснится. Но строить новые ЦОДы мы не перестали, так что летом понадобилось уже 15 дежурных инженеров для новых площадок. Стало понятно, что нам не избежать собеседований в режиме социальной дистанции.
Чтобы не потерять в эффективности, нужно было решить несколько непростых задач в новом формате:
  • оставить кейсы, чтобы кандидаты могли продемонстрировать взаимодействие в команде;
  • показать наши ЦОДы, где предстоит работать;
  • познакомить будущих инженеров с руководителями, которые находятся на разных площадках;

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

Индивидуальные собеседования мы не рассматривали: это бы в несколько раз увеличило объем работы у руководителей, специалистов HR-службы и преподавателей курса.

Первый онлайн-набор: неразбериха вместо кейсов

В июне мы объявили новый набор дежурных инженеров в онлайне. Собеседование запланировали в Cisco Webex: мы используем эту систему для удаленных совещаний внутри компании. Как это выглядело в нашей голове:
  1. Приглашаем от 20 до 30 человек на групповое собеседование. Всем кандидатам уходит письмо со ссылкой на виртуальную комнату Webex.
  2. Проводим презентацию компании и знакомимся с участниками.
  3. Просим кандидатов разделиться по виртуальным комнатам коллег и решаем кейсы в группах по 4-6 человек.

Реальность подвела. Знакомство с кандидатами в общей комнате затянулось. Чтобы выслушать 25 человек подряд со всеми техническими накладками потребовалось больше часа. К концу собеседования мы уже с трудом воспринимали информацию.

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

Хорошей находкой для таких оргмоментов стал Telegram. Мы заранее добавляли номера кандидатов в контакты для быстрой связи. Для кейсов мы вывесили в общий чат списки кандидатов по комнатам: Вы заходите по ссылке в комнату Екатерины, вы оставайтесь в комнате Александры. Но все равно люди путались, терялись, подключались не туда.

Чат пригодился и на вводном обучении. Преподаватель проводил занятие в Webex и отправлял в Telegram записи лекций и дополнительные материалы, отвечал на вопросы. Экскурсию по ЦОДу заменили на видеотур и сэкономили день обучения. Конечно, получилось не так живо, как на экскурсии. Зато можно перейти по ссылкам и посмотреть в удобное время.

Финальный экзамен проводили в Webex. Старший инженер площадки оставался в своей персональной комнате, а 15 человек подключались по очереди. Без накладок тоже не обошлось. У всех новичков была одна и та же ссылка если перепутаешь время, попадешь на чужой экзамен. Для экзаменатора нагрузка была высокой. В какой-то момент наш Антон даже стал радоваться прогульщикам.

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

Второй онлайн-набор: безличные квадратики

В июле мы проанализировали наш опыт и кое-что улучшили:
  • подключили к набору больше наших сотрудников, чтобы сделать несколько потоков на собеседовании и обучении.
  • сменили площадку и перешли на корпоративный аккаунт в Zoom. Там было удобнее одной кнопкой делить кандидатов на 4-5 сессионных залов.

Так мы сразу сократили время онлайн-собеседования с 4 часов до 2.

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

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

А еще первое время мы не требовали от кандидатов подключения с камерой. Но когда один из созвонов почти полностью состоял из безликих квадратиков, мы добавили и это требование в письмо. Иначе было сложно понять, кто что говорит, запомнить людей.

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

Во второй раз все прошло быстрее: мы объявили набор 10 июля, а уже 27 июля к нам на стажировку вышли пятеро инженеров. В третий набор за 2 недели удалось принять уже 15 дежурных инженеров.

Что из этого получилось


  1. Меньше времени на отбор. Время собеседования мы сократили с 6 часов в офлайне до 2 часов в Zoome. Сроки обучения уменьшились с 3 дней до 2.
  2. Формат удобнее для кандидатов. Не нужно тратить время на дорогу и освобождать несколько дней на прохождение всех этапов. Стало проще вписывать собеседования и занятия в расписание. Особенно были довольны те, кто уже работал и хотел перейти к нам.
  3. Больше людей доходят до конца обучения. Если раньше на курс приходило 13 человек из 20 приглашенных, то в онлайне не приходит всего пара человек. Даже если время обучения неудобное, можно посмотреть в записи, подготовиться за выходные и сдать экзамен.

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


Ответ на оффер от кандидата.

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

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

Перевод Почему я всё время смотрю на своё лицо, когда разговариваю в Zoom?

11.03.2021 00:08:55 | Автор: admin
Можно ли считать себя тщеславным человеком, если во время каждого звонка в Zoom вы постоянно смотрите на свое лицо вместо того, чтобы сосредоточиться на других людях. Скорее всего, вы не любуетесь собой и не рассматриваете свою внешность. А просто смотрите. Как это влияет на самооценку? Стоит ли отключать камеру, чтобы не стать нарциссом? Немного философских размышлений о нарциссизме и о том, что значит существовать для других людей.

Дорогой друг!

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



Более широкий вопрос о возможных побочных эффектах пристального рассматривания себя весь день является более сложным и выходит за рамки вопроса о том, являетесь ли вы нарциссом, что, рискнем предположить, маловероятно. Страх нарциссизма, по крайней мере, в клиническом смысле, дисквалифицирует себя: только те, кто не подходят под определение, переживают за то, что являются нарциссами. В любом случае, вы не одиноки в своей зацикленности на этом. Люди, которые никогда бы и не подумали смотреть на свою фотографию дольше нескольких секунд, тем не менее сообщают, о том, что не могут отвести взгляд от плавающей по экрану картинки с изображением своего лица во время онлайн-занятий или родительских собраний, озабоченность этим вопросом настолько сильная, что это самообожание остаётся неубедительным объяснением. Возможно, более актуальный вопрос заключается не в том, что платформа делает с вашим представлением о себе, а в том, что с ним уже произошло, раз вы, как и многие другие, не можете перестать смотреть на своё пиксельное отражение.

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

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

Ах, если бы какая-то неведомая сила могла даровать нам способность видеть себя такими, какими нас видят другие! писал поэт Роберт Бернс в 1786 году, добродетельный призыв к объективному самопознанию, которое в большинстве из нас вызывает все больше противоречий.

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

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

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

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

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

Мы не имеем в виду, что вам следует проводить еще больше времени, глядя на себя во время звонков. Но импульс может служить напоминанием о коллективной потребности во взаимном признании потребности, вероятно, ощущаемой всеми другими лицами, в галерее окошек участников видеозвонка. Это может побудить вас вспомнить, что они также испытывают ослабленное чувство идентичности; что стандартные технические вопросы, которые сопровождают каждый вход в систему (Вы меня видите?, Вы меня слышите?), могут выражать более глубокий порыв. Самое замечательное в Zoom то, что зеркало двустороннее. Каждый кивок, каждый ответный жест служат напоминанием говорящему о том, что они существуют для других людей, что они остаются жизненно важными в мире, который все мы вместе населяем.
Подробнее..

Личный опыт Как выбрать софт для проведения онлайн-конференции пять доступных вариантов

08.03.2021 18:14:03 | Автор: admin

В период пандемии многие конференции стали онлайновыми. Моя знакомая из Smartcat занимается организацией онлайн-мероприятий, и я захотел узнать у неё, какие инструменты для запуска массовых конференций есть сегодня.

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

Критерии выбора

С началом пандемии большую часть мероприятий поставили на паузу, оставшиеся перенесли в онлайн. Рынок конференц-связи накрыла волна ажиотажа: организаторы искали лучшие решения. Microsoft Teams, Google Meet, YouTubeLive, Skype for Business, Webex, Zoom это только малая часть всего многообразия технологий, которые тестировали ивент-менеджеры. Волновал уже не кейтеринг и поиск площадки, а какие есть возможности для вовлечения аудитории.

Конференц-лихорадка не обошла стороной и команду Smartcat. В начале апреля 2020-го они выбирали идеальную платформу для своего первого онлайн-события LocFromHome. Времени было мало, а критериев много. Инструмент должен был:

  • поддерживать 12-часовую трансляцию;

  • пропускать 4000 регистраций;

  • вмещать до 500 участников одновременно;

  • предлагать варианты месячной подписки, так как конференция проходит только пару раз в год;

  • иметь хорошую службу поддержки;

  • собирать аналитику и статистику;

  • давать возможности для вовлечения аудитории (опросы, Q&A, чат, отдельные комнаты для нетворкинга и так далее).

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

ON24

Система ON24 сейчас один из лучших продуктов по отзывам на G2.com для проведения вебинаров и онлайн-мероприятий. У них почти 750 отзывов при среднем рейтинге 4,3 из 5. Из тех функций, что нравятся пользователям review-сайтов:

  • онлайн-регистрация участников удобно знать своих зрителей в лицо;

  • отчеты по активности зрителей что и как смотрят и тому подобное.

В ON24 есть разграничение доступа к контенту и частям системы по ролям пользователей и переключение языков трансляции в режиме реального времени.

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

Для LocFromHome подошли бы только варианты, доступные при годовой подписке. Цены на такую подписку колеблются от $24 000 до $41 000. Для компании, которая проводит две-три онлайн-конференции в год, это было слишком много, поэтому пришлось искать альтернативы.

BigMarker Events

Один из конкурентов ON24. У продукта 157 отзывов на review-сайте Capterra, общий рейтинг составляет 4,8 из 5. На платформе есть как функции, доступные в предыдущем продукте, так и то, чего в ON24 нет:

  • бейджи функция помогает помечать организаторов, докладчиков и зрителей и управлять ими, в ON24 этой фичи нет;

  • проведение опросов повышают вовлеченность зрителей;

  • комната ожидания (виртуальное лобби).

Из минусов лимит в девять часов при онлайн-стриминге. Для LocFromHome нужна была одна ссылка для всей конференции, не хотелось пересоздавать ее несколько раз. Ну и цена за подписку в $13 000 показалась слишком большой, хотя это и ощутимо меньше, чем в предыдущем случае.

Crowdcast

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

Главный недостаток был почти такой же, как у BigMarker лимит в шесть часов на онлайн-стриминг. LocFromHome идёт 12 часов нон-стоп, поэтому Crowdcast не подходил.

Hopin

При подготовке LocFromHome 10 февраля 2021 года Hopin рассматривали очень серьёзно. Система была абсолютным фаворитом. Она объединяет в себе и функции, которые есть у конкурентов, и собственные удобные фичи:

  • интеграция с email-системами пользователям можно отправлять письма о мероприятии;

  • система позволяет принять до 100 тысяч зрителей;

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

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

Осталась другая проблема. Перед LocFromHome мы проводили ряд репетиций прогоняли выступления со спикерами и проходили с ними авторизацию в Hopin. И некоторые из выступающих подключиться к конференции не смогли. В Smartcat решили не рисковать и вернулись к Zoom.

Zoom

В итоге все конференции LocFromHome прошли в Zoom. Ничего удивительного инструмент стал стандартом де-факто для онлайн-мероприятий (33 тысячи отзывов на G2). Ещё одним плюсом было то, что большинство участников конференции уже работали с программой в период удаленки, а значит, им было проще разобраться с интерфейсом.

Полезные функции Zoom:

  • возможность подключения по телефону;

  • проведение опросов повышают вовлеченность;

  • whiteboarding спикер может набросать что-то на виртуальной доске.

Но не все идеально в системе ограниченные возможности по интеграции со сторонними приложениями. Это усложняет экспорт контактов в CRM или email-системы, так что продолжить общение со зрителями после мероприятия будет непросто.

Заключение

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

Вместе с тем в Zoom так и не получилось решить проблему вовлеченности пользователей, поэтому сейчас Smartcat думает о построении собственной платформы для LocFromHome. Например, такой, как смастерили WN Expo:

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

Если вы хотите создать своё собственное онлайн-мероприятие, советую пробовать разные подходы. Возможностей сейчас масса. Смотрите, какие инструменты и платформы есть на рынке, комбинируйте их между собой, пробуйте. Держите руку на пульсе и будьте в курсе всех новшеств ивент-индустрии и всё обязательно получится.

Подробнее..

Как разработать аналог Zoom для ТВ-приставок на RDK и Linux. Разбираемся с фреймворком GStreamer

29.09.2020 16:20:30 | Автор: admin
Сценарии: как использовать приложение для видеоконференций на SmartTV и ТВ-приставкахСценарии: как использовать приложение для видеоконференций на SmartTV и ТВ-приставках

Пандемия COVID-19 стала катализатором для новых полезных сервисов. Например, Zoom стал настолько успешным, что по стоимости обогнал в этом месяце IBM. Нас вдохновил этот пример, и мы решили пойти еще дальше: а что если онлайн-конференции реализовать на приставках и Smart TV, чтобы общаться не только по работе, но устраивать удаленные посиделки на диване с друзьями? Но ведь тогда можно на футболе вместе покричать, и кино посмотреть или спортом заняться под контролем тренера.

Почему-то у операторов цифрового ТВ такой услуги не оказалось, хотя с инженерной точки зрения все эти функции вполне можно реализовать на ТВ-приставках на базе Linux/Android и RDK. Мы это проверили на практике и вот теперь делимся с читателями Хабра своим рецептом создания аналога Zoom и видеоконференций через Smart TV. Разберем архитектуру решения и кодирование видеопотока с использованием GStreamer. Информацию для работы с этим фреймворком мы собирали по крупицам, но оно того стоило.

Разбираемся с архитектурой

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

Итак, с чем мы столкнемся на ТВ-приставках:

  1. Ограниченность ресурсов процессоров и самих приставок. Чаще всего в STB-устройствах используются разнообразные ARM-процессоры, они несут в себя ряд ограничений и дополнительных задач, в частности необходимость использования аппаратного кодирования/декодирование видеопотока. Всегда нужно учитывать, что быстродействие одно из узких мест.

  2. Разность архитектур в приставках разных производителей. Некоторые базируются на Android, другие на RDK, третьи на дистрибутивах на базе Linux со своими ограничениями и нюансами. Поэтому на старте разработки лучше выбрать наиболее общие и кроссплатформенные решения в разных модулях программы. Уже не говоря о поддержке desktop-версии. А уже потом переходить к частным случаям.

  3. Сетевые ограничения. Многие приставки работают как по Ethernet так и по wifi. Сжатие и передача видео/аудиопотока еще одно узкое место в приложениях такого рода.

  4. Безопасность передачи потока и др. вопросы безопасности данных.

  5. Поддержка камер и микрофонов на встроенных платформах.

Теперь можно разложить по полочкам и саму архитектуру. Аналог Zoom для ТВ-приставок будет состоять из нескольких больших компонентов и модулей:

  • Захват видеопотока

  • Захват аудиопотока

  • Сетевой модуль

  • Модуль кодирования видео/аудиопотока

  • Модуль декодирования видео/аудиопотока

  • Вывод видеоконференции на экран

  • Вывод звука

  • Цветовые преобразования

  • Несколько других второстепенных компонентов

В упрощенном виде один из вариантов архитектуры можно изобразить так:

Архитектура приложения для видеоконференций через Smart TVАрхитектура приложения для видеоконференций через Smart TV

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

Кодирование/декодирование потока

1) Преимущества GStreamer

Как мы уже отметили, одним из узких мест является передача видеопотока. Предположим у вас есть камера, отдающие кадры на скорости 30 кадров с секунду на небольшом разрешении 640x480. Итого, в RGB24 получается:

640 х 480 х 3 х 30 = 27 648 000 байт в секунду, т.е. более 26 Мбайт в секунду, что по понятным причинам совершенно неприемлемо в рамках сетевой передачи.

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

  1. Хорошая кроссплатформенность и отличная поддержка Linux и Android.

  2. На RDK Gstreamer является стандартом кодирования/декодирования и включен в дистрибутив по-умолчанию.

  3. Поддержках широкого набора модулей, фильтров и кодеков. Тот же FFmpeg, который можно использовать для тех же целей, де-факто является лишь одним из модулей GStreamerа.

  4. Простота построения конвейера (pipeline). Выстроить цепочку кодирования/декодирования не составляет большого труда, а сам подход конвейера позволяет легко заменять кодеки, фильтры и прочее без лишнего переписывания кода.

  5. API для работы С/C++ идет комплекте.

  6. Поддержка аппаратных кодеров/декодеров, в частности OpenMAX API что крайне важно при работе с ТВ-приставками.

2) Знакомимся с GStreamer разбираемся с конвейерами

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

gst-inspect-1.0 позволит посмотреть список доступных кодеков и модулей, так что можно сразу увидеть, что будет работать, и выбрать набор фильтров и кодеков.

gst-launch-1.0 позволяет запустить любой конвейер (pipeline).

В GStreamer используется схема декодирования, по которой поток последовательно проходит через разные компоненты, начиная с source, заканчивая sink-выводом. При этом source может быть любым файл, устройство, для вывода (sink) также можно указать нужное файл, экран, сетевые выводы и протоколы (наподобие RTP).

Подробнее про использование утилит и принцип построения конвейера можно почитать в другой статье на Хабре. Классический пример проигрывания mp4-файла:

gst-launch-1.0 filesrc location=file.mp4 ! qtdemux ! h264parse ! avdec_h264 ! videoconvert ! autovideosink

На входе принимается mp4-файл, который проходит через демуксер mp4 qtdemux, парсер h264, затем через декодер, конвертер и, наконец, идет вывод на экран.

Можно заменить autovideosink на filesink с параметром файла и вывести декодированный поток прямиком в файл.

3) Пишем приложение на GStreamer C/C++ API. Попробуем декодировать

Теперь, когда мы разобрались немного с использованием gst-launch-1.0, проделаем все тоже самое, только уже в рамках приложения. Принцип останется тем же: мы встраиваем декодирующий конвейер (pipeline), однако уже с использованием библиотеки GStreamer и glib-событий.

О простейшем примере построения filesrc в filesink с кодом хорошо рассказано в другой хабрастатье GStreamer: элементы и контейнеры. Мы же рассмотрим чуть более реалистичный и сложный живой пример H264-декодирования.

Инициализация GStreamer-приложения происходит один раз при помощи

gstinit (NULL, NULL);

Если вы хотите сразу видеть происходящее в деталях, можно выстроить уровень логирования перед инициализацией

gst_debug_set_active(TRUE);gst_debug_set_default_threshold(GST_LEVEL_LOG);

Учтите: сколько бы у вас не было конвейеров в приложении, инициализировать gstinit достаточно один раз.

Создадим новый event-loop, в котором будут обрабатываться события:

GMainLoop *loop;loop = g_main_loop_new (NULL, FALSE);

И теперь можно начать выстраивать наш конвейер:

Объявим необходимые элементы, в частности сам конвейер как тип GstElement:

GstElement *pipeline, *source, *demuxer, *parser, *decoder, *conv, *sink;pipeline = gst_pipeline_new ("video-decoder");source   = gst_element_factory_make ("filesrc",       "file-source");demuxer  = gst_element_factory_make ("qtdemux",      "h264-demuxer");parser   = gst_element_factory_make ("h264parse",      "h264-parser");decoder  = gst_element_factory_make ("avdec_h264",     "h264-decoder");conv     = gst_element_factory_make ("videoconvert",  "converter");sink     = gst_element_factory_make ("appsink", "video-output");

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

Также не мешало бы проверить, что все компоненты найдены, в противном случае gst_element_factory_make, возвращает NULL.

if (!pipeline || !source || !demuxer || !parser || !decoder || !conv || !sink) {// не инициализирован один элемент - остановкаreturn;}

Установим тот самый параметр location через gob_ject_set:

gob_ject_set (G_OBJECT (source), "location", argv[1], NULL);

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

Теперь необходим обработчик сообщений GStreamer, создадим соответствующий bus_call:

GstBus *bus;guint bus_watch_id;bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline));bus_watch_id = gst_bus_add_watch (bus, bus_call, loop);gst_object_unref (bus);

gst_object_unref и другие подобные вызовы нужны для очищения выделенных объектов.

Затем объявим сам обработчик сообщений:

static gbooleanbus_call (GstBus     *bus,          GstMessage *msg,          gpointer    data){  GMainLoop *loop = (GMainLoop *) data;  switch (GST_MESSAGE_TYPE (msg)) {    case GST_MESSAGE_EOS:      LOGI ("End of stream\n");      g_main_loop_quit (loop);      break;    case GST_MESSAGE_ERROR: {      gchar  *debug;      GError *error;      gst_message_parse_error (msg, &error, &debug);      g_free (debug);      LOGE ("Error: %s\n", error->message);      g_error_free (error);      g_main_loop_quit (loop);      break;    }    default:      break;  }  return TRUE;}

А теперь самое важное: собираем и добавляем все созданные элементы в единый конвейер, тот самый что выстраивали через gst-launch. Очередность добавления, естественно, важна:

gst_bin_add_many (GST_BIN (pipeline), source, demuxer, parser, decoder, conv, sink, NULL);gst_element_link_many (source, demuxer, parser, decoder, conv, sink, NULL);

Стоит также заметить, что такой подход линковки элементов прекрасно работает для потоковых выходов, но в случае именно проигрывания (autovideosink) необходима дополнительная синхронизация и динамическая линковка демуксера и парсера:

  gst_element_link (source, demuxer);  gst_element_link_many (parser, decoder, conv, sink, NULL);  g_signal_connect (demuxer, "pad-added", G_CALLBACK (on_pad_added), parser);static voidon_pad_added (GstElement *element,              GstPad     *pad,              gpointer    data){  GstPad *sinkpad;  GstElement *decoder = (GstElement *) data;  /* We can now link this pad with the sink pad */  g_print ("Dynamic pad created, linking demuxer/decoder\n");  sinkpad = gst_element_get_static_pad (decoder, "sink");  gst_pad_link (pad, sinkpad);  gst_object_unref (sinkpad);}

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

Ну и, наконец, переводим состояние конвейера в проигрывание:

gst_element_set_state (pipeline, GST_STATE_PLAYING);

И запускаем event-loop:

g_main_loop_run (loop);

После окончания этой процедуры все нужно почистить:

gst_element_set_state (pipeline, GST_STATE_NULL);  gst_object_unref (GST_OBJECT (pipeline));  g_source_remove (bus_watch_id);  g_main_loop_unref (loop);

4) Выбираем энкодеры и декодеры. Фоллбэки

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

Поможет нам в этом функция gst_element_factory_find, которая проверяет, есть ли у нас кодек в factory элементов:

if(gst_element_factory_find("omxh264dec"))decoder  = gst_element_factory_make ("omxh264dec",     "h264-decoder");elsedecoder  = gst_element_factory_make ("avdec_h264",     "h264-decoder");

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

Другой крайне полезной, но еще более редко используемой функцией является проверка того, что же мы на самом деле инициализировали в GstElement (какой кодек):

gst_plugin_feature_get_name(gst_element_get_factory(encoder))

Можно проделать это таким незамысловатым способом и вернуть название инициализированного кодека.

5) Цветовые модели видео

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

Камеры просто обожают цветовую модель YUYV. Но это то, с чем любит работать GStreamer, для него более привычна модель I420. На выходе, если речь не идет о выводе в gl-фрейм, у нас также будут выходить I420-кадры. Будьте готовы подставить необходимые фильтры и выполнить преобразования. Некоторые энкодеры умеют работать и с другими цветовыми моделями, но чаще это исключения из правил.

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

Разбираемся с буферами и берем данные на лету

1) Буфер ввода

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

Теперь будем работать с буферами и входами и выходами appsrc / appsink. Почему-то этому вопросу почти не уделиливнимания в официальной документации.

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

Вначале установим обработчик события need-data, который будет запускаться при необходимости подачи данных в конвейер и начнем подавать входной буфер:

g_signal_connect (source, "need-data", G_CALLBACK (encoder_cb_need_data), NULL);

Сам обработчик имеет следующий вид:

encoder_cb_need_data (GstElement *appsrc,          guint       unused_size,          gpointer    user_data){  GstBuffer *buffer;  GstFlowReturn ret;  GstMapInfo map;   int size;   uint8_t* image;  // get image  buffer = gst_buffer_new_allocate (NULL, size, NULL);  gst_buffer_map (buffer, &map, GST_MAP_WRITE);    memcpy((guchar *)map.data, image,  gst_buffer_get_size( buffer ) );  gst_buffer_unmap(buffer, &map);  g_signal_emit_by_name (appsrc, "push-buffer", buffer, &ret);  gst_buffer_unref(buffer);}

image это, условно говоря, псевдокод буфера картинки в I420.

Далее мы создаем через gst_buffer_new_allocate буфер необходимого размера, который будет соответствовать размеру буфера картинки.

При помощи gst_buffer_map устанавливаем буфер в режим записи и, используя memcpy, копируем нашу картинку в созданный буфер.

И, наконец, сигнализируем GStreamу о том, что буфер готов.

Ремарка: очень важно после записи использовать gst_buffer_unmap, а также очищать буфер после использования при помощи gst_buffer_unref. Иначе будет утечка памяти. В скудном количестве доступных примеров никто особо насчет вопроса освобождения памяти не заморачивался, а он, понятное дело, важный.

Теперь, когда мы закончили с обработчиком, нужно проделать еще одну вещь: настроить caps на поступление ожидаемого формата.

Делается это перед установкой обработчика сигнала need-data:

g_object_set (G_OBJECT (source),        "stream-type", 0,        "format", GST_FORMAT_TIME, NULL);g_object_set (G_OBJECT (source), "caps",gst_caps_new_simple ("video/x-raw","format", G_TYPE_STRING, "I420","width", G_TYPE_INT, 640,"height", G_TYPE_INT, 480,"framerate", GST_TYPE_FRACTION, 30, 1,NULL), NULL);

Как и все параметры GstElement, установка параметров осуществляется через g_object_set.

В данном случае мы задали тип потока, и его caps формат данных. Указав, что на выход appsrc будет поступать данные I420 c разрешением 640x480 и частотой 30 кадров в секунду.

Частота в нашем случае, да в целом, не играет роли. На практике мы не замечали, чтобы GStreamer как-то ограничивал вызовы need-data по частоте.

Готово, теперь наши кадры поступают в энкодер.

2) Буфер вывода

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

Подключаем обработчик к sink pad:

GstPad *pad = gst_element_get_static_pad (sink, "sink");  gst_pad_add_probe  (pad, GST_PAD_PROBE_TYPE_BUFFER, encoder_cb_have_data, NULL, NULL);  gst_object_unref (pad);

Похожим образом мы подключились к другому событию sink pad GST_PAD_PROBE_TYPE_BUFFER, которое будет вызываться по мере поступления буфера данных в sink pad.

static GstPadProbeReturnencoder_cb_have_data (GstPad * pad,                        GstPadProbeInfo * info,                        gpointer user_data) {  GstBuffer *buf = gst_pad_probe_info_get_buffer (info);  GstMemory *bufMem = gst_buffer_get_memory(buf, 0);  GstMapInfo bufInfo;  gst_memory_map(bufMem, &bufInfo, GST_MAP_READ);  // bufInfo.data, bufInfo.size  gst_memory_unmap(bufMem, &bufInfo);  return GST_PAD_PROBE_OK;}

Колбэк имеет похожую структуру. Теперь нужно достучаться до памяти буфера. Вначале получаем GstBuffer, затем указатель его памяти, используя gst_buffer_get_memory по индексу 0 (как правило задействован только он). И, наконец, используя gst_memory_map, получаем адрес буфера данных bufInfo.data и его размер bufInfo.size.

Фактически мы добились цели получили буфер с кодированными данными и его размер.

Итак, мы рассмотрели ключевые и самые интересные компоненты из приложения для Smart TV аналога Zoom для ТВ-приставок: архитектуру, модули кодирования / декодирования через GStreamer, буферы ввода / вывода и используемые цветовые преобразования.

Для операторов цифрового ТВ такая программная платформа может стать новым абонентским сервисом. Для нас инженеров новым интересным embedded-проектом для реализации на разных приставках на базе RDK, Linux и Android. А для всех остальных возможностью приятно проводить время за совместным просмотром фильмов и спортивных матчей, занятий спортом и посиделок с близкими в период карантина или удаленной работы.

Эту идею с сервисом видеоконференций по Smart TV можно развивать и дальше, как с точки зрения инженерных решений, так и по сценариям их использования. Так что делитесь мыслями в комментариях.

Подробнее..

Еще раз про онлайн-обучение

03.01.2021 22:21:10 | Автор: admin
Казалось бы, про ДО (дистанционное обучение) за последний год написали все, кто только мог. В российских (да и не только) школах и вузах применение ДО, свалившееся в 2020 году как снег на голову, в основном, свелось к переносу оффлайновых занятий в Zoom или Teams и ускорению производства самого разного обучающего контента. Параллельно возникла дискуссия о том, должно ли быть ДО дешевле или дороже очного. Не повторяя то, что было уже много раз написано другими авторами, я выскажу свою точку зрения и поделюсь опытом подготовки материалов для вузовского онлайн-обучения, сконцентрировавшись на методах, которые почти никто не применяет.

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

оффлайн =  онлайн + очное обучение

Соответственно, и цена оффлайна складывается из этих двух слагаемых. И если очные занятия выключаются (как в 2020), то себестоимость может только уменьшиться, т.к. онлайн-преподавание + расходы на прокторинг обычно гораздо дешевле организации очных занятий. Но при одном условии: когда обучающий контент заранее подготовлен. А если нет? Я убежден, что почти всегда это означает только одно: исходный курс изначально не соответствовал современным запросам (см. основной тезис про онлайн составляющую).

Что происходило по всей стране (да что стране по всему миру) при внезапном переходе вузов на онлайн-обучение? Преподаватели начали лихорадочно надиктовывать свои лекции вживую в Zoom и YouTube или предварительно записывая их, а потом выкладывая в тот же YouTube. Десятки и сотни, если не тысячи одинаковых уроков по мат.анализу и т.п. общих предметам! Получалось трудозатратно, долго и, чаще всего, плохо. И в большинстве случаев абсолютно бессмысленно, потому, что эти курсы были уже десятки раз подготовлены (и не в одиночку, а большими профессиональными командами), записаны в хорошем качестве и выложены на платформы типа Coursera, Udemy, Stepik и т.д.

Какой смысл во всем этом? Почему заранее было не подобрать подходящий существующий онлайн-курс типа МООС и не взять его за основу? Многие, кстати, так и сделали и в итоге выиграли, т.к. сделали удаленное обучение асинхронным (студенты сначала слушают качественный онлайн-курс, а потом на семинарах в Зуме его обсуждают). Понятно, что такое возможно не всегда. Главным образом, из-за того, что существующие МООС-курсы не всегда соответствуют конкретной программе вуза или ДПО. Одни сложнее, другие проще, третьи слишком большие.

Очевидно, в чем корень проблемы: все современные МООСи линейные и не предназначены для трансформации. Из них очень сложно или вообще невозможно нарезать нужные фрагменты для конкретной программы (и это мы за скобками оставили вопрос об авторских правах и легальности применения сторонних МООС в образовательном процессе). Иными словами: существующий формат МООС не очень подходит для переноса (без ущерба для качества обучения) от вуза к вузу.

Таким образом, проблема очерчена, и я теперь могу поделиться своим опытом ее решения. Собственно, этим я и занимаюсь последние несколько лет, что нашло отражение в сайте Нерепетитор и нескольких статьях, например, тут, на Хабре. В двух словах, у меня есть довольно много собственных обучающих материалов (видеоролики, статьи, расчеты, в основном, математические и инженерные), который я постепенно организовал в виде базы знаний, состоящей из атомарного контента. Как правило, это ссылки на мои ресурсы, размеченные метаданными, из которых уже легко собирать курсы. Для того чтобы сконструировать нужный курс, нужно просто прописать нужную траекторию, а ссылки на соответствующие медиа ресурсы система добавит автоматически.

Чтобы не выглядеть теоретиком, в заключение приведу пример практического применения из реальной жизни. В 2020 года я вел вот этот курс по высшей математике для студентов-гуманитариев НИУ ВШЭ, сначала очно, а потом, начиная с середины ноября, на удаленке. При помощи своей базу контента, я еще на этапе разработки и согласования программы дисциплины (сам для себя) прописал примерную траекторию обучения, которая по ходу курса, немного трансформировалась. Одни блоки из нее выпали, другие были добавлены, а некоторые мне пришлось создать заново, но таких было совсем немного. Финальный контент курса (включая дополнительные закрытые материалы: записи лекций, семинаров, примеры программного кода и работы студентов) я разместил во внутренней LMS вуза. Я сделал это в инициативном порядке, серьезных дополнительных трудозатрат это не потребовало. Рамочный курс для ВШЭ, собранный из моего контента, можно посмотреть здесь, а протестировать генерацию разных динамических курсов по математике по поисковому запросу на основном сайте проекта Нерепетитор.

Пока описанный подход почти нигде не применяется. Мне сложно сказать, почему так происходит. Провайдеры обучения (платформы, вузы и EduTech компании) предпочитают до сих пор штамповать линейные МООСи, качественные, но неуклюжие и имеющие короткий жизненный цикл. Возможно, это объясняется запросами рынка. Но важно заметить: запросы эти начинают меняться. Бросая взгляд, на смежные области, например, CAD системы, мы видим рост интереса к технологиям генеративного дизайна, когда пользователь формулирует короткий запрос, а система автоматически (и мгновенно!) предлагает прототип. Возможно, такие же изменения в EduTech тоже не за горами.
Подробнее..

Я в прямом эфире, но я не кот 3 самые большие ошибки презентаций в Zoom

19.02.2021 22:06:58 | Автор: admin

Возможно, что мы наконец (наконец!) начинаем видеть крохотный лучик света в конце тёмного тоннеля этой затяжной утомительной пандемии. Но увы, это совсем не говорит о том, что приближается конец эпохи презентаций и переговоров в Zoom.

В 2010 году Билл Гейтс правильно предсказал, что нас всех ждёт пандемия.

А сейчас он предполагает, что мы никогда не вернёмся к тому формату работы, как это было раньше. Меняющиеся ожидания и непрерывное совершенствование программного обеспечения вполне способны сделать так, что многие удалённые встречи и мероприятия останутся с нами навсегда. С этим утверждением согласны и многие другие эксперты.

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

Это делает недавний пост Брайары Голдберг коуча по подготовке спикеров, выступающих на конференциях TED бесценным. В нём она описывает наиболее распространённые ошибки, которые она всё ещё наблюдает, когда люди выступают в Zoom, и предлагает простые и полезные советы, чтобы исправить их.

Первая ошибка: вы смотрите на собеседников, а не в камеру

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

Единственный способ установить зрительный контакт с вашими виртуальными слушателями это смотреть прямо в объектив вашей камеры. Поверьте мне: поначалу это будет действительно странно. соглашается Голдберг, - но если хотите, чтобы ваша аудитория оставалась внимательной и вовлечённой, вам придётся пожертвовать своим желанием посмотреть на их лица.

Стремитесь смотреть на этот маленький кружок в верхней части вашего ноутбука (или в другое место, смотря, где в вашем устройстве находится объектив) в течение полных 90% времени вашей презентации.

Вторая ошибка: вы либо читаете прямо с экрана, либо импровизируете

Когда дело доходит до презентаций и подготовке к ним, вы стремитесь найти компромисс: вы не хотите записывать всё и читать как робот, но вы также не хотите спотыкаться на каждом слове, сопровождая звуками гм и ах весь свой материал. Уважайте время своей аудитории, практикуясь немного заранее, советует Голдберг.

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

Третья ошибка: вы позволяете всем выключать видео

Может ли взгляд на бесконечные отражения бестелесных голов отвлекать и вызывать стресс? Да, конечно может. Но Голдберг указывает, что, если вы позволите всей аудитории выключить свое видео, вы также не будете иметь ни малейшего представления о том, как проходит ваша презентация.

Спикеру, выступающему онлайн, часто невозможно узнать, слушает ли его аудитория, когда он их не видит! Поэтому в Zoom на 100% уместно попросить аудиторию включить свои камеры. А если вы хотите быть очень вежливыми, отправьте уведомление с просьбой о присутствии с включенной камерой заранее. Таким образом, ваша аудитория сможет это спланировать! - советует она.

Не воспринимают вас серьезно? - Обернитесь!

Среди безумных месяцев заточения в онлайне, связанных с коронавирусом, я нашла светлый лучик в Twitter - Room Rater. Если вы еще не знакомы с этим веселым аккаунтом, то поясню: там оценивается обстановка за различными спикерами по шкале от 1 до 10. Естественно, эти оценки сопровождаются едкими замечаниями и советами по улучшению.

Какой в этом всём смысл? Может нужно быть более продуктивным и перестать отвлекаться на бессмысленные (хоть и забавные) твиты?

Нет, посыл в следующем: мы вошли в новую эпоху жизни на удалёнке, где внезапно люди обращают чрезмерное внимание на то, что происходит позади нас в Zoom. И это важно не только для язвительных шутников из социальных сетей, но это также важно и для тех, кто хочет произвести сильное впечатление на аудиторию. В подтверждение данному тезису вышло исследование фирмы Quantified Communications, занимающейся изучением и усовершенствованием коммуникативных навыков.

Эстетика видеозвонка имеет огромное значение

В недавнем обзоре на Harvard Business Review соучредитель фирмы Ноа Зандан и директор по взаимодействию Хэлли Линч объясняют, что ровно как и наш внешний вид, так и фон во время видеоконференций имеют огромное значение. Опрос 500 профессионалов, использующих удаленный формат работы, по поводу эстетики видеозвонков дал неожиданные результаты - респонденты имеют твёрдые убеждения на этот счёт.

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

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

Единственным исключением были только те случаи, где спикеру нужно было передать своё творчество. Здесь можно использовать свой естественный декор комнаты, но даже в этом случае следует избегать виртуального фона.

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

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

Заключение

Суть вышеизложенного в том, что если вы хотите, чтобы вас воспринимали всерьёз, именно вы должны быть тем ярким и интересным элементом на картинке в Zoom. Фон - лишь тесное обрамление личности и профессионала своего дела. Он не должен мешать вовлеченности и вниманию аудитории. Равно как и небольшие коммуникативные пробелы виртуального спикера.

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

Подробнее..

Recovery mode ZOOM история создания сервиса, проблемы с безопасностью и секрет популярности

16.02.2021 20:15:11 | Автор: admin

Казалось бы, до марта 2020 года мало кто вообще в России слышал о сервисе видеоконференций с названием ZOOM. Зато теперь о нем говорит каждый второй, даже несмотря на слухи о проблемах с безопасностью личных данных. Ни у кого нет внятного объяснения того, почему этот сервис стал столь популярным в мгновение ока. С другой стороны, ответ очевиден: эпидемия коронавируса заставила бесчисленное количество людей работать из дома, а удаленным сотрудникам нужен инструмент для проведения видеооконференций. Однако еще задолго до того, как удаленная работа стала мейнстримом, люди тоже пользовались ZOOMом и предпочитали его большинству приложениям для видеосвязи. Так что вопрос почему люди выбирают ZOOM? по-прежнему актуален. Давайте разбираться, почему так?

Первое появление ZOOM и проблемы с безопасностью

К настоящему времени история ZOOM больше мифологична и вызывает много вопросов, а потому начнем с самого начала. В 2011 году Эрик Юань, ведущий инженер подразделения WebEx в компании Cisco, уволился с работы и решил создать собственный бизнес. Он набрал команду, собрал первые инвестиции, а два года спустя появился проект ZOOM. Проект собирает еще больше денег от инвесторов и Эрик начинает сразу же использовать сервис для проведения деловых встреч с новыми инвесторами, осуществляя демонстрацию возможностей программы на практике. Что ж это сыграло ему на руку: к 2015 году проект привлек 30 миллионов долларов, а к 2017 году его стоимость оценивалась в 1 миллиард.

Все ли было так гладко? Нет. Давайте перенесемся на несколько лет вперед. Первая проблема сервиса вскрылась в 2018 году, когдабыла обнаружена уязвимость, позволявшая неавторизованным пользователям внедряться в конференции и подделывать сообщения участников собрания, а также удалять пользователей из беседы. Весной 2019 года специалисты по безопасности обнаружили в приложении ZOOM для MacOS еще одну дыру, которая позволяла вредоносным сайтам насильно добавлять пользователей в конференцию и активировать их веб-камеру. Эта проблема затронула даже тех пользователей, который удалили ZOOM со своего Макинтоша, что вынудило Apple выпустить патч безопасности. ZOOM в свою очередь изменил способ предоставления разрешений для подключения к конференциям.

Впрочем, эта ситуация не повлияла на позиции ZOOM, сделав его к концу 2019 года одним из самых популярных бизнес-инструментов, а также самым быстрорастущим. В начале марта 2020 года прирост новых клиентов составил 61%, а выручка компании выросла на 88% по сравнению с 2019 годом. К концу марта 2020 года ZOOM даже обогнал TikTok по количеству скачиваний в AppStore. А затем случился громкий скандал с утечкой пользовательских данных. Тот неловкий момент, когда популярность совсем не играет на руку: 4 апреля 2020 года СМИ сообщили, что тысячи личных видео из ZOOM были выложены в Сеть для открытого просмотра и обвинили компанию в безалаберном отношении к конфеденциальности своих пользователей. Спору нет, ведь в эпоху самоизоляции многие люди перенесли в формат видеозвонков даже личные взаимодействия.

Крупнейшая утечка данных: причины и последствия

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

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

Однако позже Эрик Юань принес извинения за то, что ZOOM не соответствует ожиданиям пользователей в отношении конфиденциальности и безопасности, и заявил, что компания перенаправит своих инженеров на устранение недостатков безопасности. Также Эрик опубликовал в своем блоге запись о том, что сервис ZOOM используется гораздо шире, чем он предполагал, когда основал компанию в 2011 году. Мы не разрабатывали продукт с предвидением, что в течение нескольких недель каждый человек в мире вдруг начнет работать, учиться и общаться дома, написал Эрик в качестве оправдания. По его словам, новые пользователи видеосервиса начали использовать ZOOM неожиданными способами, которые поставили перед компанией проблемы, с которыми никто не ожидал столкнуться при создании платформы. Честно говоря, очень странно, что разработчики приложения действительно не подумали заранее о том, что люди начнут сливать видеозаписи и просто записи разговоров в Интернет.

Специалисты по безопасности бьют тревогу

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

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

Особенно встревоженными оказались представители сексуальных меньшинств. Рут Шварц, директор компании Conscious Girlfriend (группа поддержки отношений для однополых отношений между женщинами) ужаснулась, когда узнала, что видеозаписи ее групповых сессий можно просматривать через Интернет. По ее мнению, женщины с нетрадиционной ориентацией и без того постоянно подвергаются нападкам, но из-за небезопасного ZOOM это может усугубить их положение в обществе. Это действительно важный звонок для всех, ведь социальная связь является одним из главных факторов, определяющих психическое и физическое здоровье. Для всех нас, кто выполняет такую деликатную работу, необходимы максимальные меры предосторожности для защиты наших сообществ. Очень жаль, что ZOOM позволяет себе пренебрегать этим.

Почему люди выбирают ZOOM, а не Skype?

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

Вы скажете, что даже майкрософтовский Skype умеет делать тоже самое безо всяких танцев с бубном, и будете совершенно правы. А значит, одной лишь функциональности недостаточно для того, чтобы быть лидером рынка. Именно поэтому мы начали разговор с низкой задержки, которая не позволяет допускать рассинхрона между видео и звуком. ZOOM постоянно сравнивается скептиками с такими сервисами, как Skype и Hangouts (последний не популярен в России), которые предлагают аналогичные наборы инструментов для совершения видеосессий и общения, но в подавляющем большинстве люди все равно выбирают ZOOM.

Каким-то образом в нашем огромном мире ZOOM стал эдаким золотым стандартом. Рич Костелло, аналитик компании IDC, отмечает: У создателей ZOOM есть отличный продукт и отличные маркетологи, которые отлично справляются с продвижением продукта на рынке. Сейчас многие из конкурентов ZOOM пытаются понять, что же конкретно сделал рекламный отдел компании, чтобы добиться столь широкого успеха программы.

Поскольку ZOOM продолжает дистанцироваться от толпы видеочатов, преображение мира в формате перехода на удаленную работу, приносит только пользу создателям видеосервиса. Бесспорно коронавирус увеличил число людей, которые перешли на работу из дома: примерно 4,7 миллионов жителей США и почти 6 миллионов жителей России перевели на удаленку с февраля 2020 года. Для этих людей ZOOM это больше, чем просто возможность проводить видеоконференции. ZOOM это теперь и есть офис. Более 10 миллионов человек присоединяются к встрече Zoom каждый день. А еще в феврале 2020 года компания достигла более 200 миллионов ежедневных пользователей по сравнению с 10 миллионами в декабре 2019 года.

ZOOM, коронавирус и планы на будущее

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

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

Мы хотим быть коммуникационной компанией номер один, рассказывают они. Под этим подразумевается превращение сервиса видеоконференций в мощную платформу для текстовых чатов, интеграцию с календарными приложениями, телефонными контактами, трекерами продаж, образовательными платформами и многое другое. Кажется, на выходе мы получим продвинутую версию китайского WeChat для европейцев. Глобальный план ZOOM начинается с видео, а заканчивается всеобъемлющим инструментом коммуникации для всей рабочей силы. Но, конечно же, нет никакой гарантии, что успех ZOOM в видеосреде переместится в другое место, отмечает Рич Костелло из IDC.

С точки зрения продукта задача ZOOM будет заключаться в том, чтобы предлагать гораздо больше опций и возможностей, не теряя при этом простоты работы, которую любят пользователи. Успешные приложения, как правило, всегда пытаются добавить больше функций, что делает их менее полезными и разочаровывает людей, заставляя искать более удобное и простое решение. Эрик Юань знает это не понаслышке после своей истории с WebEx, поэтому ZOOM будет предлагать лишь возможность активации новых опций, не заставляя пользователей пробовать новые возможности принудительно. Если вы подключите какую-то опцию осознанно, то будете понимать, как ее использовать, рассказывает Юань, Однако самый важный способ сделать пользователей счастливыми убедиться, что видео продолжает работать.

Подробнее..

Разбор почему мощный рост числа пользователей и выручки Zoom не говорит об успехе компании после пандемии

16.06.2020 16:14:27 | Автор: admin


Изображение: Unsplash

Сервис для проведения видеоконференций Zoom в последнее время регулярно оказывается в новостях и подборках вида компании, которым пошел на пользу карантин. Выручка компании выросла на 169% до $328,2 млн за квартал, новые пользователи прибавляются миллионами, стоимость акций компании растет.

Однако все это совсем не означает непременного продолжения бурного роста после завершения острой фазы пандемии. Издание Seeking Alpha опубликовало интересный разбор темы, а мы представляем вашему вниманию основные тезисы этого материала.

Онлайн-звонки скоро станут не единственным способом рабочего общения


Пандемия коронавируса и последовавшие за ней жесткие карантинные меры серьезно ударили по бизнесу многих компаний. Особенно пострадали те, кто был вынужден закрыться полностью или не мог принимать клиентов физически. Для некоторых, однако, всемирная изоляция стала положительным фактором. Среди таких компаний и Zoom, чьи акции в июне прошлого года стоили $62,74, а в июне 2020 перевалили за $223 за штуку.

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

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

Комбинация этих факторов вряд ли позволит Zoom сохранить взрывной рост.

Компания уже переоценена


Показатель P/E ratio (отношению рыночной стоимости акции к годовой прибыли, полученной на акцию) в случае Zoom уже больше 6000. Это означает крайне высокую оценку. То есть инвесторы готовы платить очень дорого за то, чтобы получить свой кусок пирога.

Есть компании и с более высоким P/E например, для Shopify этот показатель превышает 1300. Столь высокие оценки свидетельствуют о надувании пузыря, которое не может продолжаться вечно.

Конкуренты не дремлют


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

Google Hangouts аналогичный продукт, а Facebook выкатил функцию Messenger Rooms с возможностью видеозвонков. Иметь среди своих главных конкурентов Google и Facebook это не то, чего хотела бы любая компания. Этот фактор также нельзя сбрасывать со счетов.

Есть ли шансы на рост?


Текущая капитализация Zoom приближается к $60 млрд, и задел для роста остается. Во втором квартале 2020 года компания ожидает выручку на уровне $495-$500 млн. В первом квартале выручка была $328,2 и это уже был рост в 169%. Получается, аналитики компании рассчитывают на его продолжение и даже ускорение. По итогам фискального года, компания планирует выручку в в диапазоне $1,775 млрд и $1.8 млрд.

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

Купить акции американских компаний из России можно без необходимости открывать отдельный брокерский счет у зарубежных брокеров. С помощью рынка иностранных ценных бумаг Санкт-Петербургской биржи инвесторы могут покупать 500 ликвидных акций ведущих компаний всех секторов мировой экономики, в том числе все акции индекса S&P 500.

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

Читайте обзоры, аналитику рынков и инвестидеи в Telegram-канале ITI Capital
Подробнее..

Эффект пандемии за три месяца карантина сервис Zoom получил годовую прибыль

12.09.2020 22:20:08 | Автор: admin

В нашем блоге мы уже неоднократно писали о компаниях, которым глобальная пандемия коронавируса сыграла на руку. Один из главных бенефициаров этой ситуации несомненно компания Zoom Video Communications, которая разрабатывает сервис видеоконференций.

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

Zoom и пандемия: немного цифр

За период в три месяца выручка Zoom выросла на 355% в формате год к году. Всего она составила $633,5 млн, что на 35% выше ожиданий аналитиков. Продажи за весь 2019 год составили всего $622,7 млн.

Вынужденный переход на удаленный формат работы стимулировал интерес к видеоконференциям. В итоге количество корпоративных клиентов Zoom численностью более 10 человек за год увеличилось на 458%. До тысячи возросло количество клиентов, которые потратили на сервис $100 тысяч и более.

Согласно данным отчета, компания повысила свой прогноз по выручке на текущий финансовый год. Если ранее планировалось выручить $1,781,8 млрд, то теперь Zoom планирует совершить продаж на $2,372,39 млрд.

Перспективы

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

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

  • Компания уже переоценена показатель P/E ratio (отношению рыночной стоимости акции к годовой прибыли, полученной на акцию) в случае Zoom уже превышал 6000 еще в начале лета, что очень много.

  • Конкуренция фундаментально, Zoom не предлагает ничего технологически уникального. Google Hangouts аналогичный продукт, а Facebook выкатил функцию Messenger Rooms с возможностью видеозвонков. Конкуренция со стороны Facebook и Google фактор, который не стоит игнорировать.

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

В России акции американских компаний можно купить на Санкт-Петербургской бирже. Для этого не нужно открывать счет у иностранного брокера или использовать приложения вроде Robinhood, достаточно будет российского счета. Открыть его можно онлайн.

Читайте обзоры, аналитику рынков и инвестидеи в Telegram-канале ITI Capital

Полезные ссылки по теме инвестиций и биржевой торговли:

Подробнее..

Восстанавливаем данные с ZOOM H6 Handy Recorder подручными средствами

21.06.2020 14:07:34 | Автор: admin

Введение



Намедни попал в нашу лабораторию довольно любопытный заказ. Профессиональный диктофон ZOOM H6 Handy Recorder. Устройство и носитель в рабочем состоянии, проблема носитель, на котором находились данные (карта памяти SDHC на 32 Гбайт) был отформатирован в фотоаппарате. Вопрос о том, каким образом флешка из диктофона попала в фотоаппарат, оставим для истории нам ответ на него не интересен. Интересно восстановить записанные звуковые данные.

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

Не исключение и наш заказ. Попытки отсканировать карту памяти имеющимся ПО (Data Extractor, R-Studio, R.Explorer) структуру папок обнаружить не смогли. При черновом восстановлении аудиопотока (wav-файлы) получаются работающие файлы, но с перемешанным содержимым то есть продолжительность звуковой дорожки верная, файл проигрывается, но звук идет кусками то из одной дорожки, то из другой.

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

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

image
Тот же аудиофайл после исправления.

ТТХ устройства



Начинаем, как водится, со знакомства с устройством. Идем на сайт производителя, и вдумчиво читаем, что там про него пишут. Особенно нам интересны поддерживаемые форматы файлов и количество независимых микрофонов. Устройство поддерживает подключение до 4 микрофонов и, соответственно, одновременную запись с них. Максимально может записываться одновременно 8 дорожек (оно и понятно: стерео с 4 микрофонов). С форматами файлов все тоже понятно. Ассортимент не велик, форматы широко распространенные, никаких своих форматов нет. И это хорошо.

image
Форматы аудиофайлов, поддерживаемые рекордером

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

1. Какой использовался формат записи?



Ответ на этот вопрос находится в заголовке аудиофайла:

image

Тут все просто, в пояснениях не нуждается. Поехали дальше.

2. Как расположены данные на карте памяти?



Здесь и дальше используем WinHex.

Находим первый заголовок аудиопотока (берем пример заголовка из результатов предварительного RAW-восстановления). Выглядит он примерно так:

image

В каждом файле есть таймштамп:

image

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

Производим поиск от начала до первого таймштампа нужной нам аудиозаписи. Обозначаем начало сектора с таймштампом как начало блока. Теперь производим поиск последнего таймштампа нужной нам аудиозаписи (ищем, соответственно, с конца). Дальше нам нужно найти окончание данных, относящихся к нужной нам записи. Это просто: ищем следующий за последним таймштампом заголовок нового аудиопотока. На всякий случай нужно убедиться, что он не относится к тому, что мы ищем: смотрим в сектор, видим там другой таймштамп. Отлично. Последний байт перед найденным заголовком отмечаем как конец блока.

Теперь у нас имеется выделенная область, содержащая данные нужного нам аудиопотока:

image

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

Дальше работаем с полученным файлом.

Из формата файла: WAV, 44k, mono. То есть при записи с двух микрофонов мы имеем дело с двумя звуковыми дорожками.

Разбиваем файл на фрагменты по количеству таймштампов. Получаем четное количество фрагментов со следующими параметрами:

Фрагмент 1 32 кбайт;
Фрагмент 2 кратно 32 кбайт;
Заголовки фрагментов 1 и 2 идентичны.

Фрагмент 3 32 кбайт;
Фрагмент 4 кратно 32 кбайт;
Заголовки фрагментов 3 и 4 идентичны.

И так далее, все имеющиеся аудиопотоки (восстановить требовалось 10).

После несложных вычислений:

1) Аудиопоток фрагментирован;
2) Размер фрагментов составляет 32 кбайт;
3) Фрагменты чередуются в порядке: четные относятся к первой дорожке, нечетные ко второй.

image
Структура аудиопотока, записанного с двух микрофонов рекордером ZOOM H6 Handy recorder

3. Пора собирать аудиофайлы



Очевидно, что после того, как мы узнали, каким образом ZOOM H6 handy recorder пишет данные, собрать их в нормально проигрываемые аудиофайлы не составило никакого труда и заняло несколько минут машинного времени:

1) Разбиваем весь выделенный аудиопоток на куски по 32 кбайт; мы использовали File Splitter & Cutter;
2) Четные куски отправляем в одну папку, нечетные в другую; использовался Total Commander, выделение по маске (кнопка "+" на цифровой клавиатуре) *.*1; *.*3; *.*5; *.*7; *.*9;
3) Переименовываем файлы в обеих папках так, чтобы их расширения представляли собой номера по порядку; снова Total Commander, групповое переименование и выбираем в расширении счетчик, а в параметрах счетчика не менее 5 цифр (так как фрагментов будет много);
4) Объединяем файлы по порядку в каждой из папок; опять же, удобен Total Commander;
5) Переименовываем результат в *.wav и наслаждаемся результатом =).

А что насчет других форматов файлов и другого количества микрофонов?



Конечно, это был интересный вопрос. И мы не преминули воспользоваться возможностью это проверить. Использовали три микрофона (больше просто не было в наличии), формат записи MP3, битрейт самый низкий и самый высокий из возможных.

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

image

Собрать файлы можно также, без напряжения, используя общеизвестный софт; единственное, что распределять куски по 32 кбайт придется по трем папкам. Делаем это с использованием скрипта для Total Commander. Ну а дальше групповое переименование, сборка и результат.

Заключение



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

Зачем мы создали свою собственную систему видеосвязи с блэкджеком и фичами

20.01.2021 18:14:16 | Автор: admin

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

Отдельной болью для нас стали видеозвонки. И началось: Ой, а давайте в Скайпе, Дискорде, Телеграме, Зуме. А потом то девайсы программное обеспечение криво поддерживают, то технические сбои, то аккаунты вне доступа, то обновление софта и еще вагон проблем. Уходила куча времени, чтобы просто связаться и провести совещание.

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

Чем нас не устроил Zoom и другие приложения

Буквально за несколько месяцев после начала карантина количество пользователей Zoom увеличилось в 30 раз. В декабре 2019 года ежедневно сервисом пользовались 10 млн людей, а в апреле 2020 уже 300 млн.

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

А потом мы узнали о массивной утечке данных. В апреле 2020 хакеры взломали базы данных Zoom и в сеть утекли данные свыше 500 000 аккаунтов. Логины, пароли, email, URL личных чатов, коды администраторов для управления конференциями.

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

Насчет удобства использования сторонних сервисов, все также было не очень гладко. При обсуждении рабочих вопросов один на один или малыми группами чаще всего использовали Skype или Facebook Messenger. Для встреч по отделам и общих конференций Zoom. И самым проблемным оказалось отсутствие единой базы записей видеозвонков. Попытка пересмотреть обсуждение какого-нибудь вопроса превращалась в квест.

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

Да и в целом организационные моменты подталкивали на разработку своего софта для видеозвонков. С той лишь разницей, что мы видели его не как отдельное решение, а встроенный в нашу CRM видеочат для обсуждения рабочих задач и проектов, уже заведенных в систему. Тем более, что идеи уже были. Нам нужно было добиться стабильной работы на всех ОС и мобильных платформах.

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

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

Разработка как прогулка по полю с граблями

Впервые идея создать собственную платформу видеосвязи появилась у нас в 2015 году.

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

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

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

И хорошо, что мы тогда не стали искать выходы. Было бы печально вложить кучу денег во второстепенную функцию, а через 5 лет узнать, что все нужно делать заново, потому что Flash отключают.

***

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

Разработка первоначальной версии велась буквально на коленке. Сначала выбрали OpenVidu, который нас максимально устраивал и был доступен в плане лицензии. А затем буквально в течение нескольких недель собрали MVP и попытались интегрировать его в CRM Мегаплана.

Опенсоурсная версия получилась рабочей, но у нее было несколько серьезных проблем:

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

  2. Вылез целый ряд багов и проблем, решение которых мы в процессе первичной разработки не нашли. Среди них:

    a. Отсутствие записи трансляции. Наши специалисты так и не смогли придумать, как реализовать запись без слишком больших переделок или без использования сторонних утилит;

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

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

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

  4. Стоимость использования OpenVidu считается за одно серверное ядро в минуту. Для небольших решений она приемлема, но это крайне затрудняет масштабирование сервиса все упирается в деньги, много денег.

Количество минусов перекрывало все перспективы использования технологии. Поэтому мы решили от нее отказаться.

Janus Gateway: именно то, что нужно

Для передачи видеоданных мы используем стандартный протокол WebRTC. Стабильная платформа для видеосвязи, на которой можно реализовать все хотели и свистелки, которые нам нужны.

Но обычного p2p соединения нам недостаточно, ведь нужно было реализовать возможность записи трансляции на сервер. Поэтому решили использовать ретранслятор Janus Gateway.

В целом выбирали между тремя платформами: OpenVidu, которую оставили как контрольный образец, Jitsi и Janus. В результате чтения аналитики выяснили, что OpenVidu сильно проседает по качеству картинки трансляции (как будто и так вопросов было мало), а у Jitsi во время нагрузки качество плавает. Не то, чтобы мы планировали делать конференции из 200-300 пользователей, но стабильность работы видеосвязи для нас ключевой момент.

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

У Janus есть куча полезных фич, которые не реализованы или платные в OpenVidu. К примеру, контроль качества связи и автоматическое выставление битрейта в зависимости от него. Или же поддержка кодеков VP9 и режима симулькаста.

Janus имеет ничтожное влияние на процессор и память сервера. Всё упирается только в пропускную способность сети. Поэтому можно брать не самые мощные сервера, а много маленьких и пару больших для декодирования и склейки записанных видеозвонков. Мы не стали прибегать к сторонним решениям, вроде Janus cloud, где узким местом и точкой входа всё равно является janus-proxy, а сделали балансировку на уровне продукта.

Михаил Пирогов, руководитель отдела эксплуатации и администрирования Мегаплана

С Janus все также получилось не слишком гладко. Для реализации WebRTC используется библиотека React Native WebRTC. У нас нет разработчиков, которые хорошо знают React Native, поэтому чтобы устранить проблемы совместимости протокола с софтом сервера, ушло довольно много времени.

Были сложности и со сборкой. Компилятор Metro bundler хорошо работает в веб-версии, но не подтягивает дополнительные библиотеки в мобильной, из-за чего мобильная версия была нестабильной и падала.

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

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

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

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

Бета-версия и что дальше

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

Сохранять записи звонков. Эту фичу мы планировали, но она пока в стадии реализации и тестирования.

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

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

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

Правда, с вебинарной комнатой у нас немного затык. Нужно добавить инструмент работы со слайдами без демонстрации экрана и вайтборд для рисования маркерами.

Если у вас есть идеи, как это сделать в рамках Janus с минимальным количеством вытекающих проблем с радостью послушаем.

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

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

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

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru