Pull to refresh
-2
0
Павел Хориков @Horik_off

Пользователь

Send message

Мониторинг задержки при проведении онлайн-видеотрансляций и телемостов

Reading time4 min
Views9.3K
Около недели назад здесь была интересная статья о методах организации видеотрансляций с минимально возможной задержкой, и в комментариях прозвучал ряд закономерных вопросов, на многие из которых я не увидел полноценного и содержательного ответа. В своём посте я хотел бы дополнить материал коллег, и поделиться с читателями своими мыслями по следующим вопросам:

Зачем вообще нужна минимальная задержка?
Как можно просто и наглядно замерять задержку при трансляции видеосигнала?
Какие элементы видеотракта влияют на увеличение задержки?



Наш топовый результат — FullHD сигнал пролетел до сервера и обратно менее чем за полсекунды.

Интересно? Тогда читайте дальше.
Читать дальше →
Total votes 23: ↑15 and ↓8+7
Comments14

Развертывание многопользовательской WebRTC трансляции с web-камеры через сервер за 3 минуты

Reading time8 min
Views29K


В данной статье мы расскажем как разработать многопользовательскую WebRTC видео трансляцию из браузера через свой сервер ретранслятор. Трансляция будет идти из браузера Google Chrome и обычной USB вебкамеры. Для трансляции видео будет создана отдельная HTML — страница Streamer, а воспроизведением будет заниматься HTML-страница Player.
Читать дальше →
Total votes 21: ↑14 and ↓7+7
Comments13

Создаем живую потоковую CDN для видеотрансляций WebRTC с низкой задержкой

Reading time11 min
Views7.6K

Где может потребоваться трансляция с гарантированной низкой задержкой? — на самом деле, много где. Например в онлайн видео-аукционах. Представьте себя ведущим такого мероприятия.
— «Двести тыыыысяч рааааз»
— «Продано!»

С высокой задержкой вы успеете сказать «двести тысяч три» и продать лот еще до того как видео дойдет до участников. Чтобы участники аукциона успели вовремя среагировать, задержка должна быть гарантированно низкой.

В общем, низкая задержка жизненно необходима в любом около игровом сценарии, будь-то онлайн видео аукцион, видеотрансляция скачек с лошадками или интеллектуальная онлайн игра «Что Где Почему» — и там и там требуется гарантированно низкая задержка и передача видео и аудио в реальном времени.
Читать дальше →
Total votes 8: ↑8 and ↓0+8
Comments2

Трансляция RTMP видеопотока из Live Encoder на WebRTC

Reading time7 min
Views34K

HTTP протоколы доставки видеоконтента, такие как HLS и DASH давно потеснили Flash в нише воспроизведения онлайн-видео контента в браузерах.

Тем не менее, изначально флэшовый протокол RTMP, остается одним из самых популярных способов доставки Live видео от источника видео до сервера ретранслятора. RTMP продолжают использовать такие сервисы, как Facebook Live, Youtube Live, и другие, где требуется вещать живое видео и проводить трансляции. Таким образом, несмотря на предсказания и констатации скорой кончины Flash, протокол RTMP все еще на коне и не уступает своих позиций в нише видеотрансляций.
Читать дальше →
Total votes 10: ↑8 and ↓2+6
Comments1

Задержка в онлайн-трансляциях с веб-камеры, бессердечная ты стерва

Reading time12 min
Views11K


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

Далее мы покажем что происходит с задержкой на примере реализации WebRTC и как при использовании WebRTC удается сохранить задержку на низком уровне, пригодном для комфортного общения.
Читать дальше →
Total votes 9: ↑9 and ↓0+9
Comments7

Трансляция онлайн-видео с минимальной задержкой

Reading time5 min
Views48K
Не так давно к нам обратился клиент, который занимается видео-трансляциями аукционов и лошадиных скачек в прямом эфире. Сами мероприятия проходят в Австралии, а вот ставки на них делаются игроками в Макао — игровой столице Юго-Восточной Азии. Разумеется, он столкнулся с задержкой сигнала — как без неё. Задержка — это время между взятием кадра и его появлением на экране конечного устройства. И если обычному зрителю задержка в 5 или даже 10 секунд не критична, то тем, кто ставит на тотализаторе, подобная разница может стоить огромных денег. Отсюда возникла задача — свести к минимуму время прохождения видео от источника к зрителю.

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

Мы подумали, что некоторые техники, которые мы применили, будут интересны не только нам.

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



Посмотрим, чем определяются издержки на каждом из этапов и как их можно сократить.
Читать дальше →
Total votes 15: ↑10 and ↓5+5
Comments32

Книга «Spring. Все паттерны проектирования»

Reading time8 min
Views19K
image Привет, Хаброжители! Мы издали книгу в которой дается обзор фреймворка Spring 5 и паттернов проектирования для него. Объясняется принцип внедрения зависимостей (dependency injection), играющий ключевую роль при создании слабосвязанного кода во фреймворке Spring. Затем рассматриваются классические паттерны «Банды четырех» при проектировании приложений на Spring. В следующих частях книги автор рассматривает паттерны аспектно-ориентированного программирования (AOP), шаблоны JDBC, позволяющие абстрагировать доступ к базе данных. В заключительных главах книги автор исследует работу с MVC, реактивные шаблоны проектирования и паттерны проектирования, применяемые при конкурентном и параллельном программировании в Spring.

Предлагаем ознакомиться с отрывком «Паттерн «Объект доступа к данным»»
Читать дальше →
Total votes 19: ↑18 and ↓1+17
Comments5

Для тех, кто познаёт ушами: подкасты для разработчиков

Reading time6 min
Views53K


Кто сказал, что разработчики могут учиться новому только через книги, видео и анализ чужого кода? Ведь у нас и другие каналы получения информации из окружающего мира. Конечно, речь не о том, чтобы попробовать знания на вкус, пощупать их или понюхать. А вот послушать — самое оно. Мы собрали для вас коллекцию действующих русскоязычных подкастов для разработчиков. Хороший способ дать глазам отдых или занять себя в пробках.
Читать дальше →
Total votes 83: ↑80 and ↓3+77
Comments57

Учимся всегда и везде! Подкасты для разработчиков на английском языке

Reading time10 min
Views24K


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

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

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

Наша подборка русскоязычных подкастов: https://habr.com/ru/company/mailru/blog/437428/

Читать дальше →
Total votes 45: ↑42 and ↓3+39
Comments7

Как стать Java разработчиком за 1,5 года

Reading time10 min
Views310K

Меня зовут Сергей, мне 40 лет и сейчас я работаю Java разработчиком в немецкой компании. Мы занимаемся разработкой программного обеспечения для пивоварен оценки финансовых и кредитных рисков. Это моя первая работа в качестве разработчика. До этого я работал в сфере IT-поддержки и системной интеграции. Первого февраля 2019 г. закончился мой шестимесячный испытательный срок, и у меня на руках бессрочный контракт. Я хочу поделиться своим опытом, как можно самостоятельно выучить Java так, чтобы получить работу.



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


Моя первая статья: «IT-эмиграция с семьей. И особенности поиска работы в маленьком городе Германии, когда ты уже там»

Читать дальше →
Total votes 129: ↑122 and ↓7+115
Comments212

Переезд в австрийский социализм

Reading time14 min
Views105K

На Хабре часто пишут про эмиграцию в разные страны, а про Австрию ещё не было. Пора восполнить пробел.



Хальштатт


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

Читать дальше →
Total votes 178: ↑163 and ↓15+148
Comments480

История переезда системного администратора в Германию. Часть вторая: переезд и первые шаги

Reading time15 min
Views59K
Всем привет.

Я наконец-то изыскал время и написал вторую часть своей истории об IT-эмиграции. Первую часть можно прочитать тут — История переезда системного администратора в Германию. Часть первая: поиск работы и виза. В этой части я опишу подробно, как мы с сестрой обустраивались на новом месте, какие ошибки при этом допускали и сколько нам эти ошибки стоили.

Итак, поехали.

У нас было два загранпаспорта, национальная виза, контракт на работу, договор на учебу и целое множество вещей всех сортов и расцветок, а также лысый кот, длинный список дел, норовящая развалиться машина и несколько тысяч евро. Не то чтобы всё это было так уж необходимо для переезда в Германию, но если уж начал эмигрировать из России, то становится трудно остановиться. Единственное, что вызывало у меня опасение — это жилье. Ничто в мире не бывает более беспомощным, безответственным и порочным, чем поиск квартиры во Франкфурте. Я знал, что рано или поздно мы столкнемся и с этим.

Читать дальше →
Total votes 82: ↑73 and ↓9+64
Comments273

История переезда системного администратора в Германию. Часть первая: поиск работы и виза

Reading time18 min
Views47K
Всем привет.

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

Это будет длинная история в трех частях, где я постараюсь максимально осветить все грабли, по которым пришлось пройти.
Читать дальше →
Total votes 53: ↑50 and ↓3+47
Comments133

Курс MIT «Безопасность компьютерных систем». Лекция 19: «Анонимные сети», часть 3 (лекция от создателя сети Tor)

Reading time15 min
Views4.9K

Массачусетский Технологический институт. Курс лекций #6.858. «Безопасность компьютерных систем». Николай Зельдович, Джеймс Микенс. 2014 год


Computer Systems Security — это курс о разработке и внедрении защищенных компьютерных систем. Лекции охватывают модели угроз, атаки, которые ставят под угрозу безопасность, и методы обеспечения безопасности на основе последних научных работ. Темы включают в себя безопасность операционной системы (ОС), возможности, управление потоками информации, языковую безопасность, сетевые протоколы, аппаратную защиту и безопасность в веб-приложениях.

Лекция 1: «Вступление: модели угроз» Часть 1 / Часть 2 / Часть 3
Лекция 2: «Контроль хакерских атак» Часть 1 / Часть 2 / Часть 3
Лекция 3: «Переполнение буфера: эксплойты и защита» Часть 1 / Часть 2 / Часть 3
Лекция 4: «Разделение привилегий» Часть 1 / Часть 2 / Часть 3
Лекция 5: «Откуда берутся ошибки систем безопасности» Часть 1 / Часть 2
Лекция 6: «Возможности» Часть 1 / Часть 2 / Часть 3
Лекция 7: «Песочница Native Client» Часть 1 / Часть 2 / Часть 3
Лекция 8: «Модель сетевой безопасности» Часть 1 / Часть 2 / Часть 3
Лекция 9: «Безопасность Web-приложений» Часть 1 / Часть 2 / Часть 3
Лекция 10: «Символьное выполнение» Часть 1 / Часть 2 / Часть 3
Лекция 11: «Язык программирования Ur/Web» Часть 1 / Часть 2 / Часть 3
Лекция 12: «Сетевая безопасность» Часть 1 / Часть 2 / Часть 3
Лекция 13: «Сетевые протоколы» Часть 1 / Часть 2 / Часть 3
Лекция 14: «SSL и HTTPS» Часть 1 / Часть 2 / Часть 3
Лекция 15: «Медицинское программное обеспечение» Часть 1 / Часть 2 / Часть 3
Лекция 16: «Атаки через побочный канал» Часть 1 / Часть 2 / Часть 3
Лекция 17: «Аутентификация пользователя» Часть 1 / Часть 2 / Часть 3
Лекция 18: «Частный просмотр интернета» Часть 1 / Часть 2 / Часть 3
Лекция 19: «Анонимные сети» Часть 1 / Часть 2 / Часть 3
Total votes 16: ↑16 and ↓0+16
Comments0

Yii2 RESTful API-интерфейс для AngularJS

Reading time8 min
Views32K

Здравствуйте, дорогие читатели! Судя по вашим комментариям к предыдущим статьям, многим из вас очень интересно, как именно мы будем использовать AngularJS в связке с нашим приложение на Yii2 фреймворке. В этой статье я подниму занавес и опишу процесс подключения фреймворка AngularJS и способы его применения.
Читать дальше →
Total votes 20: ↑17 and ↓3+14
Comments3

Безопасность авиаперелётов

Reading time11 min
Views96K
Это сделала птица:



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

Основные вещи:

— Аварийная посадка в неровную кустарниковую степь часто безопаснее посадки на воду.
— Парашюты как системное явление снизят безопасность пассажиров.
— 30 лет — нормальный срок жизни самолёта. 20 лет — самолёт ещё молод.
— При отказе двигателя на взлёте есть ситуации, когда надо продолжать взлёт.
— Отказ всех двигателей не означает катастрофу при определённой скорости.
— В меру жёсткий удар при посадке безопаснее, чем «kiss landing»,
— Для чего каждый полёт стюардессы проводят инструктаж.

Каждый из этих пунктов может быть потенциальной причиной споров. Ниже — моё субъективное мнение как действующего пилота российской авиации (семь лет).
Total votes 206: ↑203 and ↓3+200
Comments712

В США набирает обороты секс-фишинг

Reading time2 min
Views58K
Как сообщает в своем блоге известный журналист, специализирующийся на информационной безопасности Брайан Кребс, в США в последние две недели получил распространение новый вид вымогательства. В целом подход злоумышленников в чем-то схож с подходом, использовавшимся с шифрователями, но важное отличие заключается в том, что вымогательство является блефом от начала до конца.
Читать дальше →
Total votes 47: ↑44 and ↓3+41
Comments207

Учебник AngularJS: Всеобъемлющее руководство, часть 1

Reading time7 min
Views272K

Содержание


1 Введение в AngularJS
2 Engineering concepts in JavaScript frameworks
3 Modules
4 Understanding $scope
5 Controllers
6 Services and Factories
7 Templating with the Angular core
8 Directives (Core)
9 Directives (Custom)
10 Filters (Core)
11 Filters (Custom)
12 Dynamic routing with $routeProvider
13 Form Validation
14 Server communication with $http and $resource

1 Введение в AngularJS


Angular – MVW-фреймворк для разработки качественных клиентских веб-приложений на JavaScript. Он создан и поддерживается в Google и предлагает взглянуть на будущее веба, на то, какие новые возможности и стандарты он готовит для нас.

MVW означает Model-View-Whatever (модель – вид – что угодно), то есть гибкость в выборе шаблонов проектирования при разработке приложений. Мы можем выбрать модели MVC (Model-View-Controller) или MVVM (Model-View-ViewModel).

Этот обучающий материал задумывался как отправная точка для изучения AngularJS, его концепций и API, чтобы помочь вам создавать великолепные веб-приложения современным способом.
Читать дальше →
Total votes 44: ↑38 and ↓6+32
Comments29

Учебник AngularJS: Всеобъемлющее руководство, часть 2

Reading time22 min
Views192K
Часть 1

4.1 $rootScope


$rootScope не сильно отличается от $scope, просто это объект $scope самого верхнего уровня, от которого происходят все остальные области видимости. Когда Angular начинает создание вашего приложение, он создаёт объект $rootScope, и все привязки и логика приложения создают объекты $scope, являющиеся наследниками $rootScope.

Обычно мы не используем $rootScope, но с его помощью можно обеспечить передачу данных между разными областями видимости.
Читать дальше →
Total votes 33: ↑29 and ↓4+25
Comments23

Как SSH появился на 22 порту

Reading time5 min
Views87K
SSH по умолчанию работает на порту 22. Это не совпадение. Вот история, как ему достался этот порт.

Когда я (Тату Илонен) впервые опубликовал эту историю в апреле 2017 года, она стала вирусной: её прочитали около 120 000 читателей за три дня.

История получения порта 22 для SSH


Я написал первую версию SSH (Secure Shell) весной 1995 года. В то время широко использовались Telnet и FTP.

Но я всё равно разработал SSH для замены и telnet (порт 23) и ftp (порт 21). Порт 22 был свободен и удобно располагался между портами для telnet и ftp. Я подумал, что такой номер порта может стать одной из тех маленьких деталей, которые придадут некоторую ауру доверия SSH. Но как его получить? Я никогда не распределял порты, но я знал тех, кто этим занимается.

В то время процесс выделения портов был довольно простым. Интернет был меньше, и мы находились на самых ранних стадиях интернет-бума. Номера портов выделяла организация IANA (Internet Assigned Numbers Authority). В то время это означало уважаемых первопроходцев интернета Джона Постела и Джойс К. Рейнольдс. Среди всего прочего, Джон являлся редактором таких незначительных протоколов, как IP (RFC 791), ICMP (RFC 792) и TCP (RFC 793). Возможно, кто-то из вас слышал о них.
Читать дальше →
Total votes 76: ↑69 and ↓7+62
Comments119

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity