Sochi.Camera : un sitio con transmisiones de más de 300 cámaras web instaladas en Sochi y sus alrededores. El sitio y el servicio completo son sin fines de lucro, creados y mantenidos por su cuenta por el proveedor local de Internet
"Business Connection" , durante casi 10 años.
Al crear un proyecto, probamos muchos modelos de cámaras de video externas (fijas, rotativas, móviles), modificándolas y adaptándolas a nuestras necesidades. Probamos varias soluciones de servidor, recordándolas con los desarrolladores. Ellos mismos escribieron aplicaciones móviles para Android e iOS. El proyecto resultó ser muy difícil, pero gradualmente desarrollamos cada elemento del sistema a un estado de alta eficiencia. El desarrollo continúa, pero ahora hay algo que contar.

Este es el primer artículo de revisión. En él, hablaremos sobre cómo se lanzó y desarrolló este proyecto, en qué consiste la solución técnica, cómo instalar una cámara web en una jaula de un león (spoiler - organizar con un león) y por qué las personas de toda Rusia miran a Sochi a través de nuestro sitio web. Si esta publicación parece interesante, podemos hablar sobre el proyecto con más detalle.
Desde el punto de vista técnico, el proyecto Sochi. La cámara se divide en tres partes:
1) tomar una imagen;
2) transferirlo al servidor de transmisión de video;
3) muestra la transmisión en el sitio.
Y todo esto está en el aire.
Vamos secuencialmente.
Cámaras
Las cámaras en la red son diferentes. Durante casi 10 años, probaron muchos modelos, algunos de los probados están en la red. Las cámaras son unificadas, estándar, el protocolo que utilizamos, RTSP, es compatible con casi todos los modelos estándar. El costo de las cámaras ha caído dramáticamente desde 2008, y la calidad de la imagen ha crecido dramáticamente. Entonces, una cámara estática simple cuesta alrededor de 40 mil rublos, hoy por el mismo dinero puede comprar un Full HD rotativo con la capacidad de "patrullar por puntos", ponerlo en la torre y le dará una imagen dinámica. Una cámara estática ordinaria hoy cuesta solo 5-7 mil (no se olvide de los descuentos).
La calidad de imagen de las cámaras modernas es casi de televisión, no es en absoluto la imagen de la cámara web a la que estamos acostumbrados: un pequeño cuadrado oscuro con una frecuencia de 1 fotograma por segundo.

Recientemente se decidió por un par de modelos:
Hikvisiony
SNRSon de bajo ruido, con un buen efecto de disparo nocturno debido a la matriz moderna.
Cada cámara ofrece dos transmisiones: Full HD (velocidad 4-6 Mbit / s) y SD (512 Kbit / s), el sitio tiene interruptores HD / SD. Esto se hace para que los usuarios con Internet lento puedan habilitar el modo SD ahorrador. También se usa en nuestras aplicaciones móviles, porque en la pantalla pequeña la diferencia entre Full HD y SD es casi imperceptible. Por supuesto, hay muchas cámaras en el mercado con una resolución superior a Full HD, por ejemplo, 4MP. Intentamos usarlos, pero la práctica ha demostrado la inadecuación de dichos permisos para las transmisiones en línea en Internet. En primer lugar, no todos los canales de Internet transmitirán esto sin pérdida, y no todos los dispositivos cliente pueden mostrar este flujo sin problemas. Como resultado, la transmisión puede ir con imbéciles y artefactos, después de todo, Internet no es una red local. Bueno, para colmo, resultó que la gran mayoría de los usuarios mira cámaras en modo ventana en lugar de pantalla completa, es decir, en la salida, la diferencia en tasas de bits y resoluciones no es visible para ellos. Como resultado, incluso transferimos cámaras de 4 megapíxeles al modo 2MP 1920x1080. En cuanto al software, en las cámaras mismas el firmware estándar de fábrica, como regla, no cambiamos nada allí.
Ahora hay alrededor de 318 cámaras en acceso general. La grabación se realiza en ~ 115-120 cámaras, que se relacionan con la situación del tráfico. El registro es necesario debido a la necesidad de analizar los accidentes, lo que sucede con bastante frecuencia. No grabamos cámaras que miran la naturaleza, los atardeceres, las montañas, etc. Los servidores de registros son un recurso costoso, en vano intentamos no gastarlo.
En cuanto a la privacidad, las cámaras se instalan de modo que las caras no sean legibles. Configuramos cámaras panorámicas para que se pueda ver la escena general, por ejemplo, una máquina amarilla golpea a una azul, un semáforo arde allí tal y tal, nada más. Sin embargo, la policía de tránsito y la policía a menudo, todas las semanas, e incluso, a veces, todos los días: se les pide que muestren los registros.


La instalación y mantenimiento de cámaras se realiza a través de contratistas. Al mismo tiempo, si hay problemas, siga las instrucciones con demasiada precisión. Es necesario hacer más que según las instrucciones, tener en cuenta, por ejemplo, las diferencias de presión y temperatura. En el proceso, hubo trucos, por ejemplo, conectar un cable Ethernet dentro del cuerpo de la cámara, y no en la caja de instalación o en el "barril" de conexión estándar. Aislar cámaras web es mucho más serio en comparación con los medios habituales, para que funcionen en silencio durante varios años sin que entre humedad.
No pagamos nada por la colocación de cámaras, este es un punto fundamental, ya que nuestro proyecto es sin fines de lucro: la imagen es de dominio público, no obtenemos nada de ella. Por lo tanto, si alguien no quiere publicar gratis, no publicamos allí. La ciudad tiene muchos lugares hermosos y muchos que quieren poner nuestras cámaras. Los propietarios de edificios están bastante dispuestos a dar permiso para la instalación, simplemente porque estamos frente a la cámara para anunciar estos establecimientos de forma gratuita. Nuestra asistencia es lo suficientemente alta para un sitio regional, más de 500,000 personas al mes, competimos con grandes portales de noticias locales. Entonces, el problema es llevar el canal a un lugar interesante en lugar de colocar la cámara.

En general, después de encontrar las soluciones óptimas para diferentes situaciones de instalación, las cámaras son aproximadamente el 10% de lo que consiste el proyecto Sochi. Lo principal no está en ellos, sino en los canales de transmisión de video y el software para transmitir en el sitio.
Canales de transmisión de video.
"Business Communication" es un proveedor de Internet, operador de telecomunicaciones, tenemos nuestra propia red de ciudades, una gran cantidad de nodos. Por lo tanto, no necesitamos alquilar ningún canal para la transmisión de video, ni la "última milla", ni los canales troncales, ni el acceso a Internet; ya tenemos todo.
Los consumidores de nuestros servicios son organizaciones e individuos. Si observa el perfil de su tráfico de Internet, entonces hay principalmente tráfico entrante, ya que un usuario estándar, por regla general, consume (descargas) tráfico y genera muy poco. En promedio, la relación entre el tráfico entrante y el tráfico saliente es de 10 a 1. Los canales que alquilamos / compramos para proporcionar servicios de Internet de los operadores principales son sincrónicos, las velocidades entrantes y salientes son las mismas. Por lo tanto, el retorno (canal de salida), por regla general, para proveedores de Internet como nosotros está medio vacío. Esta situación es típica para la mayoría de los operadores que trabajan con personas. En los centros de datos de proveedores de alojamiento y redes sociales, la situación es la opuesta, principalmente hay tráfico saliente, pero este no es nuestro caso.
Como resultado, resulta que recolectar video de las cámaras y transmitirlo a Internet, en términos del costo de transmisión del tráfico, no nos cuesta casi nada. Al mismo tiempo, se necesitan canales serios, porque una cámara estática proporciona alrededor de 4 Mbit / s, y una cámara pivotante, hasta 10 Mbit / s al momento de cambiar el ángulo.

Multiplique esto por el número de consumidores simultáneos, que es de 2,000 o más durante el día. Supongamos que una organización de terceros, no un operador de telecomunicaciones, quiere crear un proyecto como Sochi.Kamer. En este caso, todos los recursos necesarios deberán ser alquilados a los encargados de la señal, y a precios actuales esto costará un centavo. Pero si usted es un operador de telecomunicaciones, entonces la bandera está en sus manos.
Pero todavía hay dificultades con la organización de los canales de comunicación. Esto se debe al hecho de que donde los canales de comunicación están presentes, es decir, en el centro de la ciudad, básicamente no hay nada que ver. Y donde es interesante, no hay canales de comunicación cercanos y de alguna manera tienen que estar organizados, asignados equipos, consumibles, recursos humanos. Por ejemplo, ahora estamos organizando una conexión con la madriguera del mapache en el bosque.
Software de transmisión de video.
Comenzamos nuestro proyecto en 2008-2009, cuando no había muestras que pudieran simplemente tomarse y copiarse. Luego hubo muchos agregadores de cámaras web que los buscaron siempre que fue posible y los presentaron en un directorio como supuestamente propio. Pero no había soluciones complejas y listas para usar. Para recibir una cantidad tan grande de cámaras y distribuirlas a muchas personas en diferentes dispositivos, necesita un software confiable y estable. Así que comenzamos a hacer todo nosotros mismos, fueron varios años de desarrollo desde cero, comenzando desde el diseño, el diseño y terminando con la arquitectura del software. No lo copiaron de nadie, probaron cinco versiones del motor: desde LinuxDVR primitivo en mjpeg, hasta Red 5, ffmpeg + nginx, Wowza. Por cierto, este último fue abandonado no por razones técnicas, sino debido a cambios en las condiciones de licencia al cambiar a una nueva versión y la ausencia de una licencia de por vida en la nueva política del desarrollador estadounidense. Es decir, querían recibir dinero mensualmente, en función de la carga real. Y el hecho de que el proyecto no fuera con fines de lucro no molestó a nadie allí.
En el proceso de desarrollar y desarrollar el servicio, fuimos a la compañía Erlivideo, que está desarrollando el servidor de medios Flussonic. El equipo del proyecto era de Moscú y fue fácil encontrar un lenguaje común con él. En general, funcionó bien para resolver tareas no triviales. Esto no quiere decir que todo fue siempre suave, y que salieron jambas y rastrillos. PERO Cuando vea el deseo de un desarrollador de mejorar su producto, escuche y tenga en cuenta los comentarios del cliente y vea los resultados reales de dicha interacción después de la próxima actualización, vale mucho la pena.

Flussonic Media Server es una plataforma de servidor de transmisión de video. Con su ayuda, puede organizar la captura de cualquier transmisión de video, grabar video en el archivo y distribuirlo a los clientes utilizando varios protocolos y a cualquier dispositivo, tanto en tiempo real como bajo demanda. La reproducción está disponible en forma de una cinta sin fin, que se puede ver desde cualquier momento. La distribución puede realizarse a través de los protocolos RTMP, RTSP, HLS, HDS, HTTP MPEG-TS, DASH y WebRTC. Además, Flussonic puede transcodificar video cambiando el códec y los parámetros de video. La lista de códecs compatibles incluye H.264, H.265, MPEG-2, AAC, AC3, MP3, VP6, Speex y G711a / u. La plataforma puede ensamblar clústeres de servidores, capturar más de 1600 transmisiones y distribuir cientos de miles de conexiones simultáneas. Puede usar tanto las herramientas integradas como la interfaz web, así como la API HTTP para administrar y monitorear la actividad y la carga.
De las cámaras recopilamos transmisiones en RTSP estándar. Distribuido hasta hace poco, principalmente DASH para reproductores flash, UDP Multicast para la red interna y HLS para aplicaciones móviles. En los últimos años, se han anunciado periódicamente revoluciones HTML5 y el "funeral" de Adobe Flash, por lo que tuvimos que usar un diseño completo que "alimentara" el tipo de reproductor y transmisión que necesitábamos, dependiendo del navegador y el sistema operativo del cliente. A pesar de la exageración que rodea HTML5, muchos navegadores populares eran muy torpes para la etiqueta de video cuando se trataba de transmisión en vivo. En contraste, digamos, al reproducir un video pregrabado, que ha funcionado de manera estable desde el anuncio de HTML5.
Ahora podemos decir que la "turbulencia del navegador" ha terminado y cambiamos a la transmisión html5 nativa en los navegadores, abandonando por completo el complemento Flash. Por lo tanto, "a mano" ahora solo tenemos HLS y Multicast.
Para nuestros suscriptores que usan IPTV para multidifusión, realizamos la transmisión de estas cámaras a la red de televisión, es decir, ven todas las cámaras web como canales de televisión separados en sus televisores. Las cámaras web en IPTV están ordenadas temáticamente y complementan el conjunto estándar de canales de televisión que ofrecen nuestros clientes.
Nuestra otra característica es la funcionalidad del reproductor incorporado, como en YouTube o Vimeo. Desde nuestro servicio, enviamos videos a algunos sitios muy famosos: estos son los resorts y hoteles de Krasnaya Polyana. Al mismo tiempo, no aumentan la transmisión de su lado, solo necesitan el código de inserción. El reproductor integrado puede ser de marca o no tener ninguna marca de identificación, lo que permite a nuestros socios diseñar sus páginas de forma independiente con el estilo correcto. Ejemplos:
UnoDosTresOtra característica nuestra son las cámaras web móviles basadas en teléfonos celulares. Los llamamos "The Fluff", del método de transmisión de video push. Esta es una aplicación de Android personalizada distribuida como un archivo APK. En el mercado no es y no será. La idea es simple: el teléfono móvil tiene todo lo que necesita para la transmisión de video: una cámara, posicionamiento GPS, canal de datos. Creamos una aplicación que procesa el video y lo transfiere inmediatamente a Sochi. Opcionalmente se transmiten sonidos y coordenadas. Se proporciona la creación de "agujeros negros", una vez que "Fluff" detiene la transmisión. Los análogos de "Cannon" son bien conocidos, por ejemplo, esto es "Periscope" para "Instagram". En un momento, pensamos en distribuir esta aplicación entre los bloggers, pero abandonamos esta idea por varias razones. Ahora las "Armas" funcionan en varios autobuses de la ciudad, y más cerca de la temporada, las transmisiones de los barcos turísticos reanudarán su trabajo.


Sochi en sí, la cámara está hecha completamente en Javascript. Servidor - en Node.js, parte del navegador - Angular.js
Las aplicaciones móviles para Android, iOS y Windows Phone se escriben utilizando herramientas de desarrollador estándar. También vale la pena agregar que hay una aplicación para el escritorio de Windows, algunos clientes la prefieren al navegador, porque funciona más rápido, no hay publicidad y, en general, hay una funcionalidad minimalista sin un "kit" en forma de chats y otras cosas.
Es interesante que en el pasado no hayan aparecido soluciones integradas llave en mano. Los sistemas de video ya existentes están diseñados para propósitos completamente diferentes, principalmente para video vigilancia de seguridad. Hay un muro de video, grabación, visualización, rebobinado, etc., pero están afilados para videovigilancia de seguridad y no para el trabajo de varios miles de personas a la vez. Este es generalmente un enfoque diferente, una arquitectura diferente.
Sobre esto me gustaría terminar el artículo de revisión. Como dijimos anteriormente, muchos elementos del sistema pueden describirse con más detalle, valen la pena. Por ejemplo, sobre los trucos de instalar cámaras de video en la calle en condiciones de alta humedad y grandes diferencias de temperatura, la forma de organizar cámaras móviles en autobuses y barcos a motor, o en más detalle sobre las aplicaciones para teléfonos inteligentes y su lado del servidor, o sobre cómo elegir el software para la transmisión de video en el sitio. También podemos decirle algo sobre los costos de desarrollar y mantener dicho proyecto. Las inyecciones iniciales para el desarrollo en los primeros años, por ejemplo, ascendieron a aproximadamente 4,000,000 de rublos. Pero esta no es la cifra final.
Puede preguntarse en qué parte del proyecto está interesado. A la espera de sus preguntas.