Sochi.Camera - un site avec des flux de diffusion de plus de 300 caméras Web installées à Sotchi et ses environs. Le site et l'ensemble du service sont à but non lucratif, créés et maintenus à leurs frais par le fournisseur d'accès Internet local
"Business Connection" , pendant près de 10 ans. Dans cet article, nous expliquerons comment coder à partir du zéro absolu; sur la bataille avec YouTube (nous avons gagné); pourquoi le logiciel libre est mauvais et le service de streaming vidéo gratuit est bon. Peut-être à l'avenir, quand ils se tourneront vers nous avec la prochaine proposition - écrivez pour 100-200 mille roubles. le même service que Sotchi. Appareil photo, au lieu de mille mots, nous
donnerons à Rafael un lien vers ce post, afin que tout le monde puisse comprendre immédiatement.
Première version: design déchiré avec des morceaux de code de quelqu'un d'autreNotre projet a été fait à partir de zéro, il n'y avait pas de services, modèles de rôle ou modèles similaires. Tout ce que nous avons fait, nous avons dû le faire nous-mêmes: de la réécriture des modules de buggy des bibliothèques open source à l'invention de nouvelles façons de monter les caméras. Il n'y avait pas de solutions toutes faites, et lorsque nous avons commencé le projet, et maintenant elles ne sont pas non plus sous forme de modèles, de toute façon des compétences en programmation assez décentes sont requises.
Nous avons commencé nous-mêmes, avec nos administrateurs réseau à plein temps, qui savaient coder un peu. Dès les premières étapes du projet, nous souhaitons nous simplifier la vie. Mais la seule version "arrachée" du site était la toute première. Le design a été emprunté au programme de bureau pour visualiser des photos et des vidéos, dont personne ne se souvient maintenant. En fait, l'idée originale du site était un cinéma en ligne avec de nombreuses salles, avec un fond sombre et un grand écran avec une image de haute qualité. La conception de ce programme avec le nom oublié n'était que cela - un fond sombre, un tas d'aperçus, lorsque vous cliquez dessus, un grand écran s'ouvre.

Le code a été tiré du DVR Linux, le DVR Linux open source open source. Il fonctionnait comme un site, il était possible d'y accéder via un navigateur et de regarder les flux des caméras. Sur un morceau de code du DVR Linux, où jpeg motion a été utilisé, nous avons retiré le design du programme de visionneuse de photos et nous avons obtenu la première version de Sotchi. La caméra est maladroite, mais fonctionne.
Maintenant, la cinquième version de Sotchi fonctionne. La conception du site a beaucoup changé. L'idée principale d'une «salle de cinéma sombre» n'a cependant pas disparu, mais maintenant le design ressemble plus à la vidéo Yandex qu'à une photothèque et une vidéothèque de bureau. Cependant, ce n'est qu'un rappel lointain, pas une apparence déchirée. Un
concours en ligne a été annoncé pour la nouvelle version du site, la conception globale et les pictogrammes créés par les gagnants ont été utilisés sur la version actuelle du site.

Bien sûr, tous les utilisateurs du site n'ont pas favorablement adopté un nouveau look; pour les très mécontents, l'ancienne version a également été laissée, cependant, maintenant presque personne ne le visite.
En ce qui concerne le code, la deuxième version et les autres ont été réalisées de manière plus indépendante et se sont avérées moins artisanales. Maintenant, le service est fait en script Java, la partie serveur dans Node.js, la partie client dans Angular.js. Nous n'avons qu'une seule personne développant une application serveur, mais c'est un développeur professionnel et le haut niveau de nos services d'aujourd'hui est largement son mérite. Soit dit en passant, toute notre équipe est répertoriée dans la section
sur le projet à Sotchi.Turbulence lors du passage de Flash à HTML5Lorsque Steve Jobs a déclaré la guerre à Flash, notre site y a travaillé. Tous les fabricants de navigateurs ont commencé à abandonner progressivement HTML5, où la démonstration des flux vidéo n'était pas encore standardisée, et nous avons eu de gros problèmes. Sotchi L'appareil photo pourrait fonctionner pendant plusieurs années sur Flash, mais dans les nouvelles versions des navigateurs, tout fonctionnait de manière instable, nous avons perdu beaucoup d'utilisateurs, car au lieu de la vidéo des caméras, ils ont une fenêtre sombre.

Il était nécessaire de réécrire le site pour les nouvelles versions de navigateurs, et non seulement d'écrire un morceau de code pour chaque version séparément, mais également de déterminer à la volée un tas de navigateurs. Ici, notre développeur a écrit une telle construction qu'il a réussi. Bien sûr, cela était très stressant et compliquait le code. Ainsi, lorsque la situation de normalisation est réglée, nous avons à nouveau repensé le service, en éliminant ces béquilles supplémentaires.
L'une des forces de notre développeur réside dans le fait qu'il est constamment engagé dans la refactorisation - optimise le code, réduit la charge sur le serveur et les canaux de communication, surveille en permanence les capacités des nouvelles versions des langages de programmation.
Soit dit en passant, en même temps, lorsque nous luttions avec différents formats de navigateur, YouTube résolvait un problème similaire, avec deux petites différences: YouTube affichait des fichiers, pas des flux, ce qui rendait les programmeurs beaucoup plus faciles; et c'est YouTube, avec une énorme équipe de programmeurs, et pas une petite entreprise avec un, bien qu'un très bon et même brillant programmeur. En regardant maintenant ces affaires passées, nous pouvons dire que la turbulence n'a pas empiré.
En plus de l'approche correcte de notre programmeur principal quant à l'efficacité des logiciels, un autre point très important était le choix d'une nouvelle plateforme de streaming. Bien que nous ayons quitté Wowza non pas pour une «raison technique», mais en raison de leur politique tarifaire impudique, nous avons également gagné techniquement à long terme. Nous avons commencé à travailler avec Flussonic d'Erlivideo sur notre quatrième version, il y a environ 4 ans, alors qu'ils n'étaient pas encore entendus. Ensuite, ce produit est passé d'une source ouverte semi-artisanale à une publicité commerciale normale.
L'histoire de ce produit est très bien confirmée par le fait que les produits logiciels sont mieux développés non pas sur la voie des logiciels open source avec distribution gratuite (ou shareware), mais sur la voie commerciale.
Flussonic lui-même, au moment où nous allions y passer, existait déjà depuis environ trois ans. Au début, il avait du code open source, distribué gratuitement, et les programmeurs ne gagnaient de l'argent que sur son soutien. Son développement était instable, car les utilisateurs n'ont pas signalé de bugs, il n'était pas intéressant pour des développeurs tiers de participer au développement du projet, il y avait peu d'argent du support. Ensuite, le code a été décidé de fermer, de créer une société Erlivideo et de commencer à développer un produit commercial. Et quelque part dans l'année après la création de l'entreprise, nous avons commencé à travailler avec eux.
Nous étions un terrain d'essai pour eux, une base expérimentale, nous avons partagé des problèmes avec eux, offert des fonctionnalités. L'une des choses importantes que nous avons obtenues d'eux est un lecteur écrit spécialement pour leur moteur. Le point important est que ces deux parties - le noyau et le client - sont écrites par le même développeur, même si des problèmes surviennent, elles sont très rapidement corrigées.
Erlivideo a beaucoup grandi pendant cette période, est devenu bien connu dans l'industrie IPTV, et maintenant sur notre cinquième version, tout fonctionne de manière stable depuis plus d'un an sans aucun problème.
Argent: quoi dépenser et comment gagner de l'argentAprès de nombreuses années de travail, le site est devenu très célèbre, populaire, lui-même est devenu un modèle pour de telles ressources. Nous sommes périodiquement contactés pour acheter une solution complète. Nous avons déterminé ce que cette décision nous coûterait aujourd'hui, en tenant compte de notre expérience et des erreurs commises. En général, la partie serveur est d'environ 1 000 000 roubles, chaque application mobile est de 500 000 - 600 000 roubles. Ces quantités d'acheteurs potentiels font peur, ils s'attendent à un maximum de 100 000 à 200 000 roubles pour tout. Lorsque nous commençons à peindre les composants d'un logiciel, le coût de certaines solutions, les gens sont perplexes: par exemple, pourquoi dépenser de l'argent pour écrire des modules pour lesquels il existe des analogues gratuits dans les bibliothèques open source. Oui, juste pour les faire fonctionner mieux!

Voici un exemple, une tâche simple - prendre un flux de la caméra et le distribuer à un grand nombre d'abonnés, juste pour le multiplier sans changer. Pour une solution gratuite de la bibliothèque ffmpeg open source, lorsque le flux de la source est interrompu, l'ensemble du processus s'arrête et doit être redémarré manuellement. Imaginez qu'il y ait plus de trois cents caméras sur le réseau, un réseau assez grand, quelque chose se passe constamment - quelque part sur la caméra, l'alimentation sera coupée, quelque part entre le serveur et la caméra, la connexion se coupera et le service s'arrête. Il est plus facile de payer pour une solution payante qui peut surveiller l'état et redémarrer si nécessaire, que d'utiliser une solution gratuite, mais surveiller et redémarrer manuellement.
En général, selon nos estimations, le coût de développement d'un logiciel représentait environ 40% de tous les coûts du projet. Les 60% restants sont tous du matériel, y compris des caméras et des serveurs, ainsi que des licences pour les applications tierces utilisées.
Nous avons dépensé beaucoup d'argent pour ce projet qui est le nôtre, et en général, maintenant nous ne refuserions pas de gagner de l'argent. Mais ce n'est certainement pas une voie directe, «sur le front», de monétisation. Après avoir étudié la majorité des modèles de monétisation, il est devenu clair que ceux où le service gagne directement nécessitent des tracas supplémentaires et ne sont généralement pas payants. Il existe maintenant des solutions techniques qui peuvent facilement intégrer la publicité directement dans le flux vidéo. Techniquement, c'est une très bonne solution, la charge sur les serveurs est faible, il est impossible de contourner les bloqueurs de publicités, avec notre présence de 500 000 à 600 000 personnes, un très large public va regarder cette annonce vidéo tous les mois, mais construire un système de vente autour de cela et administrer les flux de trésorerie est très cher, et nous ne prévoyons pas une telle monétisation.
Nous utilisons donc des modèles indirects, principalement pour promouvoir notre cœur de métier d'opérateur. Par exemple, lorsque nous accédons au site, nous analysons l'adresse IP du visiteur et nous affichons des annonces de nos propres services au résident local, mais pas à notre client. Nous fournissons des flux à afficher sur des ressources Web tierces en échange de notre publicité avec eux. Sur les chaînes de télévision locales, ils sont prêts à utiliser la vidéo de nos caméras dans les blocs d'informations aux heures de grande écoute avec le nom de notre société. Nos chaînes hôtelières clients diffusent des flux vidéo de nos caméras sur leurs téléviseurs, les recevant comme chaînes de télévision, pour eux c'est un service gratuit supplémentaire, une puce pour les clients.
Le site lui-même, avec près de 5 millions de vues par mois, que nous utilisons comme plate-forme publicitaire, mais nous ne vendons pas de publicités - nous plaçons uniquement nos propres clients ou nos clients légaux, nous augmentons simplement la fidélité.
À l'avenir, nous prévoyons d'adhérer à la même ligne stratégique - les méthodes indirectes de monétisation, un service gratuit pour les visiteurs.
Nous attendons avec impatience vos questions, commentaires, commentaires et suggestions concernant le prochain article.